Ir al contenido

Solución de problemas del reporter de Vitest

Cada entrada parte de lo que ves, y después explica por qué y qué hacer. El reporter escribe en stderr, en líneas [probara]; PROBARA_DEBUG=true añade cada petición. Sea cual sea el problema, el código de salida de Vitest sigue siendo el de las pruebas. La última sección recoge cada línea que registra el reporter.

Por qué. Sin un token y un proyecto, el reporter queda desactivado y en silencio, a propósito: las ejecuciones locales y los builds de forks no envían nada. Solo lo indica en debug:

$ PROBARA_DEBUG=true npx vitest run
[probara] Probara reporting is not configured: set PROBARA_API_TOKEN and PROBARA_PROJECT to enable it

Solución. Pasa al paso que ejecuta vitest el secreto PROBARA_API_TOKEN, y define el proyecto (projectId o PROBARA_PROJECT). Comprueba que el reporter está en los reporters de la configuración raíz que usa Vitest: --reporter en la línea de comandos sustituye los reporters de la configuración, así que vitest run --reporter=dot se ejecuta sin el reporter, y sin ninguna línea [probara].

El envío está desactivado: un problema de configuración

Sección titulada «El envío está desactivado: un problema de configuración»
$ PROBARA_RUN_ULID=R-12 npx vitest run
[probara] Probara reporting is off: PROBARA_RUN_ULID is not a ULID

Por qué. Un ajuste tiene un valor incorrecto, o solo está definido uno de los dos, el token o el proyecto. Cada problema se registra, nombrando la opción o la variable afectada (nunca su valor), y no se envía nada. Los más habituales: The API token is not set: pass apiToken or set PROBARA_API_TOKEN y The project is not set: pass projectId or set PROBARA_PROJECT.

Solución. Corrige el ajuste que nombra la línea (opciones).

$ npx vitest run
[probara] Sending 3 results of 3 tests (3 passed, 0 failed, 0 skipped, 0 blocked)
[probara] 3 results were not sent: Probara answered 401 unauthorized: <message from Probara>. No run was created or updated

Por qué. 401: el token es incorrecto, está revocado o es de otro Probara (baseUrl). 403: el token no puede reportar en ese proyecto, o la organización está en el plan Free (el envío de resultados desde CI necesita un plan de pago).

Solución. Crea un token de aplicación nuevo desde la tarjeta Vitest (primeros pasos) y actualiza el secreto; comprueba el ID del Proyecto; comprueba el plan de la organización.

La línea de error termina con The run R-4 was left open: <url>, o, si ni siquiera llegó el primer informe, con No run was created or updated. Tras los reintentos, el motivo dice algo como Could not send the report after 5 attempts: the last one timed out after 30000 ms.

Por qué. Un informe falló tras sus reintentos (Probara inalcanzable, un informe rechazado): los informes posteriores no se envían, y una ejecución que ya tiene resultados queda abierta, para que nada parezca completo cuando no lo está. La ejecución de una sesión watch y una ejecución reutilizada (run.ulid) quedan abiertas a propósito.

Solución. Define un archivo de resultados: lo que no se envió va ahí, con la ejecución a la que pertenece, y probara import results lo envía a esa ejecución y la cierra. Si no, cierra la ejecución a mano con npx @probara/cli run close --run-ulid <ulid>, y vuelve a ejecutar las pruebas.

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 reporter registra el motivo, no envía nada más, y las pruebas conservan su código de salida.

Por qué. Un job que envía no está en el needs del job final, así que el job final cerró la ejecución antes de que ese job enviara. O un job en paralelo cerró la ejecución al terminar porque no tenía PROBARA_CLOSE_RUN: false, y los jobs posteriores reciben el mismo error.

Solución. Mantén cada job que envía en el needs del job final, y define PROBARA_CLOSE_RUN: false en cada job en paralelo. La sección jobs en paralelo tiene el workflow completo.

$ PROBARA_CREATE_MISSING_CASES=false npx vitest run --no-file-parallelism
[probara] Sending 3 results of 3 tests (3 passed, 0 failed, 0 skipped, 0 blocked)
[probara] Recorded 1 result (0 new cases, 2 unmatched) in R-1 (closed): https://app.probara.net/projects/SHOP/runs/R-1
[probara] 2 results were not recorded (case_not_found): tests/cart.test.ts > cart > removes an item; tests/login.test.ts > login > logs in with a valid password

