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).
Qué obtienes
Sección titulada «Qué obtienes»- Un resultado por intento, incluidos los reintentos de
jest.retryTimes, con el veredicto del propio Jest: se respetatest.failing, ytest.skipytest.todose envían como omitidos. - Las mismas claves de automatización que
probara import junitsobre 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 conprobara.id(). - Helpers de prueba que funcionan en cada worker de Jest, tanto en
nodecomo enjsdom: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.
Antes de empezar
Sección titulada «Antes de empezar»| Necesitas | Por qué |
|---|---|
| Node.js 22.12 o posterior | El rango engines del paquete. |
| Jest 29.6 o posterior | El 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 Jest | Los 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 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 Jest.
- 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 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.
2. Instala el reporter
Sección titulada «2. Instala el reporter»npm install --save-dev @probara/jest-reporter3. Añádelo a la configuración de Jest
Sección titulada «3. Añádelo a la configuración de Jest»Añade el reporter después de default (el que lees en la terminal), con tu ID del Proyecto:
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:
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.
El archivo de setup
Sección titulada «El archivo de setup»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:
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.
4. Ejecuta tus pruebas con el token
Sección titulada «4. Ejecuta tus pruebas con el token»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.
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 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-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 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.
Cómo se traduce Jest a Probara
Sección titulada «Cómo se traduce Jest a Probara»| Jest | 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 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 omitido | Un 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 captureOutput | 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 |
Un archivo de prueba cuyo hook afterAll lanza un error | Un resultado fallido más, como lo escribe jest-junit |
El comando jest | Una 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.
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 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:
describe('cart', () => { test('SHOP-12 adds an item', () => { expect([1, 2]).toHaveLength(2); });
test('removes an item', () => { expect([1].filter((item) => item !== 1)).toEqual([]); });});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.
Referencia
Sección titulada «Referencia»| Página | Qué cubre |
|---|---|
| Configuración | Cada opción, su variable, su tipo y su valor por defecto; precedencia; red, proxies y modo watch |
| Vincular pruebas con casos | IDs de caso en títulos y describes, probara.id(), claves de automatización, test.each |
| Metadatos y enlaces | Título, suite, comentario, etiquetas, campos, parámetros, ignorar un intento; enlaces e incidencias |
| Pasos y adjuntos | probara.step(), probara.attach(), salida de consola, límites |
| Resultados y reintentos | Opciones de la ejecución, estados, reintentos, archivo de resultados, asignar resultados fallidos |
| Selección de pruebas | runCasesOnly: ejecutar solo las pruebas de una ejecución de Probara |
| Sharding y proyectos | Una ejecución para todos los shards; projects de Jest; 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, 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