Cypress ha lanzado una función beta llamada tap que permite a los agentes de codificación impulsados por IA conectarse a una sesión de prueba de Cypress en vivo, extraer instantáneas del DOM y registros de comandos, y utilizar esa información visual para diagnosticar fallos. La herramienta solo funciona con Cypress 15.21.0 o superior, un navegador basado en Chromium y la interfaz de usuario “cypress open”; no se ejecuta en modo headless.

Por qué los agentes de IA necesitan algo más que un código de salida

La mayoría de los asistentes de codificación con IA tratan una ejecución de Cypress como cualquier otra herramienta de línea de comandos: ejecutan npx cypress run, leen el estado de salida del proceso y deciden si la prueba pasó. Un código de salida le indica al agente que algo salió mal, pero no ofrece pistas sobre si un selector se escribió incorrectamente, si una página no cargó o si una superposición bloqueó un botón. Los humanos, por el contrario, abren la interfaz de usuario de Cypress, observan el navegador, inspeccionan el árbol DOM y leen el registro de comandos antes de formular una hipótesis.

Esa brecha hace que la depuración automatizada sea frágil. Un “Element not found” puede derivarse de docenas de causas raíz y, sin evidencia visual, una IA puede seguir intentando la misma solución, entrando en un bucle infinito.

Cómo tap cierra la brecha

Tap crea una interfaz basada en la terminal para una instancia de Cypress en ejecución. Una vez que el desarrollador inicia Cypress en modo open:

npx cypress open --e2e --browser=chrome

el agente puede emitir una serie de comandos con salida JSON desde una terminal separada:

  • npx cypress tap specs --json – enumera los archivos spec disponibles.
  • npx cypress tap run <spec> --json – inicia la ejecución de un único spec.
  • npx cypress tap status --json – devuelve el estado de la ejecución actual, incluyendo marcas de tiempo.

Debido a que la carga útil del estado contiene una marca de tiempo startedAt, el agente puede verificar que está viendo resultados recientes en lugar de una ejecución antigua que terminó antes. Confiar únicamente en el código de salida bruto ya no es suficiente.

Cuando una prueba falla, el agente puede profundizar:

  • npx cypress tap reporter --json – obtiene el informe de pruebas general.
  • npx cypress tap command --test-id <ID> --command-id <ID> --json – extrae el comando exacto que dio error, junto con una instantánea del DOM de la aplicación, el árbol ARIA y cualquier atributo de elemento relevante en ese momento.

Armada con esa instantánea, la IA puede razonar sobre por qué falló el selector, si la página aún se estaba cargando o si un modal estaba ocultando el objetivo. Luego puede proponer un cambio de código, aplicarlo y volver a ejecutar el mismo spec para verificar la solución.

Una política de seguridad para agentes autónomos

Para evitar que el bucle se ejecute indefinidamente, el equipo de Cypress sugiere un flujo de trabajo disciplinado:

  1. Ejecutar solo un archivo spec específico.
  2. Consultar tap status con un plazo estricto, ignorando cualquier resultado cuyo startedAt sea anterior a la última consulta.
  3. Inspeccionar únicamente la prueba fallida y el comando causante del error.
  4. Permitir una única modificación de código antes de la siguiente ejecución.
  5. Volver a ejecutar el spec.
  6. Si el resultado cambia, detenerse y solicitar la revisión de un humano.

El agente también debe generar una explicación en lenguaje natural de lo que observó y de por qué la solución propuesta debería funcionar. Aprobar la prueba no es suficiente; la IA debe demostrar que comprendió la evidencia visual.

Quiénes se beneficiarán

Los desarrolladores que ya confían en asistentes de IA para la generación de código ahora pueden entregar a esos asistentes una superficie de depuración más rica. El beneficio esperado es una reducción del tiempo dedicado a perseguir pruebas inestables, especialmente en grandes suites de extremo a extremo donde reproducir un fallo manualmente puede llevar minutos. Los equipos que adopten tap podrían ver una resolución más rápida de los pull requests que afectan a componentes de la interfaz de usuario y una menor necesidad de sesiones de depuración de ida y vuelta.

Riesgos y limitaciones

Tap aún está en fase beta, lo que significa que puede contener errores, cambiar su sintaxis de comandos o dejar de admitir ciertas configuraciones sin previo aviso. Su dependencia de la interfaz de usuario "open" excluye los pipelines de CI en modo headless, por lo que los equipos necesitarán una estrategia aparte para las compilaciones automatizadas. Debido a que la función transmite datos del DOM en vivo, existe una ligera sobrecarga de rendimiento que podría ralentizar los specs grandes. Por último, la política de seguridad asume que la IA puede respetar los plazos y detenerse tras un único cambio; un agente mal diseñado aún podría entrar en un bucle infinito o aplicar una solución incorrecta.

Qué esperar a continuación

  • Ciclos de retroalimentación beta – Es probable que Cypress refine el esquema JSON y añada comandos más granulares basándose en los comentarios de los primeros usuarios.
  • Integración con CI – Se esperan scripts de la comunidad que conecten el requisito de modo abierto de tap con ejecutores headless, quizás mediante la creación de una pantalla virtual.
  • Herramientas para agentes de IA – Los proveedores que desarrollan asistentes de codificación podrían empezar a incluir el soporte para tap como un módulo de depuración predeterminado, haciendo que la función sea más visible en las extensiones de IDE más comunes.

Si estás experimentando con el mantenimiento de pruebas impulsado por IA, prueba tap en una sola especificación inestable (flaky spec) y comprueba si el contexto visual acorta el ciclo de depuración. La herramienta no reemplazará el juicio humano, pero le otorga a tu agente de codificación un par de ojos de los que carecía anteriormente.