Integración de Jenkins y Cypress para Pruebas en Paralelo

Clase 28 de 29Curso de Cypress Avanzado

Contenido del curso

Resumen

Integrar Jenkins con Cypress permite automatizar la ejecución de pruebas end-to-end y, además, aprovechar la ejecución en paralelo para reducir drásticamente los tiempos. En esta guía se explica paso a paso cómo configurar un pipeline, resolver errores comunes de puertos y caché, y cómo pasar de ejecutar pruebas en serie a hacerlo en paralelo, logrando bajar de veinticinco segundos a solo siete.

¿Cómo configurar un pipeline de Cypress en Jenkins?

Para iniciar Jenkins se puede usar el archivo .war o una imagen de Docker [0:18]. Una vez que el servidor está corriendo en el puerto 8080, hay que asegurarse de detener cualquier otro servicio que pueda ocupar puertos, como el Service Cypress del dashboard gratuito, ya que de lo contrario habrá conflictos.

Desde la interfaz de Jenkins se crea una nueva tarea de tipo pipeline [0:46]. El pipeline script define las etapas de la ejecución:

  • Limpiar el directorio de trabajo.
  • Descargar el repositorio desde GitHub y hacer checkout a la rama correspondiente.
  • Instalar dependencias y hacer el build, de forma muy similar a lo que se hace con Docker.
  • Ejecutar las pruebas con el comando run dashboard, que utiliza el record key para enviar resultados al dashboard de Cypress.

Un detalle importante es el manejo de Status Code: cuando una prueba falla, Cypress devuelve un código 1 (error), y cuando todo pasa correctamente devuelve 0 [1:47]. En el pipeline se puede capturar ese error para que la ejecución continúe sin interrumpirse. Sin embargo, si las pruebas forman parte de un flujo previo a producción, conviene no ignorar el fallo y detener el despliegue para garantizar la calidad del software.

¿Qué errores comunes aparecen al ejecutar Cypress desde Jenkins?

Uno de los errores más frecuentes es el rechazo de conexión en el puerto 127.0.0.1:1234 [2:48]. Esto ocurre porque el Service Cypress del dashboard gratuito intercepta las llamadas a api.cypress.io y las redirige a localhost. La librería que se instala para esto altera un archivo de configuración llamado app.yml, sustituyendo la URL original por una dirección local [3:22].

Para resolverlo se recomienda:

  • Detener y, si es necesario, borrar la imagen de Docker del servicio del dashboard gratuito.
  • Borrar el caché de Cypress, cuya ubicación varía según el sistema operativo.
  • Modificar manualmente el archivo app.yml o simplemente eliminar la carpeta de caché y volver a ejecutar el pipeline.

Una vez limpio el entorno, al construir nuevamente desde Jenkins las pruebas corren sin problemas y los resultados se registran correctamente en el dashboard [4:16].

¿Cómo ejecutar pruebas en paralelo desde Jenkins con Cypress?

La ejecución en paralelo es una de las funcionalidades más valiosas del dashboard de Cypress. Para activarla basta con pasar la bandera --parallel junto con el record key en el comando de ejecución [5:10].

En el pipeline de Jenkins se utiliza la directiva parallel dentro del stage de ejecución, definiendo múltiples bloques que simulan diferentes máquinas [5:52]:

  • Máquina uno, máquina dos y máquina tres ejecutan el mismo comando en paralelo.
  • Cypress distribuye automáticamente los specs entre las máquinas disponibles.
  • El dashboard muestra en tiempo real el progreso de cada máquina.

El resultado habla por sí solo: la ejecución en serie tomó veinticinco segundos, mientras que en paralelo con tres máquinas bajó a siete segundos [7:02]. Cypress incluso sugiere cuántas máquinas usar para optimizar el tiempo.

¿Se puede escalar más allá de tres máquinas?

Sí. En Jenkins es posible agregar tantos paralelos como se necesiten. También se pueden crear slaves (nodos secundarios), que son máquinas distribuidas donde cada una ejecuta sus propias instancias en paralelo [7:28]. En entornos empresariales, donde se corren cientos o miles de pruebas, esta estrategia es fundamental para mantener tiempos de ejecución razonables.

¿Dashboard de pago o alternativa gratuita?

Existen dos opciones para el dashboard: la versión oficial de Cypress y la alternativa gratuita. La opción gratuita requiere montar y mantener tu propio servidor para recibir los datos de las ejecuciones [7:52]. La versión de pago ofrece la infraestructura lista para usar. La decisión depende de los recursos y necesidades de cada equipo.

Si has logrado configurar Jenkins con Cypress y ejecutar pruebas en paralelo, comparte tu experiencia o las dificultades que encontraste en los comentarios.