WebDriver BiDi - O futuro da automação entre navegadores

No artigo anterior, analisamos os protocolos de automação existentes, como o WebDriver "Classic" e o Chrome DevTools Protocol (CDP), com as respectivas vantagens e restrições.

Chegou o WebDriver BiDi, o futuro da automação do navegador. É um novo protocolo padrão de automação de navegador que está em desenvolvimento e busca combinar o melhor do WebDriver " Classic" e do CDP. O WebDriver BiDi promete comunicação bidirecional, tornando-a rápida por padrão, e vem com controle de baixo nível.

WebDriver BiDi
WebDriver "clássico" Protocolo do Chrome DevTools (CDP)
Melhor suporte entre navegadores Mensagens rápidas e bidirecionais
Padrão W3C Fornece controle de baixo nível
Criado para testes

A visão por trás do WebDriver BiDi é permitir que você escreva testes usando qualquer uma das suas ferramentas favoritas e automatize-os em qualquer navegador ou driver, oferecendo flexibilidade total.

A visão por trás do WebDriver BiDi.
A visão por trás do WebDriver BiDi

Padronização

O Grupo de trabalho WebDriver BiDi é composto por um grupo diversificado de fornecedores de navegadores, projetos de automação de navegador de código aberto e empresas que oferecem soluções de automação de navegadores. Essa colaboração garante um futuro promissor para a automação de navegadores.

Grupo de trabalho do WebDriver BiDi
Grupo de trabalho do WebDriver BiDi

A maior parte do trabalho é feita neste repositório do GitHub. Há reuniões mensais com todos os principais fornecedores de navegador relatando o progresso real e discutindo detalhes argumentáveis e desconhecidos. O grupo de trabalho entre empresas garante que as decisões estejam alinhadas com todas as partes interessadas.

Estabelecer e implementar um novo protocolo não é uma tarefa simples. Isso requer esforços concentrados de vários fornecedores colaborando e trabalhando juntos. O processo envolve:

  • Especificação: um processo de solicitação de comentários (RFC, na sigla em inglês) para coletar feedback sobre a proposta.
  • Verificação: uma série de testes que podem ser executados em várias plataformas, atuando como a fonte da verdade para todas as implementações.
  • Implementação: os navegadores implementam os protocolos de acordo com as especificações e são aprovados nos testes de verificação.

Desafios

Nesta seção, vamos nos aprofundar nos desafios da implementação do WebDriver BiDi, que busca encontrar um equilíbrio entre compatibilidade, usabilidade e implementabilidade.

Além de um clone CDP: adoção da compatibilidade entre navegadores

O CDP, com os elementos específicos do Chrome e do DevTools, não pode ser replicado diretamente na especificação BiDi do WebDriver. Implementar o CDP no estado em que se encontra seria inviável para outros navegadores, tornando inútil uma especificação que simplesmente documenta como fazer isso.

Como garantir baixa latência

O WebDriver BiDi precisa ser projetado para lidar com alta latência sem sacrificar o desempenho. No CDP, a latência é baixa porque o cliente e o servidor quase sempre são executados na mesma máquina física, mas esse não é o caso no WebDriver BiDi. Portanto, o WebDriver BiDi precisa minimizar o número de idas e voltas necessárias entre o cliente e o servidor.

Priorizar a ergonomia no BiDi

Não se espera que os desenvolvedores criem clientes WebDriver BiDi do zero, mas é crucial evitar complicar o protocolo em excesso. Um BiDi excessivamente complexo não seria apenas um desafio de implementar, mas também difícil de trabalhar, dificultando a adoção e o uso.

Garantir a implementação do BiDi

O WebDriver BiDi precisa ser implementado de forma realista, considerando as limitações de vários navegadores. Por exemplo, reter todos os objetos JavaScript já expostos aos clientes pelo BiDi pode resultar em vazamentos de memória, mas não manter nenhum objeto vai prejudicar a depuração e a interação com o JavaScript da página. É essencial encontrar um equilíbrio que possibilite uma automação eficaz do navegador sem comprometer a performance.

Como superar desafios

Nesta seção, discutiremos as estratégias empregadas para enfrentar os desafios da implementação do WebDriver BiDi.

Prototipagem rápida

Resolver o desafio de implementação é crucial para o sucesso da BiDi. Para acelerar o progresso na especificação e nos testes, adotamos uma abordagem de prototipagem rápida usando NodeJS. Isso não só nos permite testar diferentes soluções, mas também facilita o desenvolvimento de testes da plataforma Web.

Projetar pensando no desempenho

Essa decisão de design é impulsionada pelo desempenho, já que, em alguns casos, a latência é alta no WebDriver BiDi. Por exemplo, ao recuperar um valor e um ID de objeto do navegador, o WebDriver BiDi exige apenas uma ida e volta, enquanto o CDP exige duas. Isso ocorre porque o WebDriver BiDi pode retornar o ID e o valor em uma única resposta (o resultado não pode ser serializável em JSON), enquanto o CDP precisa retorná-los separadamente.

Ênfase em testes de plataforma da Web (WPT)

Os Testes de plataforma da Web (link em inglês) têm um papel significativo no trabalho do BiDi. No momento, abrangendo o WebDriver “Clássico” e o WebDriver BiDi, o WPT serve como uma referência confiável para todas as implementações. Esses testes foram projetados para serem executados e passados em várias implementações, garantindo a execução consistente do protocolo entre navegadores, o que é vital para o sucesso do WebDriver BiDi. Confira o resultado mais recente da WPT no painel.

Qual é o plano e o progresso atual?

Consulte o roteiro do WebDriver BiDi (link em inglês) para entender a direção do projeto. O roteiro é um trabalho em andamento e em constante evolução.

Consulte os testes de plataforma da Web mais recentes para saber o status de implementação nos navegadores, porque eles funcionam como a fonte da verdade.

Acompanhe os marcos do projeto para monitorar o progresso.

Descubra as conquistas de 2023 e fique por dentro das novidades!

Compatibilidade com o WebDriver BiDi: como você pode ajudar

Está animado com o futuro da automação de navegadores com o WebDriver BiDi? Veja como você pode mostrar seu apoio:

  • Seja um testador e usuário iniciais, ajudando a moldar o futuro do WebDriver BiDi.
  • Avise todo mundo! Compartilhe o projeto nas redes sociais usando a hashtag #WebDriverBiDi.
  • Peça suporte. Envie uma solicitação de recurso ou confira os planos das suas ferramentas favoritas para adotar o WebDriverBiDi.
  • Participar do RFC, fornecendo feedback sobre as APIs.

Dúvidas comuns

O WebDriver BiDi vai substituir o protocolo do Chrome DevTools (CDP)?

Não. Navegadores baseados no Chromium continuarão usando o CDP para fins de depuração, enquanto o WebDriver BiDi é a nova especificação para atender às necessidades de teste com uma API mais ergonômica.

Como o Puppeteer está usando o CDP, isso significa que ele será descontinuado?

Não. No entanto, com o WebDriver BiDi, o Puppeteer poderá se tornar uma ferramenta de automação em vários navegadores.

Você tem um roteiro público?

Sim, acesse nosso roteiro no GitHub.