Por qué. Un resultado nombra un caso que no existe (una errata en un ID, un caso de otro proyecto), o no coincide con ningún caso mientras createMissingCases está desactivado. Probara registra los demás e indica cuáles se dejaron fuera, con el motivo.

Solución. Corrige el ID, crea el caso, o deja que el reporter cree los casos que faltan (el valor por defecto).

Por qué. Las claves de automatización cambiaron: se renombró o se movió una prueba, un describe o un archivo, vitest se ejecuta con otra raíz que antes (las claves son relativas a ella), cambió keyIncludesFile (qué cambia una clave), o una actualización de Vitest escribe de otra forma algunos títulos de test.each (de Vitest 4 a 5).

Solución. Nombra los casos en los títulos (vincular), para que un cambio de nombre los conserve. Define rootDir cuando vitest se ejecute desde directorios distintos. Antes de una refactorización o de una actualización, compara las claves.

Por qué. Vitest nunca lo ejecutó: --bail detuvo antes la ejecución, o la ejecución se interrumpió (Ctrl+C). No tiene ninguna prueba que reportar, y una advertencia cuenta esos archivos: Vitest did not run 1 test file of this run: nothing of it is reported. Un archivo que Vitest ejecutó pero no pudo cargar sí se reporta: un resultado fallido con el nombre del archivo (errores fuera de una prueba).

Solución. Vuelve a ejecutar las pruebas sin --bail, o deja que la ejecución termine. Las pruebas que Vitest dejó en espera en un archivo que había empezado se envían como omitidas, con la nota Not run: the test run was interrupted (estados).

Solo se envió el último intento de una prueba reintentada

Sección titulada «Solo se envió el último intento de una prueba reintentada»

Por qué. El archivo de setup del reporter no se ejecutó en esas pruebas, así que sus intentos anteriores no dejaron registro, y una advertencia dice cuántas: Vitest retried or repeated 1 test whose earlier attempts were not recorded: only its final attempt is reported. O bien un shard se ejecutó con --reporter=blob solo en la línea de comandos, que sustituye los reporters de la configuración, o el reporter no pudo añadir su archivo de setup a un proyecto (una advertencia al empezar nombra el proyecto).

Solución. Nombra el reporter junto a blob en la línea de comandos de los shards, --reporter=blob --reporter=@probara/vitest-reporter (el reporter va junto a blob).

Un helper advierte que solo funciona mientras corre una prueba

Sección titulada «Un helper advierte que solo funciona mientras corre una prueba»

Por qué. Se llamó a un helper probara.* fuera de una prueba: al principio de un archivo, en el cuerpo de un describe, en beforeAll o en afterAll. No se registra nada, y la prueba continúa. La advertencia está en la salida del archivo de prueba (stderr | tests/...), una vez por helper y archivo.

Solución. Llámalo en la prueba, en beforeEach, en afterEach o en onTestFinished (dónde llamar a los helpers).

VesPor qué, y qué hacer
probara.<helper>() is dropped in a concurrent test: this worker cannot tell which test calls it without the reporter's runnerUna prueba test.concurrent donde no se ejecuta el runner del reporter: en modo navegador, o con un runner propio que Node no puede importar. Haz la prueba secuencial, o escribe el runner en JavaScript
the runner of project "<name>" is <path>, which Node does not import: the reporter keeps it as it isEl runner propio del proyecto es un archivo que el import() de Node no puede cargar (.jsx, .tsx): el reporter lo deja tal cual. Los intentos se siguen registrando; las llamadas de sus pruebas test.concurrent se descartan. Escribe el runner en .js o .mjs
the runner of project "<name>" is TypeScript, which this Node cannot import: the reporter keeps it as it isLo mismo, para un runner .ts en un Node que no puede ejecutar TypeScript por sí mismo. Usa un Node más reciente, o escribe el runner en JavaScript
the probara.* helpers cannot see the running test: <reason>Falló en ese worker la forma que tiene Vitest de nombrar la prueba en curso (un Vitest que el reporter aún no conoce): sus llamadas a los helpers se descartan. Repórtalo, con la versión de Vitest
probara.<helper>() could not be recorded: <reason>El helper falló por dentro, y la llamada se ignora. Repórtalo
Ninguna advertencia, y nada registradoEl reporter no está entre los reporters de la ejecución (--reporter en la línea de comandos): cada helper no hace nada, y probara.step() sigue ejecutando su cuerpo

