Na semana passada, anunciamos que o WebDriver BiDi estava pronto para produção no BrowserStack. Esta semana, o verão do WebDriver BiDi continua com o Firefox 129 e o Puppeteer 23, cada um com suporte pronto para produção do WebDriver BiDi.
A Mozilla é uma colaboradora ativa do WebDriver BiDi há mais de quatro anos, ajudando inicialmente a moldar o novo padrão e, em seguida, implementá-lo gradualmente no Firefox, documentando cuidadosamente o progresso com a newsletter do WebDriver do Firefox.
Com o WebDriver BiDi pronto para produção no Firefox, o Puppeteer, a partir da versão 23, oferece suporte estável para o Firefox pelo WebDriver BiDi. Isso permite automatizar o Firefox com a mesma API concisa do Chrome. O suporte do Puppeteer para o protocolo DevTools do Chrome (CDP, na sigla em inglês) permanece inalterado.
Firefox, CDP e Puppeteer
O Puppeteer é uma ferramenta confiável para que os desenvolvedores automatizem navegadores baseados no Chromium usando o Chrome DevTools Protocol, também conhecido como CDP. Em 2019, o Puppeteer recebeu suporte experimental para o Firefox.
Para que isso funcione, a Mozilla implementou e manteve um subconjunto de CDP no Firefox. Essa solução permitiu que o Firefox fosse automatizado com a API Puppeteer, mas tinha ressalvas:
- Como o nome sugere, o CDP é usado pelo Chrome DevTools e precisa mudar de acordo com os requisitos do DevTools.
- O CDP não é padronizado em uma especificação pública compartilhada, e a manutenção dele no Firefox exigiu comunicação e esforço constantes.
- Como o Firefox implementou apenas um subconjunto do CDP, o Puppeteer nunca poderia garantir que a API completa funcionasse com o Firefox, o que gera confusão para os usuários.
Embora tenhamos mantido esse suporte com a Mozilla nos últimos anos, sabíamos que não era uma solução permanente. Com base nessa parceria e incluindo outros fornecedores importantes de navegadores e ferramentas, criamos o WebDriver BiDi.
.O trabalho em equipe transforma os sonhos em realidade
A equipe do Firefox tem trabalhado arduamente para implementar o WebDriver BiDi no Firefox. Ao mesmo tempo, a equipe do Puppeteer expandiu o suporte ao BiDi do WebDriver na API do Puppeteer. O objetivo das duas equipes era tornar todas as APIs necessárias para casos de uso de automação de produção disponíveis usando o WebDriver BiDi no Puppeteer, garantindo suporte no Chrome e no Firefox.

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 uma instância
do Puppeteer.
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 da Mozilla no WebDriver BiDi, consulte a postagem do blog Mozilla Hacks relacionada.
Suporte a CDP no futuro
O snippet de código anterior mostra que, para automatizar o Chrome usando o
WebDriver BiDi com o Puppeteer, é necessário definir explicitamente protocol
como
webDriverBiDi
. Isso ocorre porque, no Chrome, o Puppeteer continua usando o CDP por padrão para não interromper as automações existentes, mas também para continuar oferecendo suporte a automações especializadas nos recursos do Chrome.
O suporte ao CDP no Firefox foi descontinuado a partir do Firefox 129 e está programado para ser removido no final de 2024. Se você tiver automações que dependem do suporte ao CDP no Firefox, recomendamos migrar para o WebDriver BiDi. Se isso não for possível, entre em contato com dev-webdriver@mozilla.org com seu caso de uso.