WebDriver BiDi: El futuro de la automatización entre navegadores

En nuestro artículo anterior, examinamos los protocolos de automatización existentes, a saber, WebDriver "clásico" y el Protocolo de Herramientas para desarrolladores de Chrome (CDP), junto con sus respectivas ventajas y limitaciones.

Presentamos WebDriver BiDi, el futuro de la automatización de navegadores. Es un nuevo protocolo estándar de automatización de navegadores que se encuentra en desarrollo y que tiene como objetivo combinar lo mejor de WebDriver "clásico" y CDP. WebDriver BiDi promete una comunicación bidireccional, lo que lo hace rápido de forma predeterminada y viene con un control de bajo nivel.

WebDriver BiDi
WebDriver “clásico” Protocolo de herramientas para desarrolladores de Chrome (CDP)
La mejor compatibilidad con varios navegadores Mensajes rápidos y bidireccionales
Estándar del W3C Proporciona control de bajo nivel
Creado para pruebas

La visión detrás de WebDriver BiDi es permitirte escribir pruebas con cualquiera de tus herramientas favoritas y automatizarlas en cualquier navegador o controlador, lo que te brinda total flexibilidad.

La visión detrás de WebDriver BiDi
La visión detrás de WebDriver BiDi

Estandarización

El grupo de trabajo de WebDriver BiDi incluye un grupo diverso de proveedores de navegadores, proyectos de automatización de navegadores de código abierto y empresas que ofrecen soluciones de automatización de navegadores. Esta colaboración garantiza un futuro prometedor para la automatización de navegadores.

El grupo de trabajo de BiDi de WebDriver
El grupo de trabajo de BiDi de WebDriver

La mayor parte del trabajo se realiza en este repositorio de GitHub. Se realizan reuniones mensuales con todos los proveedores principales de navegadores para informar el progreso real y analizar los detalles desconocidos y discutibles. El grupo de trabajo interempresarial se asegura de que las decisiones estén alineadas con todas las partes interesadas.

Establecer e implementar un nuevo protocolo no es poca cosa. Requiere esfuerzos coordinados de varios proveedores que colaboren y trabajen juntos. El proceso incluye lo siguiente:

  • Especificación: Es un proceso de solicitud de comentarios (RFC) para recopilar comentarios sobre la propuesta.
  • Verificación: Es una serie de pruebas que se pueden ejecutar en todas las plataformas y que sirven como fuente de información para todas las implementaciones.
  • Implementación: Los navegadores implementan los protocolos según las especificaciones y aprueban las pruebas de verificación.

Desafíos

En esta sección, analizaremos los desafíos de implementar BiDi de WebDriver, ya que busca lograr un equilibrio entre compatibilidad, usabilidad y capacidad de implementación.

Más allá de un clon de CDP: adopta la compatibilidad entre navegadores

CDP, con sus elementos específicos de Chrome y DevTools, no se puede replicar directamente en la especificación de BiDi de WebDriver. Implementar CDP tal como está sería inviable para otros navegadores, por lo que no tendría sentido crear una especificación que solo documente cómo hacerlo.

Garantiza una latencia baja

WebDriver BiDi debe diseñarse para manejar una latencia alta sin sacrificar el rendimiento. En CDP, la latencia es baja porque el cliente y el servidor casi siempre se ejecutan en la misma máquina física, pero este no es el caso de WebDriver BiDi. Por lo tanto, WebDriver BiDi debe minimizar la cantidad de recorridos de ida y vuelta necesarios entre el cliente y el servidor.

Prioriza la ergonomía en BiDi

Si bien no se espera que los desarrolladores compilen clientes BiDi de WebDriver desde cero, es fundamental evitar que el protocolo sea demasiado complicado. Un BiDi demasiado complejo no solo sería difícil de implementar, sino también de trabajar con él, lo que dificultaría la adopción y el uso.

