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 los casos de uso de automatización y pruebas de aplicaciones web. En este artículo, se explica por qué el equipo de Chrome lo necesitaba y se explican ejemplos concretos de los que Chrome for Testing podría beneficiarte como desarrollador.

Información general

Las pruebas del navegador son un componente fundamental para crear una experiencia web de alta calidad, independientemente de si se realizan 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 de manera sistemática como uno de los principales problemas de los desarrolladores web. Hoy anunciamos un cambio que aliviará parte de este problema.

Actualización automática: Esta opción es ideal para los usuarios, pero es complicada para los desarrolladores.

Una de las funciones más destacadas de Chrome es su capacidad de actualización automática. Los usuarios se alegran de saber que utilizan una versión actualizada y segura del navegador que incluye en todo momento las funciones modernas de la plataforma web, las funciones del navegador y las correcciones de errores.

Sin embargo, como desarrollador que ejecuta un conjunto de pruebas de extremo a extremo, es posible que tengas una perspectiva completamente diferente:

  • Deseas resultados coherentes y reproducibles en ejecuciones de pruebas repetidas, pero es posible que esto no suceda si el ejecutable o el objeto binario del navegador decide actualizarse entre dos ejecuciones.
  • Debes fijar una versión específica del navegador y verificar ese número de versión en tu repositorio de código fuente para poder verificar confirmaciones y ramas antiguas, y volver a ejecutar las pruebas con el objeto binario del navegador a partir de ese momento.

Nada de esto es posible con un objeto binario del navegador con actualización automática. Como resultado, es posible que no desees utilizar la instalación habitual de Chrome para pruebas automatizadas. Esta es la diferencia fundamental entre lo que es bueno para los usuarios normales de un navegador y lo que es bueno para los desarrolladores que realizan pruebas automatizadas.

Objetos binarios del navegador con control de versiones

Dejando de lado las actualizaciones automáticas, es posible que también te resulte difícil encontrar un objeto binario de Chrome con una versión específica. Google intencionalmente no pone a disposición las descargas de Chrome con versiones, ya que los usuarios no deberían tener que preocuparse por los números de versión: siempre deben actualizarse a la versión más reciente lo antes posible. Esto es ideal para los usuarios, pero problemático 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 quieres usar ChromeDriver para automatizar el navegador. No solo debes descargar un objeto binario de Chrome de alguna manera, sino que también necesitas un 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 los objetos binarios de Chromium (no de Chrome) en su lugar, aunque este enfoque tiene 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 compilan y publican de forma independiente del proceso de lanzamiento de Chrome, lo que hace que sea imposible asignar sus versiones a los lanzamientos reales de Chrome para el usuario. 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 exclusiva de Chrome orientada al caso de uso de prueba, 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 es lo más parecido posible a Chrome normal sin afectar negativamente el caso de uso de prueba.

Para crear Chrome for Testing, implementamos cambios en las bases de código de Chromium y Chrome, y configuramos una infraestructura para compilar y subir estos objetos binarios a un bucket disponible públicamente de forma segura 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 para encontrar un objeto binario de Chrome y ChromeDriver que coincidan pueden eliminarse por completo integrando el proceso de lanzamiento de ChromeDriver en la infraestructura de Chrome for Testing. Además de resolver esta dificultad 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 Chrome para probar objetos binarios?

La forma más fácil de descargar objetos binarios de Chrome for Testing en tu plataforma es usar nuestra utilidad de línea de comandos @puppeteer/browsers, disponible a través de 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 compilar tus propias secuencias de comandos automatizadas para descargar estos objetos binarios, tenemos lo que necesitas. 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.