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

En nuestro artículo anterior, examinamos los protocolos de automatización existentes, como WebDriver "Classic" y el protocolo para Herramientas para desarrolladores de Chrome (CDP), junto con sus respectivas ventajas y restricciones.

Presentamos WebDriver BiDi, el futuro de la automatización de navegadores. Es un nuevo protocolo estándar de automatización de navegadores que actualmente está en desarrollo y apunta a combinar lo mejor de WebDriver "Classic" y CDP. WebDriver BiDi promete comunicación bidireccional, que la hace rápida de forma predeterminada, y viene con un control de bajo nivel.

BiDi de WebDriver
WebDriver “Clásico” Protocolo de las Herramientas para desarrolladores de Chrome (CDP)
Mejor compatibilidad con varios navegadores Mensajería rápida y bidireccional
Estándar W3C Proporciona control de bajo nivel
Creado para las 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 da flexibilidad total.

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 consta de 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 WebDriver BiDi
El grupo de trabajo de WebDriver BiDi

La mayor parte del trabajo se realiza en este repositorio de GitHub. Hay reuniones mensuales con los principales proveedores de navegadores que informan el progreso real y debaten detalles discutibles y desconocidos. El grupo de trabajo entre empresas 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 conjuntos de diversos proveedores que colaboren y trabajen en conjunto. El proceso implica lo siguiente:

  • Especificación: 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 funcionan como fuente de información confiable para todas las implementaciones.
  • Implementación: Los navegadores implementan los protocolos de acuerdo con las especificaciones y pasan las pruebas de verificación.

Desafíos

En esta sección, profundizaremos en los desafíos de implementar WebDriver BiDi, ya que su objetivo es lograr el equilibrio entre la compatibilidad, la usabilidad y la implementación.

Más allá de una clonación de CDP: Adopta la compatibilidad entre navegadores

CDP, con sus elementos específicos de Chrome y Herramientas para desarrolladores, no se puede replicar directamente en la especificación de WebDriver BiDi. Implementar CDP tal como está sería inviable para otros navegadores, lo que generaría una especificación que simplemente documenta cómo hacerlo sin sentido.

Garantiza una latencia baja

WebDriver BiDi debe estar diseñado para manejar 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 en WebDriver BiDi. Por lo tanto, WebDriver BiDi debe minimizar la cantidad de recorridos necesarios entre el cliente y el servidor.

Priorizamos la ergonomía en BiDi

Si bien no se espera que los desarrolladores compilen clientes de WebDriver BiDi desde cero, es fundamental evitar complicar demasiado el protocolo. Una BiDi demasiado compleja no solo sería difícil de implementar, sino también difícil de trabajar, lo que obstaculiza la adopción y el uso.

Garantiza la implementación de BiDi

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

Superación de los desafíos

En esta sección, analizaremos las estrategias empleadas para abordar los desafíos de la implementación de WebDriver BiDi.

Prototipado rápido

Abordar el desafío de la implementación es fundamental para el éxito de BiDi. Para acelerar el progreso en 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 plataformas web.

Diseña teniendo en cuenta el rendimiento

Esta decisión de diseño está impulsada por el rendimiento, ya que, en algunos casos, la latencia es alta en WebDriver BiDi. Por ejemplo, cuando se recupera un ID de objeto y un valor del navegador, WebDriver BiDi solo requiere un recorrido, 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 poder serializarse con JSON), mientras que CDP debe mostrarlos por separado.

Énfasis en las pruebas de plataforma web (WPT)

Las pruebas de plataforma web desempeñan un papel importante en las obras de BiDi. Actualmente, se trata de WebDriver “Classic” y WebDriver BiDi, y WPT sirve como referencia confiable para todas las implementaciones. Estas pruebas están diseñadas para ejecutarse y pasarse en varias implementaciones, lo que garantiza una ejecución coherente del protocolo entre navegadores, lo cual es fundamental para el éxito de WebDriver BiDi. Consulta el resultado de WPT más reciente en el panel.

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

Consulta la hoja de ruta de WebDriver BiDi para comprender la dirección del proyecto. La hoja de ruta es un trabajo en curso y en constante evolución.

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

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

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

Compatibilidad con WebDriver BiDi: cómo puedes ayudar

¿Te entusiasma el futuro de la automatización de navegadores con WebDriver BiDi? A continuación, te mostramos cómo puedes demostrar tu apoyo:

  • Ser un verificador y usuario pionero y ayuda a diseñar el futuro de WebDriver BiDi.
  • ¡Comparte esta buena noticia! Comparte el proyecto en las redes sociales con el hashtag #WebDriverBiDi.
  • Solicita asistencia. Presenta 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 para Herramientas para desarrolladores de Chrome (CDP)?

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

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

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

¿Tienes una hoja de ruta pública?

Sí, consulta nuestra hoja de ruta en GitHub.