WebDriver BiDi listo para la producción en Firefox, Chrome y Puppeteer

Matthias Rohmer
Matthias Rohmer

La semana pasada, junto con BrowserStack, anunciamos que WebDriver BiDi está listo para producción en BrowserStack. Esta semana, continúa el verano de WebDriver BiDi con Firefox 129 y Puppeteer 23, y cada uno de ellos obtiene compatibilidad lista para producción con WebDriver BiDi.

Mozilla ha sido un colaborador importante en WebDriver BiDi durante más de cuatro años. Al principio, ayudó a dar forma al nuevo estándar y, luego, a implementarlo gradualmente en Firefox, documentando su progreso con el boletín informativo de WebDriver de Firefox.

Con WebDriver BiDi, que ahora está listo para la producción en Firefox, Puppeteer, a partir de la versión 23, ofrece compatibilidad estable con Firefox a través de WebDriver BiDi. Esto te permite automatizar Firefox con la misma API concisa que Chrome. La compatibilidad de Puppeteer con el Protocolo de DevTools de Chrome (CDP) no cambiará.

Firefox, CDP y Puppeteer

Puppeteer es una herramienta confiable para que los desarrolladores automaticen los navegadores basados en Chromium mediante el protocolo Chrome DevTools, también conocido como CDP. En 2019, Puppeteer obtuvo compatibilidad experimental con Firefox.

Para que esto funcione, Mozilla implementó y mantuvo un subconjunto de CDP en Firefox. Esta solución permitió que Firefox se automatizara con la API de Puppeteer, pero tenía las siguientes salvedades:

  • Como sugiere el nombre, las Herramientas para desarrolladores de Chrome usan el CDP y deben cambiar con los requisitos de las Herramientas para desarrolladores.
  • El CDP no está estandarizado en una especificación pública y compartida, y mantenerlo en Firefox requirió comunicación y esfuerzo constantes.
  • Dado que Firefox solo implementó un subconjunto de CDP, Puppeteer nunca pudo garantizar que su API completa funcionara con Firefox, lo que generaba confusión entre los usuarios.

Si bien nos complace haber mantenido esta compatibilidad junto con Mozilla durante los últimos años, siempre supimos que no era una solución permanente. Sobre la base de esta sociedad, junto con otros proveedores importantes de navegadores y herramientas, creamos WebDriver BiDi.

El trabajo en equipo hace realidad los sueños

El equipo de Firefox ha estado trabajando con mucho entusiasmo para implementar WebDriver BiDi en Firefox. Al mismo tiempo, el equipo de Puppeteer ha estado expandiendo la compatibilidad con BiDi de WebDriver en la API de Puppeteer. El objetivo que ambos equipos trabajaron fue hacer que todas las APIs requeridas para los casos de uso de automatización de producción estuvieran disponibles con WebDriver BiDi en Puppeteer, lo que garantiza la compatibilidad con Chrome y Firefox.

Panel compartido del equipo que muestra la cantidad de pruebas aprobadas en los últimos meses.
Panel compartido del equipo que muestra la cantidad de pruebas aprobadas en los últimos meses.

Esto permite que los usuarios de Puppeteer seleccionen Firefox o Chrome para sus automatizaciones, ya que especifican la clave de configuración browser cuando inician una instancia de Puppeteer.

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 obtener más información sobre las novedades de Firefox 129 y el trabajo de Mozilla en WebDriver BiDi, consulta la entrada de blog de Mozilla Hacks relacionada.

Compatibilidad con CDP en el futuro

En el fragmento de código anterior, se muestra que, para automatizar Chrome con WebDriver BiDi con Puppeteer, debes configurar protocol de forma explícita en webDriverBiDi. Esto se debe a que, para Chrome, Puppeteer seguirá usando el CDP de forma predeterminada, no para romper las automatizaciones existentes, sino para seguir admitiendo automatizaciones especializadas en las funciones de Chrome.

La compatibilidad con CDP en Firefox dejó de estar disponible a partir de la versión 129 y se quitará a fines de 2024. Si tienes automatizaciones existentes que dependen de la compatibilidad con CDP en Firefox, te recomendamos que migres a WebDriver BiDi. Si eso no es posible, comunícate con dev-webdriver@mozilla.org con tu caso de uso.