Hoy nos complace anunciar Chrome for Testing, una nueva versión de Chrome que se enfoca específicamente en los casos de uso de pruebas y automatización de apps web. En este artículo, se explica por qué el equipo de Chrome consideró que era necesario y se muestran ejemplos concretos en los que Chrome for Testing podría beneficiarte como desarrollador.
Fondo
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 pruebas del navegador adecuado es notoriamente difícil, tanto que se informa constantemente como un punto débil principal para los desarrolladores web. Hoy, anunciamos un cambio que, con suerte, aliviará parte de este problema.
Actualización automática: excelente para los usuarios, incómoda para los desarrolladores
Una de las funciones más notables de Chrome es su capacidad de actualizarse automáticamente. Los usuarios se complacen en saber que ejecutan una versión del navegador actualizada y segura que incluye funciones modernas de la 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, es posible que tengas una perspectiva completamente diferente:
- Quieres resultados coherentes y reproducibles en ejecuciones de prueba repetidas, pero esto puede no suceder si el ejecutable o el objeto binario del navegador decide actualizarse entre dos ejecuciones.
- Quieres anclar una versión específica del navegador y registrar ese número de versión en tu repositorio de código fuente para poder extraer confirmaciones y ramas antiguas y volver a ejecutar las pruebas en el objeto binario del navegador desde ese momento.
Nada de esto es posible con un objeto binario del navegador que se actualiza automáticamente. Como resultado, es posible que no quieras usar tu instalación normal de Chrome para las pruebas automatizadas. Esta es la falta de coincidencia fundamental entre lo que es bueno para los usuarios habituales del navegador y lo que es bueno para los desarrolladores que realizan pruebas automatizadas.
Objetos binarios del navegador con versiones
Además de la actualización automática, es posible que también te haya resultado difícil encontrar un objeto binario de Chrome con una versión específica. Google no pone a disposición intencionalmente las descargas de Chrome con versiones, ya que los usuarios no deberían preocuparse por los números de versión. Siempre deberían 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 quieres usar ChromeDriver para la automatización del 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 garantizar que los dos objetos binarios sean compatibles.
Debido a que no hay una buena manera de resolver estos problemas, sabemos que muchos desarrolladores descargan objetos binarios de Chromium (no de Chrome), 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 por separado del proceso de lanzamiento de Chrome, lo que imposibilita asignar sus versiones a lanzamientos de Chrome reales 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 dedicada de Chrome que se enfoca en el caso de uso de pruebas, sin actualización automática, integrada en el proceso de lanzamiento de Chrome y disponible para cada lanzamiento de Chrome. Un objeto binario con versiones que se acerca lo más posible a Chrome normal sin afectar negativamente el caso de uso de pruebas.
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 en sincronización con el proceso de lanzamiento de Chrome en todos los canales (estable, beta, para desarrolladores y Canary).
La infraestructura de Chrome for Testing desbloquea oportunidades interesantes más allá de Chrome. Por ejemplo, las dificultades que mencionamos anteriormente para encontrar un objeto binario de Chrome y ChromeDriver coincidente se pueden eliminar por completo si se integra el proceso de lanzamiento de ChromeDriver en la infraestructura de Chrome for Testing. Además de resolver este punto débil para el usuario, esto también alinea los lanzamientos de ChromeDriver con los de Chrome y elimina el proceso manual de lanzamiento de ChromeDriver.
¿Cómo puedo obtener objetos binarios de Chrome for Testing?
La forma más sencilla de descargar objetos binarios de Chrome for Testing para 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, te ayudaremos. Ofrecemos extremos de la API de JSON con las versiones más recientes disponibles por canal de lanzamiento 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.