Por qué. Con runCasesOnly, el reporter no pudo saber qué pruebas pertenecen a la ejecución, así que todas las pruebas se ejecutaron y se reportaron, en lugar de ninguna. Una advertencia dice por qué: no hay PROBARA_RUN_ULID, no se pudieron leer los casos de la ejecución (un ULID incorrecto, un token de otra organización), un proyecto de navegador, o un shard que escribe un blob.

Solución. Sigue lo que dice la advertencia (cuando no puede seleccionar). Si en cambio se omitieron todas las pruebas, ninguna pertenece a la ejecución: comprueba el ULID, y que las pruebas nombran los casos de la ejecución o tienen sus claves.

Por qué. captureOutput está desactivado (el valor por defecto), o la salida es de un tipo que deja fuera: una prueba test.concurrent (una advertencia las cuenta), salida escrita fuera de una prueba (el código del propio archivo, un beforeAll o un afterAll), o una prueba reintentada cuyos intentos no se registraron (salida de consola).

Solución. Activa captureOutput, y escribe con console dentro de la prueba, de un beforeEach o de un afterEach, en una prueba que no sea test.concurrent.

Por qué. El registro nombra cada archivo que dejó fuera, y por qué: el archivo no existía cuando se ejecutó probara.attach() (se copia en ese momento), es una carpeta o pesa más de 32 MiB, una imagen de más de 10 MiB o de 8192 px, un tipo de contenido rechazado, más de 20 archivos en un resultado, o, en una fusión, una copia que nombra el blob y que no llegó con el attachmentsDir (límites). Un archivo adjuntado dentro de un paso va a ese paso, no al resultado.

Solución. Adjunta un archivo que exista cuando llamas a probara.attach(), espera la llamada con await, mantén los archivos dentro de los límites, y lleva el attachmentsDir con los blobs (dónde se guardan las copias).

VesPor qué, y qué hacer
probara.attach() did not attach "<name>": Vite does not serve "<file>" (server.fs.allow or server.fs.deny)El archivo está fuera de las carpetas que sirve Vite, o Vite lo deniega. Adjunta un archivo dentro del proyecto, o un cuerpo (probara.attach() en un navegador)
probara.attach() did not attach "<name>": Vite's file rules are not reachable from this run, so "<file>" is not servedEl reporter no pudo cargar el Vite con el que se ejecuta el Vitest del proyecto, así que no lee ninguna ruta. Adjunta un cuerpo, y repórtalo
probara.attach() "<name>" of "<test>" settled after the test ended, so it is not attached. Await probara.attach() before the test endsLa prueba no esperó la llamada: await probara.attach(...)
Vite <version> has no isFileLoadingAllowed (it arrived in 5.4): the browser attach follows its isFileServingAllowedUn aviso, una vez por proceso: Vite 5.0 a 5.3 tienen una comprobación de archivos más antigua, que es la que decide. Actualiza Vite a 5.4 o posterior para tener sus reglas actuales
Vite <version> exports neither isFileLoadingAllowed nor isFileServingAllowed: the browser attach refuses every pathUn aviso, una vez por proceso: ese Vite no tiene comprobación de archivos, así que no se lee ninguna ruta. Adjunta cuerpos, o actualiza Vite
runCasesOnly does not apply in browser mode yet: the tests of project "<name>" run and are reportedLa selección de pruebas aún no está disponible en modo navegador: todas las pruebas del proyecto se ejecutan y se reportan
could not add the browser setup file to project "<name>" (<reason>): ...Ese proyecto no registra ningún intento ni ninguna llamada a los helpers. Repórtalo, con la versión de Vitest
could not add the browser commands to project "<name>" (<reason>): ..., could not give the browser commands to project "<name>": <reason>probara.attach() no copia ningún archivo en ese proyecto. Repórtalo, con la versión de Vitest

Sharded run with the blob reporter: the results are reported by vitest --merge-reports es lo esperado: un shard que escribe un blob no envía nada, para que ningún resultado se envíe dos veces. Ejecuta vitest --merge-reports con el reporter en su configuración: esa ejecución reporta todos los shards (patrón 1). Un shard con --reporter=blob solo en la línea de comandos se ejecuta sin el reporter, y no registra nada.

Por qué. Los errores que no pertenecen a ninguna prueba (una promesa que ninguna prueba esperó, un error lanzado desde un temporizador) no son resultados. Vitest hace fallar la ejecución por ellos; Probara no recibe ningún resultado, porque no falló ninguna prueba, y una advertencia los cuenta (errores fuera de una prueba): Vitest reported 2 unhandled errors outside the tests: they are not results, and nothing is sent for them.

