O Puppeteer agora fala com o Firefox! 🎉 Mas espere, não ainda não foi? 🤔 Vamos conhecer o WebDriver BiDi, o novo protocolo do Puppeteer, e descobrir o que esse desenvolvimento incrível significa para o fluxo de trabalho de automação do Firefox.
O WebDriver BiDi é um novo protocolo de automação padronizado entre navegadores que combina o melhor do WebDriver Classic e do Chrome DevTools Protocol (CDP). Ela promete comunicação bidirecional, permitindo uma automação mais eficiente e capaz, além de controle granular. Acompanhe o progresso no roteiro oficial (link em inglês).
Desde nossa atualização de status anterior, continuamos trabalhando em estreita colaboração com o grupo de trabalho de ferramentas e testes de navegador W3C. Agora, o Puppeteer implementa recursos como geração de registros, eventos de rede e envios de formulário, graças aos avanços do WebDriver BiDi.
Mostrar o código
O script Puppeteer a seguir mostra o WebDriver BiDi em ação e funciona perfeitamente no Chrome e no Firefox:
- Inicie o navegador escolhido com a configuração do protocolo.
- Monitore as mensagens do console em busca de erros.
- Acesse uma página da Web, defina as dimensões da janela de visualização e clique em um botão.
- Verifique o conteúdo do texto e declare a igualdade.
import * as assert from 'node:assert';
import puppeteer from 'puppeteer';
// Arrange: Launch browser with WebDriver BiDi
const browser = await puppeteer.launch({
protocol: 'webDriverBiDi',
product: 'firefox', // or 'chrome'
});
const context = await browser.createIncognitoBrowserContext();
const page = await context.newPage();
// Arrange: Monitor console messages
page.on('console', message => {
if (message.type() != 'error') return;
console.log('RECEIVED: %s', message.text());
});
// Action
await page.setViewport({width: 600, height: 1041});
await page.goto('https://coffee-cart.app/?breakable=1');
const coffee = await page.waitForSelector('[data-test="Espresso"]');
await coffee.click();
// Assert
const checkout = await page.$('[data-test="checkout"]');
const total = await checkout.evaluate(el => el.textContent);
assert.equal(total, 'Total: $10.00');
browser.close();
Progresso do WebDriver BiDi no Puppeteer
Para avaliar os recursos do WebDriver BiDi no Puppeteer, usamos o abrangente pacote de testes do Puppeteer (em inglês). Embora a implementação do Puppeteer e do WebDriver BiDi ainda esteja em desenvolvimento e ainda não tenha todos os recursos do Puppeteer com o Chrome e o CDP, queremos dar a você uma visão clara da situação.
Firefox:
- O WebDriver BiDi atingiu um nível de qualidade adequado para tarefas práticas de automação. O Mozilla portou os testes do Puppeteer para o pdf.js do Firefox e do CDP para o Firefox e o WebDriver BiDi.
- Mais de 55% dos testes são aprovados com o WebDriver BiDi, demonstrando sua funcionalidade crescente.
- Em especial, mais de 82 novos testes usam o WebDriver BiDi de forma eficiente, abrindo caminho para mais melhorias.
Chrome:
- Atualmente, o Chrome está atingindo uma taxa de aprovação de 68% com o WebDriver BiDi, demonstrando uma funcionalidade confiável. Embora haja espaço para mais otimização em comparação com a abordagem baseada em CDP, esses avanços futuros e empolgantes promissores.
Alguns recursos, como acesso a cookies, interceptação de solicitações de rede, recursos específicos de emulação e permissões, ainda estão em padronização ativa. Elas serão integradas ao Puppeteer assim que estiverem prontas. Enquanto isso, confira a lista completa de recursos do Puppeteer com suporte do WebDriver BiDi.
O Puppeteer já não era compatível com o Firefox?
A Puppeteer oferecia suporte experimental para o Firefox usando uma implementação de CDP limitada e para diferentes navegadores, mas apresentava limitações e não era uma solução sustentável.
A nova implementação experimental do Firefox e do WebDriver BiDi resolve esses problemas.
Sabemos que você pode ter outras dúvidas, como:
- O suporte ao CDP do Firefox será desativado?
- Todos os recursos do Puppeteer são compatíveis?
Para conferir respostas detalhadas e mais informações, confira o aviso dedicado do Firefox.
Tempos incríveis pela frente
Os testes em vários navegadores têm sido uma das principais necessidades dos desenvolvedores, por isso estamos felizes em liderar a integração do WebDriver BiDi com o Puppeteer, que marca um ponto de virada para uma experiência de automação entre navegadores mais simples e eficiente. Incentivamos você a explorar o WebDriver BiDi com o Puppeteer.
No futuro, o WebDriver BiDi se tornará o protocolo padrão da Puppeteer, abrindo caminho para uma experiência de automação consistente e capacitada.
Se tiver problemas ao executar testes do Puppeteer com o WebDriver BiDi, abra o Issue Tracker do Puppeteer (em inglês).