Na semana passada, anunciamos que o WebDriver BiDi estava pronto para produção no BrowserStack. Nesta semana, o verão do WebDriver BiDi continua com o Firefox 129 e o Puppeteer 23, que recebem suporte para produção no WebDriver BiDi.
A Mozilla tem sido um forte colaborador do WebDriver BiDi há mais de quatro anos, inicialmente ajudando a moldar o novo padrão e, em seguida, implementando-o gradualmente no Firefox, documentando perfeitamente o progresso dele com a Newsletter do Firefox WebDriver (em inglês).
Com o WebDriver BiDi agora pronto para produção no Firefox, o Puppeteer a partir da versão 23 oferece suporte estável ao Firefox por meio do WebDriver BiDi. Isso permite automatizar o Firefox com a mesma API concisa do Chrome. O suporte do Puppeteer para o Chrome DevTools Protocol (CDP) 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 passou a oferecer suporte experimental ao Firefox.
Para que esse trabalho funcionasse, o Mozilla implementou e manteve um subconjunto do 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 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 (link em inglês) no seu caso de uso.