Selección de pruebas en Jest
Alguien crea una ejecución en Probara (los casos de una versión, de un plan de pruebas, los que
fallaron ayer) y el pipeline ejecuta exactamente esas pruebas. Con runCasesOnly, el reporter lee
los casos de la ejecución antes de que Jest empiece sus pruebas, Jest ejecuta solo las pruebas que
pertenecen a alguno de ellos, y sus resultados van a esa ejecución, que queda abierta.
Camino rápido
Sección titulada «Camino rápido»-
Añade una vez el archivo de setup del reporter a la configuración de Jest. Omite las pruebas que no son de ningún caso de la ejecución; sin las variables de abajo no hace nada.
jest.config.js module.exports = {reporters: ['default', ['@probara/jest-reporter', { projectId: 'SHOP' }]],setupFilesAfterEnv: ['@probara/jest-reporter/setup'],}; -
En el job que ejecuta las pruebas de una ejecución, define
PROBARA_RUN_CASES_ONLY=trueyPROBARA_RUN_ULIDcon el ULID de la ejecución. En Probara, abre la ejecución, selecciona Acciones de la ejecución (el menú de la cabecera de la ejecución) y elige Copiar ULID de la ejecución; la misma opción está en el menú de cada ejecución de la lista de ejecuciones. -
Revisa la ejecución en Probara: sus casos tienen los resultados, y la ejecución queda abierta para quien la creó.
$ PROBARA_RUN_CASES_ONLY=true PROBARA_RUN_ULID=01J9Z3K4M5N6P7Q8R9S0T1V2W3 npx jest[probara] Ran only the tests of run 01J9Z3K4M5N6P7Q8R9S0T1V2W3: 2 of 3 tests match its cases; 1 skipped and not reported[probara] Sending 2 results of 2 tests (2 passed, 0 failed, 0 skipped, 0 blocked)[probara] Recorded 2 results (0 new cases, 0 unmatched) in R-1 (open): https://app.probara.net/projects/SHOP/runs/R-1En GitHub Actions, un workflow que se inicia a mano con el ULID de la ejecución como input:
on: workflow_dispatch: inputs: run_ulid: description: The ULID of the Probara run to run the tests of required: true
jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: actions/setup-node@v5 with: node-version: 22 - run: npm ci - name: Run the tests of a Probara run run: npx jest env: PROBARA_API_TOKEN: ${{ secrets.PROBARA_API_TOKEN }} PROBARA_RUN_CASES_ONLY: 'true' PROBARA_RUN_ULID: ${{ inputs.run_ulid }}Actívalo por job, con las variables: runCasesOnly: true en la configuración de Jest lo activa en
todos los jobs, y un job sin ULID muestra entonces una advertencia y ejecuta todas las pruebas.
Qué pruebas pertenecen a la ejecución
Sección titulada «Qué pruebas pertenecen a la ejecución»Una prueba pertenece a la ejecución cuando se cumple una de estas condiciones, que se comprueba para cada prueba antes de ejecutarla:
| La prueba | Ejemplo |
|---|---|
| Su clave de automatización es la de uno de los casos de la ejecución | Un caso que creó el reporter o probara import junit |
Su título o el de uno de sus describe nombra uno de los casos de la ejecución | test('SHOP-12 adds an item'), describe('SHOP-12 cart') |
probara.id()no cuenta: se ejecuta con la prueba, después de la selección. Nombra el caso en un título (vincular).- Las claves son las del reporter: con el mismo
keyIncludesFiley el mismorootDirque el informe que vinculó los casos. También cuentan los IDs en los títulos de los proyectos deprojects. - Un caso de la ejecución sin prueba simplemente no recibe resultado: el registro solo cuenta las pruebas.
En el ejemplo de arriba, la ejecución tiene dos casos: SHOP-12, nombrado en el título de una prueba
del carrito, y SHOP-30, cuya clave es la de la prueba de login. La tercera prueba no pertenece a
ninguno, así que Jest la omite, y solo se envían las otras dos:
[ { "caseDisplayId": "SHOP-12", "automationKey": "tests/cart.test.js > cart adds an item" }, { "automationKey": "tests/login.test.js > login logs in with a valid password" }]Qué se reporta
Sección titulada «Qué se reporta»| Prueba | Se ejecuta | Se reporta |
|---|---|---|
| Pertenece a la ejecución | Sí | Sí, en la ejecución, con cada intento |
Pertenece a la ejecución, pero es test.skip, test.todo o un describe omitido | No | Sí, como omitida (un todo con la nota Todo) |
| No pertenece a ningún caso de la ejecución | No | No: el resumen de Jest la cuenta como omitida |
Las pruebas se omiten cuando Jest ya cargó su archivo, desde un hook beforeAll raíz que añade el
archivo de setup, así que un archivo sin ninguna prueba de la ejecución sigue ejecutando su ámbito de
módulo y sus hooks beforeAll y afterAll raíz (los hooks de un describe sin pruebas de la
ejecución se omiten con él). Cuando eso es costoso (una base de datos, un navegador), pasa también a
Jest un filtro de rutas que deje fuera esos archivos:
PROBARA_RUN_CASES_ONLY=true PROBARA_RUN_ULID=01J9Z3K4M5N6P7Q8R9S0T1V2W3 npx jest tests/cartCuando no puede seleccionar
Sección titulada «Cuando no puede seleccionar»La selección nunca rompe la ejecución de pruebas: cuando no puede saber qué pruebas pertenecen a la ejecución, todas las pruebas se ejecutan y se reportan, con una advertencia.
| Qué pasa | La advertencia |
|---|---|
No hay run.ulid ni PROBARA_RUN_ULID | runCasesOnly needs the run whose tests to run: set run.ulid or PROBARA_RUN_ULID. Every test runs and is reported |
| Los casos de la ejecución no se pueden leer (404, 403…) | runCasesOnly: could not read the cases of the run <ULID> (<why>). Every test runs and is reported |
| Un archivo de prueba se ejecutó sin el archivo de setup | runCasesOnly needs the setup file: add setupFilesAfterEnv: [...] to the Jest config. Every test of a file without it runs and is reported |
| El archivo de setup no pudo omitir pruebas en un archivo | runCasesOnly: the setup file could not skip the tests of a file that match no case of the run (<why>). ... |
| Ninguna prueba coincide con ningún caso de la ejecución | No test matches the cases of the run <ULID>: every test was skipped, and none is reported |
Los casos no se pueden leer, por ejemplo, cuando el token no puede leer esa ejecución:
$ PROBARA_RUN_CASES_ONLY=true PROBARA_RUN_ULID=01J9Z3K4M5N6P7Q8R9S0T1V2W3 npx jest[probara] runCasesOnly: could not read the cases of the run 01J9Z3K4M5N6P7Q8R9S0T1V2W3 (Probara answered 403 forbidden: <message from Probara>). Every test runs and is reported[probara] Sending 3 results of 3 tests (3 passed, 0 failed, 0 skipped, 0 blocked)[probara] Recorded 3 results (1 new case, 0 unmatched) in R-1 (open): https://app.probara.net/projects/SHOP/runs/R-1Una configuración sin el archivo de setup:
$ PROBARA_RUN_CASES_ONLY=true PROBARA_RUN_ULID=01J9Z3K4M5N6P7Q8R9S0T1V2W3 npx jest[probara] runCasesOnly needs the setup file: add setupFilesAfterEnv: ['@probara/jest-reporter/setup'] to the Jest config. Every test of a file without it runs and is reported (first seen in tests/cart.test.js; repeats are logged at debug)[probara] Sending 2 results of 2 tests (2 passed, 0 failed, 0 skipped, 0 blocked)[probara] Recorded 2 results (1 new case, 0 unmatched) in R-1 (open): https://app.probara.net/projects/SHOP/runs/R-1Una ejecución cuyos casos no nombra ni encuentra ninguna prueba:
$ PROBARA_RUN_CASES_ONLY=true PROBARA_RUN_ULID=01J9Z3K4M5N6P7Q8R9S0T1V2W3 npx jest[probara] No test matches the cases of the run 01J9Z3K4M5N6P7Q8R9S0T1V2W3: every test was skipped, and none is reportedEn ese caso no se envía nada, y la ejecución queda como estaba: comprueba que el ULID es el de la ejecución que querías.
El archivo de setup no puede omitir pruebas en un archivo cuando el archivo se ejecuta con otro test
runner distinto de jest-circus (testRunner: 'jest-jasmine2'), o cuando su selección falló. Ese
archivo ejecuta y reporta todas sus pruebas, y la línea Ran only lo deja fuera de su recuento.
Configuraciones
Sección titulada «Configuraciones»injectGlobals: falsefunciona: el archivo de setup toma los hooks de Jest de@jest/globals.projectsde Jest: pasa el archivo de setup a cada proyecto. Una prueba cuyo título contiene{displayName}se ejecuta en todos los proyectos (el archivo de setup no puede conocer el nombre del proyecto), y solo se reporta donde su nombre, con el del proyecto, pertenece a la ejecución; la líneaRan onlycuenta las demás aparte, comoran and not reported.- Shards (
--shard): cada shard lee los casos de la ejecución y ejecuta su parte de las pruebas seleccionadas. - Modo watch: los casos de la ejecución se vuelven a leer antes de cada repetición.
- Una petición más: leer los casos es una petición antes de que empiecen las pruebas, 200 casos por página (red). Es la única lectura que puede hacer un token de aplicación: el endpoint de claves de casos de una ejecución.
Relacionado: Configuración · Una ejecución existente · Solución de problemas · Fuente: run-selection.md