Ir al contenido

Solución de problemas

Cada mensaje que escribe el reporter empieza por [probara] y va a stderr. Léelos primero: dicen qué no se envió y por qué.

Failed to import formatter @probara/cucumber-reporter significa que cucumber-js no encuentra el paquete desde su propia instalación. Instala @probara/cucumber-reporter en el mismo proyecto que @cucumber/cucumber, para que ambos estén en el mismo node_modules. El formateador necesita @cucumber/cucumber 13.3 o posterior (13.3 es la versión probada).

Probara reporting is off indica la causa: falta el token o el proyecto, o una opción no es válida. Revisa PROBARA_API_TOKEN y PROBARA_PROJECT en el entorno del job (el token es un secreto: defínelo en la configuración de CI), o formatOptions.probara en cucumber.js. Un código de proyecto es una letra mayúscula, y después letras mayúsculas o dígitos.

Los resultados no llegan a los casos sincronizados

Sección titulada «Los resultados no llegan a los casos sincronizados»

Un resultado crea un caso cuando su clave no coincide con ningún caso. Revisa las tres partes de la clave:

  • La ruta es relativa a rootDir, que por defecto es el directorio desde donde corre cucumber-js. Ejecuta el reporter y probara sync gherkin desde el mismo directorio, o dales el mismo rootDir.
  • Los nombres de la Feature y del escenario son los nombres tal como están escritos, y un Rule: no está en la clave.
  • La sincronización se ejecutó después del último renombrado. Sincroniza en la rama principal antes de las pruebas.

--format @probara/cucumber-reporter no imprime nada en stdout a propósito: las líneas [probara] van a stderr. Para conservar la salida de progreso de cucumber, indica una ruta al formateador, como muestra la configuración.

Un escenario no tiene pasos, o falta un paso

Sección titulada «Un escenario no tiene pasos, o falta un paso»

Un escenario cuyo nombre está vacío, o cuyo archivo .feature no tiene Feature, no se envía, y la advertencia indica su archivo. Un paso escrito en otro idioma no tiene palabra clave: su acción se envía sin ella, y Probara solo lee palabras clave en inglés en la sincronización.

Una advertencia dice que una etiqueta se ignora

Sección titulada «Una advertencia dice que una etiqueta se ignora»

ignored the @probara tag "@probara:shop-3" significa que la etiqueta no es un identificador visible como SHOP-12. Usa el identificador visible del caso, con mayúsculas. Las etiquetas de otras herramientas no vinculan nada.

Una advertencia dice que una opción se ignora

Sección titulada «Una advertencia dice que una opción se ignora»

Ignored the unknown option "projectID" of @probara/cucumber-reporter significa que formatOptions.probara tiene un nombre que el reporter no acepta. La opción se omite y las demás siguen aplicándose. Los nombres distinguen mayúsculas: la opción es projectId, no projectID.

El resumen cuenta las subidas, las omisiones y los fallos. Un archivo se omite cuando está vacío, es demasiado grande, es una imagen que Probara rechaza, o supera los 20 archivos de un resultado. Define debug: true para registrar cada petición.

Una petición que sigue fallando tras sus reintentos se registra y se cuenta en el resumen, y la ejecución continúa. Revisa baseUrl, que debe ser la dirección de tu Probara, y cualquier proxy entre el job y ella. Para conservar los resultados que no se pudieron enviar, define un archivo de resultados.

cucumber-js --dry-run ejecuta el formateador sin ejecutar los pasos. cucumber-js no informa al formateador de que es un dry run, así que el reporter lo envía como cualquier ejecución: cada escenario se envía como omitido, salvo el que tiene un paso que coincide con dos definiciones, que queda fallido. Un escenario que no coincide con ningún caso crea uno, salvo que createMissingCases esté desactivado. Para que un dry run no llegue a Probara, desactiva el reporte solo para él: PROBARA_ENABLED=false npx cucumber-js --dry-run. No se envía nada y no se registra nada. Con un archivo de resultados definido, los resultados se escriben ahí igualmente.

Un job envía después de cerrarse su ejecución

Sección titulada «Un job envía después de cerrarse su ejecución»

En GitHub Actions los jobs de un mismo workflow comparten una ejecución, y un job final la cierra. Un job que envía después de ese cierre recibe 409 ci_run_closed (la ejecución ya estaba cerrada): el formateador registra el motivo, no envía nada más, y las pruebas conservan su código de salida. Un job en paralelo que no tiene PROBARA_CLOSE_RUN: false cierra la ejecución al terminar, y los jobs posteriores reciben el mismo error. Mantén cada job que envía en el needs del job final, y define PROBARA_CLOSE_RUN: false en cada job en paralelo (jobs en paralelo).

Define debug: true (o PROBARA_DEBUG=true) para registrar cada petición, sin el token. El reporte nunca cambia el código de salida de la ejecución: una ejecución fallida sale con su propio código, y una ejecución correcta sale con 0 aunque Probara no responda.