Reporter de Cucumber
@probara/cucumber-reporter es un formateador de Cucumber para cucumber-js. Envía
a Probara cada escenario de una ejecución al final de esta: cada intento con sus pasos, sus palabras clave y
sus datos, sus errores y sus adjuntos, identificado con la misma clave que el caso sincronizado del
escenario. Un escenario etiquetado con @probara:SHOP-12 llega a ese caso. 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 de probara-sdk.
Antes de la 1.0, una versión menor puede traer cambios incompatibles: fija la versión y lee el
changelog
antes de actualizar.
Sincroniza primero tus archivos .feature en la rama principal, para que Git tenga los casos. Después, el
reporter envía los resultados de las pruebas. Sincronizar archivos .feature desde Git
explica la sincronización.
Qué obtienes
Sección titulada «Qué obtienes»- Un resultado por intento. Un escenario reintentado con
--retryenvía cada intento, en orden. Cada fila de un esquema de escenario es un resultado propio, registrado en el caso de ejecución con los valores de la fila. - Cada paso, con su palabra clave (
Given,When,Then,And,Buto*, en inglés), su estado, su duración, su error y el Doc String o la Data Table que tuviera. Los pasos de Background van bajo un pasoBackground. - Adjuntos. Los archivos que un paso adjunta con
this.attach,this.logythis.linkse suben con su resultado. - Vinculación por la clave del escenario, construida como la construye
probara sync gherkin, o por una etiqueta@probara:<ID>. - Ejecuciones con el nombre de la compilación de CI, que se cierran al terminar.
- Nunca rompe tu ejecución de pruebas. Un problema al reportar se registra en stderr. El código de salida de la ejecución sigue siendo el de cucumber-js.
Lo que necesitas
Sección titulada «Lo que necesitas»| Lo que necesitas | Por qué |
|---|---|
| Node.js 22.12 o posterior | El rango engines del paquete. |
@cucumber/cucumber 13.3 o posterior (13.3 es la versión probada) | El formateador se carga desde la misma instalación que cucumber-js. |
| Un plan de pago (Pro o Enterprise, o cualquier prueba) | Reportar 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 de proyecto donde reportar | Como SHOP: una letra mayúscula, y después letras mayúsculas o dígitos. |
1. Crea un token de aplicación
Sección titulada «1. Crea un token de aplicación»El reporter inicia sesión con un token de aplicación: un token que pertenece a la organización, no a una persona. No consume un puesto y sigue funcionando cuando quien lo creó deja la organización.
- En Probara, abre Workspace › Integraciones y selecciona la tarjeta Cucumber.
- 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. Solo se muestra una vez: guárdalo enseguida como secreto de CI llamado
PROBARA_API_TOKEN.
La guía de la integración con Cucumber cubre la tarjeta, la gestión y la revocación de tokens, y lo que Probara muestra de las ejecuciones que crea un token de aplicación.
2. Instala el reporter
Sección titulada «2. Instala el reporter»Instálalo junto a cucumber-js, en el mismo proyecto:
npm install --save-dev @cucumber/cucumber @probara/cucumber-reporter3. Añádelo a cucumber.js
Sección titulada «3. Añádelo a cucumber.js»Añade el formateador a format, y tu ID de proyecto a formatOptions:
module.exports = { default: { format: ['@probara/cucumber-reporter'], formatOptions: { probara: { projectId: 'SHOP' } }, },};El formateador sustituye la salida de progreso de cucumber-js. Para conservarla, indica también una ruta de
archivo para el reporter: format: ['progress', '@probara/cucumber-reporter:reports/probara.txt']. La
página de configuración explica
por qué.
4. Ejecuta tus pruebas con el token
Sección titulada «4. Ejecuta tus pruebas con el token»Da al paso que ejecuta cucumber-js el secreto. En GitHub Actions:
- name: Ejecutar las pruebas de Cucumber run: npx cucumber-js env: PROBARA_API_TOKEN: ${{ secrets.PROBARA_API_TOKEN }}No hay un paso de envío aparte: el reporter envía los resultados al final de la ejecución, y la cierra
entonces. Proveedores de CI tiene pipelines completos
para GitHub Actions, GitLab CI, Jenkins, CircleCI, Azure Pipelines, Bitbucket Pipelines y Buildkite. En
ellos, la sincronización de los archivos .feature en la rama principal va antes de las pruebas.
Qué ves
Sección titulada «Qué ves»El reporter registra en stderr y no imprime nada en stdout. Al terminar la ejecución, registra cuántos resultados envía, a qué ejecución van y, si sube archivos, cuántos:
$ npx cucumber-js[probara] Sending 3 results of 3 tests (3 passed, 0 failed, 0 skipped, 0 blocked)[probara] Recorded 3 results (2 new cases, 0 unmatched) in R-1 (closed): https://app.probara.net/projects/SHOP/runs/R-1[probara] Attached 2 files to results (0 skipped, 0 failed)En Probara, la ejecución aparece en la lista de ejecuciones del proyecto como una ejecución automatizada, con
el nombre de la compilación de CI (o Automated run <fecha> fuera de CI), y con su rama, su commit y la URL
de la compilación. Muestra la aplicación Cucumber y el nombre del token (como Cucumber · e2e-ci) en
lugar de una persona.
Cómo se traduce Cucumber a Probara
Sección titulada «Cómo se traduce Cucumber a Probara»| Cucumber | En Probara |
|---|---|
| Un escenario, una vez por intento | Un resultado en el caso con su clave de automatización, o en el caso que nombra su etiqueta @probara:<ID> |
| Una fila de un esquema de escenario | Un resultado propio, registrado en el caso de ejecución con los valores de la fila |
| Un paso | Un paso del resultado, con su palabra clave, estado, duración, error y datos |
| Los pasos de Background | Un paso Background del resultado, con ellos anidados |
this.attach, this.log y this.link | Archivos del resultado, o del paso que los adjuntó |
Un hook Before o After que falla | El escenario falla, con el error del hook o The hook failed. El hook en sí no se envía |
| Un escenario que no coincide con ningún caso | Un caso nuevo, con el nombre del escenario, en la suite de suiteUlid (la raíz del proyecto por defecto) |
| La ejecución de cucumber-js | Una ejecución automatizada, con el nombre de la compilación de CI, que se cierra al final |
Los hooks no son pasos, así que nunca aparecen en la lista de pasos. La duración de cada hook sí cuenta en la duración de su escenario.
Reportar nunca rompe tu ejecución de pruebas
Sección titulada «Reportar nunca rompe tu ejecución de pruebas»El reporter nunca lanza errores a cucumber-js ni cambia su código de salida: un escenario que falla hace fallar el comando, y un problema al reportar no. Cada problema (una configuración incorrecta, Probara inaccesible, un token rechazado) se registra en stderr, nunca con el token. Para conservar lo que no se pudo enviar, configura un archivo de resultados.
Referencia
Sección titulada «Referencia»| Página | Qué cubre |
|---|---|
| Configuración | Cada opción, su variable, tipo y valor por defecto; precedencia; la salida; la red |
| Vincular casos de prueba | La clave de automatización, los esquemas de escenario, la etiqueta @probara:<ID> y los casos que no existen |
| Pasos y adjuntos | Los campos de los pasos, Background, hooks, Doc Strings y Data Tables, y los archivos que adjunta un escenario |
| Resultados y reintentos | Estados, reintentos, mapeo y filtro de estados, duraciones, archivo de resultados |
| Proveedores de CI | GitHub Actions, GitLab CI, Jenkins, CircleCI, Azure Pipelines, Bitbucket Pipelines, Buildkite |
| Solución de problemas | Cada mensaje que registra el reporter, y qué hacer con él |
| Migración y actualización | Desde probara import cucumber, desde el reporter de cucumber-js de Qase, y cómo actualizar |
Relacionado: Integraciones CI ·
CLI (sync gherkin, e import cucumber para los JSON de otras herramientas) ·
Guía de la integración con Cucumber ·
Sincronizar archivos .feature desde Git ·
Código fuente en GitHub