Chrome for Testing: descargas confiables para automatización de navegadores

Hoy nos complace anunciar Chrome for Testing, una nueva variante de Chrome que se orienta específicamente a casos de uso de automatización y pruebas de aplicaciones web. Este artículo explica por qué el equipo de Chrome consideraba que esto era necesario y muestra ejemplos concretos en los que Chrome for Testing podría beneficiarte como desarrollador.

Información general

Las pruebas del navegador son un componente vital para crear una experiencia web de alta calidad, independientemente de si se hace de forma manual o automática. Al mismo tiempo, configurar un entorno de prueba adecuado para el navegador es muy difícil, tanto que se informa constantemente como uno de los principales problemas de los desarrolladores web. Hoy anunciamos un cambio que esperamos aliviar parte de este problema.

Actualización automática: Ideal para los usuarios, incómodo para los desarrolladores

Una de las funciones más notables de Chrome es su capacidad de actualización automática. A los usuarios les complace saber que están ejecutando una versión actualizada y segura del navegador que incluyen funciones modernas de plataforma web, funciones del navegador y correcciones de errores en todo momento.

Sin embargo, como desarrollador que ejecuta un conjunto de pruebas de extremo a extremo, puedes tener una perspectiva completamente diferente:

  • Quieres resultados coherentes y reproducibles en las ejecuciones de pruebas repetidas, pero es posible que esto no ocurra si el ejecutable o el objeto binario del navegador decide actualizarse entre dos ejecuciones.
  • Quieres fijar una versión específica del navegador y verificar ese número de versión en el repositorio de código fuente, de modo que puedas revisar las confirmaciones y ramas anteriores, y volver a ejecutar las pruebas en el objeto binario del navegador a partir de ese momento.

Esto no es posible con un objeto binario del navegador con actualización automática. Como resultado, es posible que no quieras usar tu instalación habitual de Chrome para las pruebas automatizadas. Esta es la discrepancia fundamental entre lo que es bueno para los usuarios normales del navegador y lo que es bueno para los desarrolladores que hacen pruebas automatizadas.

Objetos binarios del navegador con versiones

Dejando de lado las actualizaciones automáticas, es posible que también te haya resultado difícil encontrar un objeto binario de Chrome con una versión específica. Google intencionalmente no permite que las descargas de Chrome con versiones estén disponibles, ya que los usuarios no deberían preocuparse por los números de versión: siempre deben actualizarse a la versión más reciente lo antes posible. Esto es excelente para los usuarios, pero incómodo para los desarrolladores que necesitan reproducir un informe de errores en una versión anterior de Chrome.

Un ejemplo más específico de este problema es cuando se desea utilizar ChromeDriver para automatizar el navegador. No solo debes descargar un objeto binario de Chrome de alguna manera, sino que también necesitas un objeto binario de ChromeDriver con la versión correspondiente para asegurarte de que los dos objetos binarios sean compatibles.

Debido a que no existe una buena manera de resolver estos problemas, sabemos que muchos desarrolladores descargan objetos binarios de Chromium (no Chrome), aunque este enfoque presenta algunas fallas. En primer lugar, estos objetos binarios de Chromium no están disponibles de manera confiable en todas las plataformas. En segundo lugar, se crean y publican por separado del proceso de lanzamiento de Chrome, por lo que es imposible asignar sus versiones a versiones reales de Chrome para los usuarios. En tercer lugar, Chromium es diferente de Chrome.

La solución: Chrome for Testing

Diseñado para resolver estos problemas, Chrome for Testing es una versión dedicada de Chrome que se orienta al caso de uso de pruebas, sin actualización automática, integrada en el proceso de lanzamiento de Chrome y disponible para cada versión de Chrome. Un objeto binario con control de versiones que sea lo más parecido posible a la versión normal de Chrome sin afectar negativamente el caso de uso de prueba.

Para crear Chrome for Testing, realizamos cambios en las bases de código de Chromium y Chrome, y configuramos la infraestructura para compilar y subir estos objetos binarios a un bucket disponible públicamente junto con el proceso de lanzamiento de Chrome en todos los canales (estable, beta, para desarrolladores y Canary).

La infraestructura en torno a Chrome for Testing ofrece oportunidades interesantes más allá de Chrome. Por ejemplo, las dificultades que mencionamos anteriormente en relación con la búsqueda de archivos binarios de Chrome y ChromeDriver que coincidan se pueden eliminar por completo integrando el proceso de actualización de ChromeDriver en la infraestructura de Chrome for Testing. Además de resolver este punto débil para el usuario, esto también alinea las versiones de ChromeDriver con las de Chrome y elimina el proceso de lanzamiento manual de ChromeDriver.

¿Cómo puedo obtener objetos binarios de Chrome for Testing?

La forma más fácil de descargar los binarios de Chrome for Testing para tu plataforma es usar nuestra utilidad de línea de comandos @puppeteer/browsers, disponible en npm. Estos son algunos ejemplos:

# Download the latest available Chrome for Testing binary corresponding to the Stable channel.
npx @puppeteer/browsers install chrome@stable

# Download a specific Chrome for Testing version.
npx @puppeteer/browsers install chrome@116.0.5793.0

# Download the latest available ChromeDriver version corresponding to the Canary channel.
npx @puppeteer/browsers install chromedriver@canary

# Download a specific ChromeDriver version.
npx @puppeteer/browsers install chromedriver@116.0.5793.0

Si prefieres crear tus propias secuencias de comandos automatizadas para descargar estos objetos binarios, podemos ayudarte. Ofrecemos extremos de la API de JSON con las versiones más recientes disponibles por canal de versiones de Chrome (estable, beta, para desarrolladores y Canary). Para obtener una descripción general rápida del estado más reciente, consulta el panel de disponibilidad de Chrome for Testing.