Semana passada, junto com a BrowserStack, anunciamos o lançamento do WebDriver BiDi pronta para produção no BrowserStack. Esta semana, o verão do WebDriver BiDi continua com O Firefox 129 e o Puppeteer 23 recebem suporte de produção para o WebDriver BiDi.
A Mozilla tem sido uma forte colaboradora no WebDriver BiDi há mais de quatro anos inicialmente ajudando a moldar o novo padrão e depois implementando gradualmente no Firefox, documentando perfeitamente o progresso com o Firefox WebDriver Newsletter.
Com o WebDriver BiDi agora pronto para produção no Firefox, o Puppeteer a partir da versão 23, oferece suporte estável para o Firefox por meio do WebDriver BiDi. Isso permite automatizar Firefox com a mesma API concisa do Chrome. Suporte do Puppeteer para o Chrome O protocolo do DevTools (CDP) permanece inalterado.
Firefox, CDP e Puppeteer
O Puppeteer é uma ferramenta confiável que permite aos desenvolvedores automatizar os navegadores baseados no Chromium usando o Chrome do DevTools, também conhecido como CDP. Em 2019, o Puppeteer recebeu suporte experimental para o Firefox.
Para fazer isso funcionar, o Mozilla implementou e manteve um subconjunto do CDP em Firefox Essa solução permite que o Firefox seja automatizado com a API Puppeteer, mas tinha ressalvas:
- Como o nome sugere, o CDP é usado pelo DevTools do Chrome e precisa mudar com os requisitos do DevTools.
- O CDP não é padronizado em uma especificação pública compartilhada e mantê-lo no Firefox exigia comunicação constante e esforço de
- Como o Firefox implementou apenas um subconjunto do CDP, o Puppeteer nunca conseguiu garantir que a API completa funcione com o Firefox, gerando confusão para os usuários.
Embora estejamos satisfeitos por termos mantido esse suporte junto ao Mozilla para o nos últimos anos, sempre soubemos que não era uma solução permanente. Com base nisso parceria e incluindo outros grandes fornecedores de navegadores e ferramentas, juntos, criamos o WebDriver BiDi.
O trabalho em equipe faz o trabalho dos sonhos
A equipe do Firefox tem trabalhado ansiosamente para implementar o WebDriver BiDi no Firefox. Ao mesmo tempo, a equipe do Puppeteer expandiu o suporte ao WebDriver BiDi na API Puppeteer. O objetivo em que ambas as equipes trabalharam foi tornar todas as APIs necessárias para casos de uso de automação de produção usando o WebDriver BiDi no Puppeteer, garantindo o suporte tanto para o Chrome quanto Firefox
![Painel da equipe compartilhado mostrando o número de testes aprovados nos últimos meses.](https://developer.chrome.com/static/blog/firefox-support-in-puppeteer-with-webdriver-bidi/image/passing-tests-over-the-last-months.jpg?hl=pt-br)
Isso permite que os usuários do Puppeteer selecionem o Firefox ou o Chrome para as automações,
especificando a chave de configuração browser
ao iniciar um Puppeteer
instância.
import puppeteer from 'puppeteer';
const firefoxBrowser = await puppeteer.launch({
browser: 'firefox', // WebDriver BiDi is used by default in Firefox.
});
const page = await firefoxBrowser.newPage();
...
await firefoxBrowser.close();
const chromeBrowser = await puppeteer.launch({
browser: 'chrome',
protocol: 'webDriverBiDi', // CDP would be used by default for Chrome.
});
const page = await chromeBrowser.newPage();
...
await chromeBrowser.close();
Para saber mais sobre as novidades do Firefox 129 e o trabalho do Mozilla no WebDriver Consulte a postagem do blog Mozilla Hacks (link em inglês) relacionada ao BiDi.
Suporte ao CDP no futuro
O snippet de código anterior mostra que, para automatizar o Chrome usando
WebDriver BiDi com o Puppeteer, você precisa definir explicitamente protocol
como
webDriverBiDi
. Isso ocorre porque, para o Chrome, o Puppeteer continuará definindo
CDP: não para quebrar as automações existentes, mas também para manter o suporte às automações
especializado nos recursos do Chrome.
O suporte ao CDP no Firefox foi descontinuado no Firefox 129 e programada para ser removida no final de 2024. Se você já tem automações compatíveis com CDP no Firefox, recomendamos que recomendamos migrar para o WebDriver BiDi. Se isso não for possível, entre em contato dev-webdriver@mozilla.org (link em inglês) com seu caso de uso.