WebDriver BiDi pronto para produção no Firefox, Google Chrome e Puppeteer

Matthias Rohmer
Matthias Rohmer

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.
Painel da equipe compartilhado mostrando o número de testes aprovados nos últimos meses.

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.