Solución. Corrige el código: la salida de Vitest, encima de las líneas [probara], muestra el error completo.

Probara responde 429 (demasiadas peticiones)

Sección titulada «Probara responde 429 (demasiadas peticiones)»

Por qué. El límite de peticiones de la organización (60 peticiones por minuto en Free, 1.200 en Pro y 3.000 en Enterprise) lo comparten todos los tokens y pipelines. Los adjuntos cuestan dos peticiones por resultado (límite de peticiones).

Solución. El reporter espera y reintenta por sí solo. En baterías grandes, adjunta menos, reduce attachmentConcurrency, o reparte en el tiempo los pipelines con sharding.

El reporter escribe solo en stderr, a través del propio logger de Vitest, con cada línea precedida de [probara]. Stdout sigue siendo de Vitest: un reporter que imprime JSON ahí (--reporter=json) nunca recibe una línea del reporter. Una ejecución que reporta registra dos líneas:

$ npx vitest run
[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
LíneaQué dice
Sending N results of M tests (...)Antes de enviar nada: un resultado por intento y caso, por estado después de statusMapping, y lo que se dejó fuera
Recorded N results (...) in R-1Por ejecución: lo que registró Probara, los casos que creó, los resultados que no pudo asociar, y el enlace
N results were not recorded (...)Los resultados no asociados, por motivo, con sus casos o claves
Attached N files to results (...)Subidas: adjuntadas, omitidas y fallidas
N results were not sent: ...Un informe fallido: el motivo, y la ejecución que quedó abierta
Wrote ... to <file>Lo que fue al archivo de resultados
Ran only the tests of run <ULID>: ...Selección de pruebas: cuántas pruebas coincidieron con los casos de la ejecución, y cuántas se omitieron y se dejaron fuera
Watch mode: every re-run reports into R-1 of SHOP, ...Modo watch: la única ejecución de la sesión, que queda abierta, y el comando que la cierra
Sharded run with the blob reporter: ...Un shard que escribe un blob: no envía nada, y vitest --merge-reports reporta sus resultados
Probara reporting is off: ...Un problema de configuración: no se envía nada (el envío está desactivado)

Una advertencia que se repetiría se registra una vez, la primera; con PROBARA_DEBUG, el registro del reporter muestra también las repeticiones. Su origen decide dónde aparece y cómo termina:

Advertencia sobreSe registra
Una llamada o un archivo de una prueba, o las pruebas de la ejecuciónUna vez por ejecución, terminando en (first seen in the run; repeats are logged at debug)
Un resultado al enviarse (un adjunto omitido, un paso descartado)Una vez por ejecución, terminando en (first seen in "<test>"...; repeats are logged at debug)
Una llamada probara.* donde no corre ninguna prueba, o que ninguna prueba puede reclamarEn la salida del archivo de prueba (stderr | tests/...), una vez por archivo
La configuración de la ejecución (una opción desconocida, un proyecto)Una vez, cuando arranca Vitest

Dos pruebas que adjuntan el mismo archivo inexistente, por ejemplo:

tests/checkout.test.ts
import { probara } from '@probara/vitest-reporter';
import { test } from 'vitest';
test('pays by card', async () => {
await probara.attach({ name: 'receipt', path: 'receipt.txt' });
});
test('pays by transfer', async () => {
await probara.attach({ name: 'receipt', path: 'receipt.txt' });
});
$ npx vitest run
[probara] probara.attach() did not attach "receipt": it does not exist (first seen in the run; repeats are logged at debug)
[probara] Sending 2 results of 2 tests (2 passed, 0 failed, 0 skipped, 0 blocked)
[probara] Recorded 2 results (2 new cases, 0 unmatched) in R-1 (closed): https://app.probara.net/projects/SHOP/runs/R-1

El token nunca aparece en ninguna línea, ni siquiera cuando la respuesta de Probara lo repite.

debug: true (PROBARA_DEBUG=true) añade una línea por cada petición y por cada intento de ella, las repeticiones de las advertencias, y dice por qué el envío está desactivado cuando lo está:

$ PROBARA_DEBUG=true npx vitest run
[probara] Sending 3 results of 3 tests (3 passed, 0 failed, 0 skipped, 0 blocked)
[probara] Sending report 4f8d2c1a-9b3e-4c5d-8e7f-0a1b2c3d4e5f (attempt 1 of 5)
[probara] Recorded 3 results (2 new cases, 0 unmatched) in R-1 (closed): https://app.probara.net/projects/SHOP/runs/R-1

El ID que sigue a report es la Idempotency-Key de la petición (idempotencia). Mantén debug desactivado en las ejecuciones normales: es muy detallado, aunque nunca registra el token ni los cuerpos.

El reporter no tiene un modo de simulación propio, pero un archivo de resultados cumple esa función: ejecuta las pruebas con el envío desactivado y un archivo de resultados, y deja que la CLI imprima lo que enviaría. No llega nada a Probara, y no hace falta token:

$ PROBARA_ENABLED=false PROBARA_PROJECT=SHOP PROBARA_RESULTS_FILE=probara-results.json npx vitest run --no-file-parallelism
[probara] Wrote 3 results to /work/shop/probara-results.json: send them with probara import results /work/shop/probara-results.json
$ npx @probara/cli import results probara-results.json --dry-run
passed SHOP-12 tests/cart.test.ts > cart > adds an item
passed - tests/cart.test.ts > cart > removes an item
passed - tests/login.test.ts > login > logs in with a valid password
Total: 3 results from 1 file (3 passed, 0 failed, 0 skipped, 0 blocked)

El primer comando escribe en stderr; la simulación imprime en stdout, una línea por resultado, en el orden en que se escribieron los resultados (--no-file-parallelism lo mantiene igual de una ejecución a otra): el estado, el caso (- si no se nombra ninguno) y la clave de automatización. --dry-run nunca toca el archivo; elimínalo después, o impórtalo de verdad (un archivo que se queda ahí hace que la siguiente ejecución escriba probara-results-2.json). --json imprime en cambio el documento completo, cada entrada tal como la recibiría Probara (probara import results).

Úsalo para comparar claves antes de una refactorización, de una actualización de Vitest o del reporter, o de un cambio de keyIncludesFile: escribe un archivo por ejecución, y compara las dos simulaciones con diff. Da a cada ejecución su propio nombre de archivo y empieza sin ellos: con un archivo ya en esa ruta, una ejecución escribe en un hermano (before-2.json) y la simulación de before.json mostraría una ejecución anterior, lo que ocultaría la diferencia.

Ventana de terminal
rm -f before.json after.json
PROBARA_ENABLED=false PROBARA_PROJECT=SHOP PROBARA_RESULTS_FILE=before.json npx vitest run --no-file-parallelism
# Change the code, or upgrade Vitest or the reporter, then:
PROBARA_ENABLED=false PROBARA_PROJECT=SHOP PROBARA_RESULTS_FILE=after.json npx vitest run --no-file-parallelism
npx @probara/cli import results before.json --dry-run > before.txt
npx @probara/cli import results after.json --dry-run > after.txt
diff before.txt after.txt

Cualquier línea que cambió es una prueba cuya clave o vínculo con un caso cambió: recibiría un caso nuevo.

Lo que el reporter nunca le hace a la ejecución

Sección titulada «Lo que el reporter nunca le hace a la ejecución»
  • Nunca hace fallar la ejecución. Cualquier cosa que salga mal al reportar es una línea [probara], y el código de salida de vitest es el que dan las pruebas: un informe fallido o un token rechazado lo dejan como está.
  • Nunca cambia el resultado de una prueba. El archivo de setup que añade el reporter registra cada intento sin lanzar errores dentro de la prueba, y una llamada probara.* que no se puede registrar es una advertencia, nunca un error de la prueba. Las únicas pruebas que omite son las que quedan fuera de la ejecución de runCasesOnly, cuando lo activas.
  • Nunca escribe en stdout, así que un reporter que imprime ahí mantiene limpia su salida.

Cada línea [probara], tanto las del propio reporter como las de la biblioteca de envío que comparte con los demás reporters de Probara y con la CLI. <...> representa lo que cambia. Una advertencia que puede repetirse termina con (first seen in the run; repeats are logged at debug), o nombra el resultado en el que se vio por primera vez, y después se registra solo en debug. Dónde es el registro del reporter en stderr (registro), o la salida del archivo de prueba, que Vitest imprime bajo stderr | tests/... (salida de la prueba). El token nunca aparece en ninguna línea, ni siquiera cuando la respuesta de Probara lo repite.

LíneaNivelQué hacer
Probara reporting is not configured: set PROBARA_API_TOKEN and PROBARA_PROJECT to enable itdebugNo se reporta nada
Probara reporting is disabled by PROBARA_ENABLED (o by the enabled option)debugEl envío se desactivó a propósito
Probara reporting is off: <problem>errorUn problema de configuración
Probara reporting is off: options must be an objecterrorPasa las opciones como un objeto: ['@probara/vitest-reporter', { projectId: 'SHOP' }]
Ignored the unknown option "<name>" of @probara/vitest-reporterwarnUna errata en el nombre de una opción (opciones)
Ignored <options>: a reused run (run.ulid) keeps its ownwarnUna ejecución reutilizada conserva su nombre y sus ajustes (una ejecución existente)
Truncated the run name to 200 characters, Truncated the run description to 2000 characterswarnAcórtalos
Dropped <n> run tags beyond the limit of 50warnEnvía menos etiquetas de ejecución
Ignored source.<field>: it must be a string, Ignored a blank source branch, Ignored a source <field> ...warnCorrige el campo de source o su variable (origen de la ejecución)
Ignored the run of <code> in PROBARA_RUN_ULIDS: <code> is not the project nor one of projects (o run.ulids)warnLista el proyecto en projects, o quita su ejecución (varios proyectos)
The run of <code> is reused (...), but <codes> has no run in run.ulids: ...warnDa una ejecución a cada proyecto (jobs con sharding)
Sent <fields> with the run of <code> only: they belong to one project. ...warnCrea las ejecuciones de los otros proyectos con los suyos (una ejecución por proyecto)
could not register project "<name>": <reason>warnEse proyecto puede ejecutarse sin el archivo de setup del reporter. Repórtalo
could not add the setup file to project "<name>" (<reason>): its retries and repeats are reported as their final attempt onlywarnRepórtalo, con la versión de Vitest
could not give project "<name>" its attachments folder (<reason>): its files are not attachedwarnRepórtalo
the runner of project "<name>" is <path>, which Node does not import: the reporter keeps it as it iswarnSe descartó una llamada a un helper
the runner of project "<name>" is TypeScript, which this Node cannot import: the reporter keeps it as it iswarnSe descartó una llamada a un helper
could not wrap the runner of project "<name>" (<reason>): the reporter keeps it as it iswarnRepórtalo
LíneaNivelQué hacer
Sending <n> results of <m> tests (...), y después ; <k> left out by statusFilter, ; <k> ignored with probara.ignore() o ; <k> linked only to cases of unlisted projectsinfoLo que la ejecución entrega a Probara (el registro)
Recorded <n> results (<c> new cases, <u> unmatched) in R-1 (closed): <url>, in R-1 of <project> con varios proyectosinfoNada: la ejecución está en Probara
Filtered out <n> results by their status (statusFilter): not sentinfoFiltro de estados
<n> results were not recorded (<reason>): <cases or keys>warnResultados no registrados
<n> results were not sent: <reason>. No run was created or updated, ... The run R-1 was left open: <url>error401 o 403, quedó abierta
Probara warned: <warning>warnLee la advertencia de Probara, como el recuento de assignFailedTo
Did not send the results linked to cases of <code>: <code> is neither the project (<project>) nor one of projects (PROBARA_PROJECTS)warnQué va a dónde
<Request> attempt <n> of <m> got <status>; retrying in <ms> ms, ... timed out after <ms> ms; ..., ... failed: <error>; ...warnNada: la petición se reintenta (reintentos y backoff)
Sending <request> <id> (attempt <n> of <m>)debugPROBARA_DEBUG
The run R-1 was already closed or abortedinfoNada: alguien cerró la ejecución antes que el reporter
Could not close the run R-1: <reason>. It was left open: <url>errorCiérrala a mano: npx @probara/cli run close --run-ulid <ulid>
Wrote the <n> results that were not sent to <file>: send them with probara import results <file>warnArchivo de resultados
Wrote <n> results to <file>: send them with probara import results <file> (envío desactivado)infoEnvío desactivado: guardarlo todo
Could not write the results file <file>: <reason>errorComprueba que se puede escribir en la carpeta del archivo
Could not keep a copy of the attachment <name> (<path>) next to the results file (<code>): ...warnEl archivo apunta al original: impórtalo antes de que ese archivo desaparezca
LíneaNivelQué hacer
Watch mode: every re-run reports into R-1 of <project>, which stays open: close it in Probara, or with probara run close ...infoCierra la ejecución cuando termine la sesión (modo watch)
The run R-1 of <project> was closed: sent the <n> results of this re-run into a new run (o deleted)infoNada: la sesión continúa en la ejecución nueva
The run R-1 of <project> was closed: sent the <n> results it did not record into a new run; the rest of this re-run is in R-1infoNada: la nueva ejecución de las pruebas queda repartida entre las dos ejecuciones
The run R-1 of <project> was closed: the results file <file> keeps this re-run, but names R-1, which refuses it: send it with ...infoImporta el archivo a una ejecución abierta (cuando se cierra la ejecución)
Sharded run with the blob reporter: the results are reported by vitest --merge-reportsinfoUn shard no envía nada
LíneaNivelQué hacer
Ran only the tests of run <ULID>: <k> of <m> tests match its cases; <n> skipped and not reportedinfoNada (selección de pruebas)
No test matches the cases of the run <ULID>: every test was skipped, and none is reportedwarnComprueba el ULID (la selección ejecutó todas las pruebas)
runCasesOnly needs the run whose tests to run: set run.ulid or PROBARA_RUN_ULID. Every test runs and is reportedwarnDefine el ULID
runCasesOnly: could not read the cases of the run <ULID> (<reason>). Every test runs and is reportedwarnComprueba el ULID y el token
runCasesOnly does not apply to a sharded run with the blob reporter: every test runs, and vitest --merge-reports reports them allwarnConfiguraciones
runCasesOnly does not apply in browser mode yet: the tests of project "<name>" run and are reportedwarnModo navegador
runCasesOnly needs the setup file in project "<name>": its tests run and are reportedwarnNo se pudo añadir el archivo de setup a ese proyecto: repórtalo
could not give project "<name>" the cases of the run (<reason>): its tests all run and are reportedwarnRepórtalo, con la versión de Vitest

Se registran una vez por ejecución, salvo que Dónde indique la salida de la prueba.

LíneaDóndeQué hacer
probara.<helper>() only works while a test runs (in a test, or a beforeEach or afterEach hook)salida de la pruebaUn helper advierte
probara.<helper>() is dropped in a concurrent test: this worker cannot tell which test calls it without the reporter's runnersalida de la pruebaSe descartó una llamada a un helper
the probara.* helpers cannot see the running test: <reason>salida de la pruebaSe descartó una llamada a un helper
probara.id() takes a case id or a list of case ids, such as PRB-12, probara.title() takes a string, probara.suite() takes a suite title or a list of suite titles, probara.comment() takes a stringregistroUn argumento incorrecto: la llamada se ignora (metadatos)
probara.parameters() takes an object of strings, numbers or booleans, probara.fields() takes an object of strings, numbers or booleans, probara.tags() takes stringsregistroUn argumento incorrecto: la llamada se ignora (metadatos)
probara.link() takes an absolute http(s) URL of at most 2048 characters, probara.link() takes the name as a string, probara.issue() takes an issue id (a string), such as PRB-7registroUn argumento incorrecto: la llamada se ignora (enlaces e incidencias)
probara.<helper>() ignores blank <values>registroUna etiqueta, un ID o una suite vacíos: se dejan fuera
probara.<helper>() could not be recorded: <reason>registroRepórtalo
probara.step() takes an action (a string), probara.step() takes the expected result as a string, probara.step() takes the data as a string, probara.step() takes its options as an object ({ expected, data }), probara.step() takes a function as its bodyregistroCorrige la llamada (pasos)
Dropped the issues of probara.issue(): no issueUrlTemplate turns their ids into linksregistroDefine issueUrlTemplate (probara.issue())
Dropped a link without an absolute http(s) URL of at most 2048 charactersregistroPasa a probara.link() una URL http(s) absoluta (reglas de los enlaces)
Ignored malformed probara metadata (type "<type>")registroAlgo escribió en task.meta.probara, que es del reporter (cómo viajan los metadatos)

La advertencia de una llamada que no pertenece a ninguna prueba se imprime en la salida de la prueba, sea cual sea su texto.

LíneaNivelQué hacer
probara.attach() did not attach "<name>": it does not exist, it cannot be read, it is not a file, it is larger than 32 MiB, it cannot be copied (<code>)warnFalta un adjunto
probara.attach() takes { name, path } or { name, body }, probara.attach() could not attach "<name>": its contentType is not a string, ... it has neither a path nor a bodywarnCorrige la llamada (probara.attach())
probara.attach() could not attach "<name>": this run has no attachments folderwarnEl proyecto no recibió carpeta de adjuntos: una advertencia al empezar dice por qué
Attached <n> files to results (<s> skipped, <f> failed)infoNada; una advertencia cuando alguno falló
Skipped an attachment: <reason> (first seen in "<test>", <name>; ...)warnLímites
Skipped the attachments beyond the first 20 uploadable ones of a resultwarnAdjunta menos archivos por prueba
Could not attach <n> files to the result of "<test>": <reason>warnEl resultado se registra sin ellos; comprueba la red (red)
Skipped an annotate file "<name>": Vitest 3 loses some bytes of a binary body, so it cannot be sent intact; attach the file with a path insteadwarnAnotaciones de Vitest
<n> annotated files are left out: the attempt each belongs to cannot be told apartwarnSolo se envió el último intento
The console output of <n> tests are left out: Vitest attributes the writes of concurrent tests to the wrong test, ...warncaptureOutput no adjunta nada
[probara] The output of this test was cut here: an attachment holds at most 32 MiB—Una línea dentro de stdout.log o stderr.log, no del registro (límites de la salida)
LíneaNivelQué hacer
Vitest did not run <n> test files of this run: nothing of them are reportedwarnUn archivo de prueba no se reporta
Vitest retried or repeated <n> tests whose earlier attempts were not recorded: only their final attempts are reportedwarnSolo se envió el último intento
Vitest reported <n> unhandled errors outside the tests: they are not results, and nothing is sent for themwarnErrores no gestionados
LíneaNivelQué hacer
probara.attach() did not attach "<name>": Vite does not serve "<file>" (server.fs.allow or server.fs.deny)warnModo navegador
probara.attach() did not attach "<name>": Vite's file rules are not reachable from this run, so "<file>" is not servedwarnModo navegador
probara.attach() "<name>" of "<test>" settled after the test ended, so it is not attached. Await probara.attach() ...warnEspera la llamada (salida de la prueba)
Vite <version> has no isFileLoadingAllowed (it arrived in 5.4): the browser attach follows its isFileServingAllowedwarnModo navegador
Vite <version> exports neither isFileLoadingAllowed nor isFileServingAllowed: the browser attach refuses every pathwarnModo navegador
could not add the browser setup file to project "<name>" (<reason>): its retries and repeats are reported as their final attempt onlywarnRepórtalo, con la versión de Vitest
could not add the browser commands to project "<name>" (<reason>): its probara.attach() copies no filewarnRepórtalo, con la versión de Vitest
could not give the browser commands to project "<name>": <reason>warnRepórtalo, con la versión de Vitest

Los límites de Probara por resultado, cada uno una advertencia que nombra el primer resultado en el que se vio:

LíneaLímite
Dropped the steps beyond the first 200 of a result, Dropped the steps nested deeper than 10 levelsPasos de un resultado
Dropped the case steps beyond the first 500, Dropped a case step without an actionPasos de un caso creado
Dropped the parameters beyond the first 20 of a result, Truncated a parameter name longer than 100 charactersParámetros
Ignored a parameter with a blank name, Ignored a parameter whose name repeats another once trimmedParámetros
Dropped the case tags beyond the first 50Etiquetas de un caso creado
Dropped the case fields beyond the first 50, Ignored a case field whose name is longer than 200 charactersCampos de un caso creado
Ignored a case field with a blank name, Ignored a case field whose name repeats another once trimmed and compared ignoring caseCampos de un caso creado
Dropped the links beyond the first 20 of a result, Truncated a link name longer than 255 charactersEnlaces
Ignored a caseDisplayId longer than 64 charactersIDs de caso

Estas líneas indican que el reporter encontró algo que no esperaba. La ejecución continúa, y lo que nombra la línea se pierde (una prueba, un archivo, la salida de consola de una prueba) o queda como estaba (las copias de los archivos de la ejecución). Repórtalos en github.com/cynch-me/probara-sdk/issues, con las líneas [probara] de una ejecución con PROBARA_DEBUG=true y la versión de Vitest.

LíneaNivel
Probara reporting is off: the reporter could not start: <reason>error
Could not report <file>: <reason>, Could not report "<test>": <reason>, Could not report the failure of <name>: <reason>error
Could not finish reporting: <reason>, Could not read the cases of the run: <reason>, Could not keep the console output of a test: <reason>error
Could not remove the attachment copies of this run: <reason> (elimina <attachmentsDir>/probara/ a mano)error
Skipped the invalid result of "<test>": <reason>, Ignored results added after complete()warn
Ignored <a value> that is not <a type>, como Ignored steps that are not a list, e Ignored a blank caseDisplayIdwarn

Relacionado: Configuración · Red · Archivo de resultados · Fuente: troubleshooting.md, debugging.md