Reporter de Cypress
@probara/cypress-reporter es un reporter de Cypress que envía a Probara
cada resultado de un cypress run: cada intento con su estado, su duración y su error, vinculado a
su caso de prueba, con la captura de pantalla de cada fallo y los pasos, los adjuntos y los enlaces
que añaden tus pruebas. Los casos que faltan se crean, y la ejecución se cierra cuando todo ha
llegado.
Es de código abierto, está publicado en
npm en la versión 0.1.0 y vive en el
repositorio probara-sdk.
Hasta la 1.0, una versión menor puede traer cambios incompatibles: fija la versión
(actualizar el reporter).
Qué obtienes
Sección titulada «Qué obtienes»- Un resultado por intento, incluidos los
retriesde Cypress, con el veredicto del propio Cypress:it.skipythis.skip()se envían como omitidos, y también cada prueba que un hook fallido impidió ejecutar. - Las mismas claves de automatización que
probara import junitsobre el JUnit XML del reporterjunitde Cypress o de cypress-junit, así que al dejar la importación JUnit conservas cada caso y su historial. - Capturas de pantalla adjuntas al intento exacto para el que Cypress las tomó, y el vídeo de
una spec en sus resultados fallidos con
attachVideos. - Vinculación por un ID de caso en el título de una prueba o de un
describe(SHOP-12 adds an item) o conprobara.id(), y el navegador como parámetrobrowserde cada resultado, nunca en la clave. - Helpers de prueba que se ejecutan donde se ejecuta la spec:
probara.step(),probara.attach(),probara.link(),probara.issue(),probara.parameters(), y el título, la suite, las etiquetas y los campos de un caso nuevo. - Salida de consola de cada prueba como adjuntos, y selección de pruebas: ejecuta solo las pruebas de una ejecución creada en Probara.
- Ejecuciones con nombre, entorno, hito, plan de pruebas, configuraciones y etiquetas; una sola ejecución para todas las máquinas de un pipeline repartido.
- Nunca rompe tu ejecución de pruebas. Un problema al reportar se registra, nunca se lanza, y
cypress runsigue terminando con el número de sus propias pruebas fallidas. Lo que no se pudo enviar puede guardarse en un archivo y enviarse más tarde.
Antes de empezar
Sección titulada «Antes de empezar»| Necesitas | Por qué |
|---|---|
| Node.js 22.12 o posterior | El rango engines del paquete, para el Node.js que arranca cypress. |
| Cypress 15.10.0 o posterior | El rango de peer: 15.10.0 es el primer Cypress con Cypress.expose(), que entrega al navegador sus ajustes. Probado en 16.1.1. |
cypress run | Cypress solo construye un reporter en cypress run: cypress open no reporta nada. |
| Un plan de pago (Pro o Enterprise, o una prueba Pro) | El envío de resultados desde CI no forma parte del plan Free. En Free, Probara responde 403 forbidden. |
| Un propietario o administrador de Probara | Solo los propietarios y administradores crean y revocan tokens de aplicación. |
| El ID del Proyecto al que enviar los resultados | Por ejemplo SHOP: una letra mayúscula y después mayúsculas o dígitos. |
1. Crea un token de aplicación
Sección titulada «1. Crea un token de aplicación»El reporter se autentica con un token de aplicación: un token que pertenece a tu organización, no a una persona. No ocupa ningún puesto y sigue funcionando cuando la persona que lo creó se va.
- En Probara, abre Workspace › Integraciones y selecciona la tarjeta Cypress.
- Abre la pestaña Tokens de acceso y selecciona Crear un token de aplicación.
- Escribe un Nombre del token con el nombre de lo que lo usa (el repositorio o el pipeline) y selecciona Crear token.
- Selecciona Copiar token en Copia tu nuevo token. Solo se muestra una vez: guárdalo en ese
momento como un secreto de CI llamado
PROBARA_API_TOKEN.
La guía de la integración con Cypress cubre la tarjeta, cómo gestionar y revocar los tokens, y qué muestra Probara en las ejecuciones que crea un token de aplicación.
2. Instala el reporter
Sección titulada «2. Instala el reporter»npm install --save-dev @probara/cypress-reporter3. Registra el reporter y su plugin
Sección titulada «3. Registra el reporter y su plugin»Define el reporter como el reporter de e2e, con tu ID del Proyecto, y devuelve su plugin desde
setupNodeEvents:
const { defineConfig } = require('cypress');const { probaraNodeEvents } = require('@probara/cypress-reporter/setup');
module.exports = defineConfig({ e2e: { reporter: '@probara/cypress-reporter', reporterOptions: { projectId: 'SHOP' }, setupNodeEvents(on, config) { return probaraNodeEvents(on, config); }, },});El reporter convierte los eventos de prueba de Cypress en resultados. El plugin es dueño de la
ejecución de Probara (una para todo el cypress run, cerrada al final), recoge las capturas y el
vídeo, y transporta lo que dicen los helpers probara.*. Lee los mismos reporterOptions, así que
no necesita ajustes propios. Si setupNodeEvents ya registra otros plugins, consulta
con otros plugins.
Puedes omitir projectId y definir PROBARA_PROJECT en el entorno. El token nunca va en la
configuración: la configuración se sube al repositorio, y el reporter lee el token de
PROBARA_API_TOKEN.
Cypress ejecuta un solo reporter: con este, dejan de imprimirse las líneas por prueba de su reporter
spec por defecto, aunque las tablas propias de Cypress de cada spec y de la ejecución siguen
apareciendo. Para conservar también las líneas de spec, declara ambos reporters en
cypress-multi-reporters.
4. Carga el archivo de soporte
Sección titulada «4. Carga el archivo de soporte»Importa el archivo de soporte una vez, en el archivo de soporte de Cypress:
import '@probara/cypress-reporter/support';Se ejecuta en el navegador, junto a tus specs, y activa los helpers probara.* (un global: las
specs los llaman sin importar nada),
captureOutput y
la selección de pruebas.
5. Ejecuta tus pruebas con el token
Sección titulada «5. Ejecuta tus pruebas con el token»Pasa el secreto al paso que ejecuta cypress run. En GitHub Actions:
- name: Run Cypress tests run: npx cypress run env: PROBARA_API_TOKEN: ${{ secrets.PROBARA_API_TOKEN }}No hay un paso de subida aparte: el plugin envía los resultados cuando termina la ejecución. Proveedores de CI tiene pipelines completos para GitHub Actions, GitLab CI, Jenkins, CircleCI, Azure Pipelines, Bitbucket Pipelines y Buildkite.
Qué ves
Sección titulada «Qué ves»Sin un token y un proyecto, el reporter queda desactivado y en silencio, así que las ejecuciones
locales no envían nada. En CI escribe en stdout, en líneas [probara] entre la salida propia de
Cypress, y termina con el enlace a la ejecución:
$ npx cypress run --spec cypress/e2e/cart.cy.js[probara] Sending 5 results of 4 tests (3 passed, 2 failed, 0 skipped, 0 blocked)[probara] Recorded 5 results (2 new cases, 0 unmatched) in R-1 (closed): https://app.probara.net/projects/SHOP/runs/R-1En Probara, la ejecución aparece en la lista de ejecuciones del proyecto como una ejecución
automatizada, con el nombre del build de CI (por ejemplo Cypress #42), su rama, su commit y la URL
del build. Muestra la aplicación Cypress y el nombre del token (por ejemplo
Cypress · shop-e2e) en lugar de una persona.
Cada registro, y qué activa
Sección titulada «Cada registro, y qué activa»| Qué está registrado | Qué obtienes |
|---|---|
| Reporter, plugin y archivo de soporte | Todo: una ejecución para todo el cypress run, cerrada al final, las capturas de los intentos fallidos, el vídeo y los helpers |
| Reporter y plugin, sin archivo de soporte | Resultados, capturas y vídeo. Cada llamada probara.* no hace nada, captureOutput no captura nada y la selección de pruebas no omite nada |
| Solo el reporter, sin plugin | Se envía cada resultado, pero en una ejecución por spec, sin capturas, sin vídeo y sin helpers. Una advertencia dice qué falta |
| Solo el plugin, sin reporter | No se reporta nada: Cypress nunca construye el reporter |
Cómo se traduce Cypress a Probara
Sección titulada «Cómo se traduce Cypress a Probara»| Cypress | En Probara |
|---|---|
| Una prueba | Un caso de prueba, encontrado por su clave de automatización o vinculado por un ID de caso |
Cada intento (también los retries de Cypress) | Un resultado en la ejecución, con su estado, su duración, su hora de inicio y su error |
it.skip, this.skip(), una prueba que un hook fallido impidió ejecutar | Un resultado omitido |
Un beforeEach o before que falla | Un resultado fallido con el nombre que le da Cypress, más las pruebas que detuvo |
Llamadas a probara.step() | Los pasos del resultado, anidados, con su estado, su duración y su error |
probara.attach(), captureOutput, la captura de un fallo | Archivos del resultado, o del paso en el que se adjuntaron |
probara.link(), probara.issue() | Enlaces del resultado |
Otras llamadas probara.* en la prueba | El título, la suite, las etiquetas, los campos y los pasos de un caso nuevo; parámetros del resultado |
| Una spec que Cypress no puede analizar, o que lanza un error al cargarse | Un resultado fallido, con el nombre que le da Cypress, para que nunca aparezca en verde |
El comando cypress run | Una ejecución automatizada, con el nombre del build de CI, cerrada al final |
Los mismos casos que la importación JUnit
Sección titulada «Los mismos casos que la importación JUnit»El reporter da a cada prueba la clave de automatización que le da probara import junit sobre el
informe del reporter junit integrado en Cypress o de
cypress-junit escrito con sus opciones por defecto: el
archivo de la spec relativo a la raíz del proyecto, después > entre espacios, y después los
títulos de los describe y el título del it unidos por espacios, sin los IDs de caso. Para estas
dos specs:
describe('Cart', () => { it('SHOP-12 adds an item', () => { cy.get('.add').click(); });
it('removes an item', () => { cy.get('.remove').click(); });});describe('Login', () => { it('logs in with a valid password', () => { cy.get('#submit').click(); });});el reporter envía:
[ { "automationKey": "cypress/e2e/cart.cy.js > Cart adds an item", "caseDisplayId": "SHOP-12", "status": "passed" }, { "automationKey": "cypress/e2e/cart.cy.js > Cart removes an item", "status": "passed" }, { "automationKey": "cypress/e2e/login.cy.js > Login logs in with a valid password", "status": "passed" }]Si tus informes JUnit se escribieron sin el atributo file de su suite raíz, define
keyIncludesFile: false: las claves omiten entonces el archivo de la spec, como esos informes. En
ambos casos, una prueba conserva su caso y su historial al cambiar
(migrar desde la importación JUnit).
Reportar nunca rompe tu ejecución de pruebas
Sección titulada «Reportar nunca rompe tu ejecución de pruebas»El reporter nunca lanza errores dentro de Cypress ni cambia su código de salida: una prueba fallida
hace fallar el comando, un problema al reportar no. Cada problema (un ajuste incorrecto, Probara
inalcanzable, un token rechazado) se registra, nunca con el token, y las pruebas conservan su
resultado. Las llamadas probara.* tampoco hacen fallar una prueba: una llamada que Probara no
puede usar se omite con una advertencia. No hay ninguna opción para hacer fallar el comando por un
error al reportar; para conservar lo que no se pudo enviar, define un
archivo de resultados.
Referencia
Sección titulada «Referencia»| Página | Qué cubre |
|---|---|
| Configuración | Los tres registros, cada opción, su variable, su tipo y su valor por defecto; red; modo interactivo |
| Vincular pruebas con casos | IDs de caso en títulos y describes, probara.id(), claves de automatización, it.only |
| Metadatos y enlaces | Título, suite, comentario, etiquetas, campos, parámetros, ignorar un intento; enlaces e incidencias |
| Pasos y adjuntos | probara.step(), probara.attach(), capturas, el vídeo, salida de consola, límites |
| Resultados y reintentos | Opciones de la ejecución, estados, hooks y specs rotas, reintentos, archivo de resultados, asignaciones |
| Selección de pruebas | runCasesOnly: ejecutar solo las pruebas de una ejecución de Probara |
| Sharding y proyectos | Una ejecución para todas las máquinas; varios proyectos de Probara |
| Proveedores de CI | GitHub Actions, GitLab CI, Jenkins, CircleCI, Azure Pipelines, Bitbucket Pipelines, Buildkite |
| Solución de problemas | Problemas y soluciones, cada línea que registra el reporter, depuración |
| Migración | Desde la importación JUnit, Qase, Allure Cypress y trcli de TestRail; actualizaciones |
Relacionado: Resumen de integraciones de CI · Reporter de Jest · Reporter de Playwright · Reporter de Vitest · CLI · Guía de la integración con Cypress · Código fuente en GitHub