Cómo garantizar la implementabilidad de BiDi

La BiDi de WebDriver debe poder implementarse de manera realista, teniendo en cuenta las limitaciones de varios navegadores. Por ejemplo, retener todos los objetos de JavaScript que BiDi expuso a los clientes podría provocar fugas de memoria, mientras que no conservar ninguno dificultaría la depuración y la interacción con el código JavaScript de una página. Es fundamental encontrar un equilibrio que permita una automatización eficaz del navegador sin perjudicar el rendimiento.

Superar los desafíos

En esta sección, analizaremos las estrategias que se emplean para abordar los desafíos de implementar BiDi de WebDriver.

Prototipado rápido

Abordar el desafío de la implementabilidad es fundamental para el éxito de la BiDi. Para acelerar el progreso de la especificación y las pruebas, adoptamos un enfoque de prototipado rápido con NodeJS. Esto no solo nos permite experimentar con diferentes soluciones, sino que también facilita el desarrollo de pruebas de la plataforma web.

Diseña pensando en el rendimiento

Esta decisión de diseño se basa en el rendimiento, ya que, en algunos casos, la latencia es alta en WebDriver BiDi. Por ejemplo, cuando se recupera un ID y un valor de objeto desde el navegador, WebDriver BiDi solo requiere un viaje de ida y vuelta, mientras que CDP requiere dos. Esto se debe a que WebDriver BiDi puede mostrar el ID y el valor en una sola respuesta (el resultado no debe ser serializable en JSON), mientras que CDP debe mostrarlos por separado.

Énfasis en las pruebas de la plataforma web (WPT)

Las pruebas de plataformas web desempeñan un papel importante en los trabajos de BiDi. Actualmente, WPT abarca WebDriver “clásico” y WebDriver BiDi, y sirve como referencia confiable para todas las implementaciones. Estas pruebas están diseñadas para ejecutarse y aprobarse en varias implementaciones, lo que garantiza una ejecución coherente del protocolo entre navegadores, lo que es vital para el éxito de WebDriver BiDi. Consulta el resultado más reciente de WPT en el panel.

¿Cuál es el plan y el progreso actual?

Consulta la ruta de planificación de BiDi de WebDriver para comprender la dirección del proyecto. La planificación está en desarrollo y evoluciona constantemente.

Consulta las pruebas de la plataforma web más recientes para conocer el estado de implementación en todos los navegadores, ya que esta información sirve como fuente de información.

Mantente al tanto de los hitos del proyecto para supervisar su progreso.

Descubre los logros obtenidos en 2023 y mantente al tanto de los desarrollos más recientes.

Cómo puedes ayudar a admitir BiDi de WebDriver

¿Te entusiasma el futuro de la automatización de navegadores con WebDriver BiDi? Sigue estos pasos para mostrar tu apoyo:

  • Sé un verificador y usuario pionero para ayudar a definir el futuro de WebDriver BiDi.
  • ¡Comparte esta buena noticia! Comparte el proyecto en redes sociales con el hashtag #WebDriverBiDi.
  • Solicita asistencia. Envía una solicitud de función o consulta a tus herramientas favoritas sobre sus planes para adoptar WebDriverBiDi.
  • Participa en la RFC y proporciona comentarios sobre las APIs.

Preguntas frecuentes

¿WebDriver BiDi reemplazará el Protocolo de herramientas para desarrolladores de Chrome (CDP)?

No. Los navegadores basados en Chromium seguirán usando CDP para depurar, mientras que WebDriver BiDi es la nueva especificación para abordar las necesidades de prueba con una API más ergonómica.

Dado que Puppeteer usa CDP, ¿eso significa que dejará de estar disponible?

No. Sin embargo, WebDriver BiDi permitirá que Puppeteer se convierta en una herramienta de automatización multinavegador.

¿Tienes una hoja de ruta pública?

Sí, visita nuestro plan de ruta en GitHub.