Ir al contenido

Reporter de Jest

@probara/jest-reporter es un reporter de Jest que envía a Probara cada resultado de un comando jest: cada intento con su estado, su duración y su error, vinculado a su caso de prueba, con 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).

  • Un resultado por intento, incluidos los reintentos de jest.retryTimes, con el veredicto del propio Jest: se respeta test.failing, y test.skip y test.todo se envían como omitidos.
  • Las mismas claves de automatización que probara import junit sobre la salida de jest-junit, así que al dejar la importación JUnit conservas cada caso y su historial.
  • Vinculación por un ID de caso en el título de una prueba o de un describe (SHOP-12 adds an item) o con probara.id().
  • Helpers de prueba que funcionan en cada worker de Jest, tanto en node como en jsdom: 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 todos los shards de un job con sharding; una ejecución por sesión de --watch.
  • Nunca rompe tu ejecución de pruebas. Un problema al reportar se registra, nunca se lanza, y el código de salida de Jest sigue siendo el de las pruebas. Lo que no se pudo enviar puede guardarse en un archivo y enviarse más tarde.
NecesitasPor qué
Node.js 22.12 o posteriorEl rango engines del paquete.
Jest 29.6 o posteriorEl rango de peer: 29.6 es el primer Jest que avisa a un reporter cuando empieza cada prueba. Probado en 29.7 y en la última 30.
jest-circus, el test runner por defecto de JestLos helpers probara.* y el archivo de setup leen su estado. Con testRunner: 'jest-jasmine2' las pruebas se reportan, los helpers no.
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 ProbaraSolo los propietarios y administradores crean y revocan tokens de aplicación.
El ID del Proyecto al que enviar los resultadosPor ejemplo SHOP: una letra mayúscula y después mayúsculas o dígitos.

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.

  1. En Probara, abre Workspace › Integraciones y selecciona la tarjeta Jest.
  2. Abre la pestaña Tokens de acceso y selecciona Crear un token de aplicación.
  3. Escribe un Nombre del token con el nombre de lo que lo usa (el repositorio o el pipeline) y selecciona Crear token.
  4. 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 Jest cubre la tarjeta, cómo gestionar y revocar los tokens, y qué muestra Probara en las ejecuciones que crea un token de aplicación.

Ventana de terminal
npm install --save-dev @probara/jest-reporter

Añade el reporter después de default (el que lees en la terminal), con tu ID del Proyecto:

jest.config.js
module.exports = {
reporters: ['default', ['@probara/jest-reporter', { projectId: 'SHOP' }]],
};

Si tu configuración es un módulo ES (jest.config.mjs, o jest.config.js en un paquete con "type": "module"), exporta la misma entrada:

jest.config.mjs
export default {
reporters: ['default', ['@probara/jest-reporter', { projectId: 'SHOP' }]],
};

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.

Dos funciones necesitan actuar dentro de cada archivo de prueba, así que necesitan el archivo de setup del reporter: captureOutput (la salida de consola de cada prueba) y la selección de pruebas. Añádelo una vez; si esas funciones no están activadas, no hace nada:

jest.config.js
module.exports = {
reporters: ['default', ['@probara/jest-reporter', { projectId: 'SHOP' }]],
setupFilesAfterEnv: ['@probara/jest-reporter/setup'],
};

Todo lo demás, incluidos los helpers probara.*, funciona sin él.

Pasa el secreto al paso que ejecuta jest. En GitHub Actions:

- name: Run Jest tests
run: npx jest
env:
PROBARA_API_TOKEN: ${{ secrets.PROBARA_API_TOKEN }}

No hay un paso de subida aparte: el reporter envía los resultados al final del mismo comando. Proveedores de CI tiene pipelines completos para GitHub Actions, GitLab CI, Jenkins, CircleCI, Azure Pipelines, Bitbucket Pipelines y Buildkite.

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 stderr, en líneas [probara], y termina con el enlace a la ejecución:

$ npx jest
[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

En 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 Jest #42), su rama, su commit y la URL del build. Muestra la aplicación Jest y el nombre del token (por ejemplo Jest · unit-ci) en lugar de una persona.

JestEn Probara
Una pruebaUn caso de prueba, encontrado por su clave de automatización o vinculado por un ID de caso
Cada intento (también los reintentos de jest.retryTimes)Un resultado en la ejecución, con su estado, su duración, su hora de inicio y su error
test.skip, test.todo, un describe omitidoUn resultado omitido (Todo en las notas de un todo)
Llamadas a probara.step()Los pasos del resultado, anidados, con su estado, su duración y su error
probara.attach(), la consola con captureOutputArchivos del resultado, o del paso en el que se adjuntaron
probara.link(), probara.issue()Enlaces del resultado
Otras llamadas probara.* en la pruebaEl título, la suite, las etiquetas, los campos y los pasos de un caso nuevo; parámetros del resultado
Un archivo de prueba cuyo hook afterAll lanza un errorUn resultado fallido más, como lo escribe jest-junit
El comando jestUna ejecución automatizada, con el nombre del build de CI, cerrada al final

Un archivo de prueba que Jest no puede ejecutar (un error de sintaxis, una importación que falla) no tiene pruebas que reportar: el reporter lo nombra en una advertencia.

El reporter da a cada prueba la clave de automatización que le da probara import junit sobre el informe de jest-junit escrito con JEST_JUNIT_ADD_FILE_ATTRIBUTE=true: el archivo de prueba, después > entre espacios, y después los bloques describe y el título unidos por espacios, sin los IDs de caso. Para estos dos archivos de prueba:

tests/cart.test.js
describe('cart', () => {
test('SHOP-12 adds an item', () => {
expect([1, 2]).toHaveLength(2);
});
test('removes an item', () => {
expect([1].filter((item) => item !== 1)).toEqual([]);
});
});
tests/login.test.js
describe('login', () => {
test('logs in with a valid password', () => {
expect('secret').toHaveLength(6);
});
});

el reporter envía:

[
{
"automationKey": "tests/cart.test.js > cart adds an item",
"caseDisplayId": "SHOP-12",
"status": "passed"
},
{ "automationKey": "tests/cart.test.js > cart removes an item", "status": "passed" },
{
"automationKey": "tests/login.test.js > login logs in with a valid password",
"status": "passed"
}
]

Si tus informes de jest-junit no tenían el atributo de archivo (su valor por defecto), define keyIncludesFile: false: las claves omiten entonces el archivo, 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 Jest 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 en stderr, nunca con el token, y las pruebas conservan su resultado. Las llamadas probara.* tampoco lanzan errores dentro de 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.

PáginaQué cubre
ConfiguraciónCada opción, su variable, su tipo y su valor por defecto; precedencia; red, proxies y modo watch
Vincular pruebas con casosIDs de caso en títulos y describes, probara.id(), claves de automatización, test.each
Metadatos y enlacesTítulo, suite, comentario, etiquetas, campos, parámetros, ignorar un intento; enlaces e incidencias
Pasos y adjuntosprobara.step(), probara.attach(), salida de consola, límites
Resultados y reintentosOpciones de la ejecución, estados, reintentos, archivo de resultados, asignar resultados fallidos
Selección de pruebasrunCasesOnly: ejecutar solo las pruebas de una ejecución de Probara
Sharding y proyectosUna ejecución para todos los shards; projects de Jest; varios proyectos de Probara
Proveedores de CIGitHub Actions, GitLab CI, Jenkins, CircleCI, Azure Pipelines, Bitbucket Pipelines, Buildkite
Solución de problemasProblemas y soluciones, cada línea que registra el reporter, depuración
MigraciónDesde la importación JUnit, Qase, Test IT, ReportPortal, Allure y TestRail; actualizaciones

Relacionado: Resumen de integraciones de CI · Reporter de Playwright · Reporter de Cypress · Reporter de Vitest · CLI · Guía de la integración con Jest · Código fuente en GitHub