Skip to content
Vitest 3
Main Navigation Guía & APIConfiguraciónModo NavegadorAPI avanzada
3.2.0
2.1.9
1.6.1
0.34.6

Español

English
简体中文
繁體中文
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Español

English
简体中文
繁體中文
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Apariencia

Sidebar Navigation

API

Node API

API Avanzadas

API de Vitest

TestProject

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

API de Plugins

API del Runner

Reporteros

Metadatos de Tareas

Guía

Ejecución de Pruebas

Extensión de los Reporters

Pool Personalizado

Configuración de Vitest

Referencia de la API de prueba

En esta página

Reporteros ​

WARNING

Esta es una API avanzada. Si solo desea configurar los reporteros incorporados, consulte la guía "Reporteros".

Vitest tiene su propio ciclo de vida de ejecución de pruebas, representado por los siguientes métodos de reportero:

  • onInit
  • onTestRunStart
    • onTestModuleQueued
    • onTestModuleCollected
    • onTestModuleStart
      • onTestSuiteReady
        • onHookStart(beforeAll)
        • onHookEnd(beforeAll)
          • onTestCaseReady
            • onTestAnnotate 3.2.0+
            • onHookStart(beforeEach)
            • onHookEnd(beforeEach)
            • onHookStart(afterEach)
            • onHookEnd(afterEach)
          • onTestCaseResult
        • onHookStart(afterAll)
        • onHookEnd(afterAll)
      • onTestSuiteResult
    • onTestModuleEnd
  • onTestRunEnd

Las pruebas y suites dentro de un mismo módulo se reportarán en orden, a menos que hayan sido omitidas. Todas las pruebas omitidas se reportan al final de la suite/módulo.

Tenga en cuenta que, dado que los módulos de prueba pueden ejecutarse en paralelo, Vitest los reportará de forma paralela.

Esta guía enumera todos los métodos de reportero compatibles. Sin embargo, no olvide que en lugar de crear su propio reportero, puede extender uno existente:

ts
import { BaseReporter } from 'vitest/reporters';

export default class CustomReporter extends BaseReporter {
  onTestRunEnd(testModules, errors) {
    console.log(testModules.length, 'tests finished running');
    super.onTestRunEnd(testModules, errors);
  }
}

onInit ​

ts
function onInit(vitest: Vitest): Awaitable<void>;

Este método se invoca cuando Vitest se inicializa o arranca, pero antes de que las pruebas sean filtradas.

INFO

Internamente, este método se llama dentro de vitest.start, vitest.init o vitest.mergeReports. Si está utilizando la API programática, asegúrese de invocar cualquiera de ellos según sus necesidades antes de llamar a vitest.runTestSpecifications, por ejemplo. La CLI incorporada siempre ejecutará los métodos en el orden correcto.

Tenga en cuenta que también puede acceder a la instancia vitest desde los casos de prueba, suites y módulos de prueba a través de la propiedad project, pero también puede ser útil almacenar una referencia a vitest en este método.

Ejemplo
ts
import type { Reporter, TestSpecification, Vitest } from 'vitest/node';

class MyReporter implements Reporter {
  private vitest!: Vitest;

  onInit(vitest: Vitest) {
    this.vitest = vitest;
  }

  onTestRunStart(specifications: TestSpecification[]) {
    console.log(
      specifications.length,
      'archivos de prueba se ejecutarán en el directorio',
      this.vitest.config.root
    );
  }
}

export default new MyReporter();

onBrowserInit experimental ​

ts
function onBrowserInit(project: TestProject): Awaitable<void>;

Este método se invoca cuando se inicia la instancia del navegador. Recibe una instancia del proyecto para el cual se inicia el navegador. project.browser siempre estará definido cuando se llame a este método.

onTestRunStart ​

ts
function onTestRunStart(specifications: TestSpecification[]): Awaitable<void>;

Este método se invoca cuando ha comenzado una nueva ejecución de prueba. Recibe un array de especificaciones de prueba programadas para ejecutarse. Este array es de solo lectura y está disponible únicamente con fines informativos.

Si Vitest no encuentra ningún archivo de prueba para ejecutar, este evento se invocará con un array vacío, y luego se llamará a onTestRunEnd inmediatamente después.

Ejemplo
ts
import type { Reporter, TestSpecification } from 'vitest/node';

class MyReporter implements Reporter {
  onTestRunStart(specifications: TestSpecification[]) {
    console.log(specifications.length, 'archivos de prueba a ejecutar');
  }
}

export default new MyReporter();

AVISO DE DEPRECIACIÓN

Este método se añadió en Vitest 3, reemplazando a onPathsCollected y onSpecsCollected, ambos ahora deprecados.

onTestRunEnd ​

ts
function onTestRunEnd(
  testModules: ReadonlyArray<TestModule>,
  unhandledErrors: ReadonlyArray<SerializedError>,
  reason: TestRunEndReason
): Awaitable<void>;

Este método se invoca después de que todas las pruebas hayan terminado de ejecutarse y la cobertura haya fusionado todos los informes, si esta está habilitada. Tenga en cuenta que puede obtener la información de cobertura en el hook onCoverage.

Recibe una lista de módulos de prueba de solo lectura. Puede iterar sobre ella a través de la propiedad testModule.children para informar el estado y los errores, si los hubiera.

El segundo argumento es una lista de solo lectura de errores no manejados que Vitest no pudo atribuir a ninguna prueba. Estos pueden ocurrir fuera de la ejecución de la prueba debido a un error en un plugin, o dentro de la ejecución de la prueba como un efecto secundario de una función no esperada (por ejemplo, un tiempo de espera que lanzó un error después de que la prueba haya terminado de ejecutarse).

El tercer argumento indica por qué finalizó la ejecución de la prueba:

  • passed: la ejecución de la prueba finalizó normalmente y no hay errores
  • failed: la ejecución de la prueba tiene al menos un error (debido a un error de sintaxis durante la recopilación o un error real durante la ejecución de la prueba)
  • interrupted: la prueba fue interrumpida por la llamada a vitest.cancelCurrentRun o se presionó Ctrl+C en la terminal (tenga en cuenta que aún es posible tener pruebas fallidas en este caso)

Si Vitest no encuentra ningún archivo de prueba para ejecutar, este evento se invocará con arrays vacíos de módulos y errores, y el estado dependerá del valor de config.passWithNoTests.

Ejemplo
ts
import type {
  Reporter,
  SerializedError,
  TestModule,
  TestRunEndReason,
  TestSpecification,
} from 'vitest/node';

class MyReporter implements Reporter {
  onTestRunEnd(
    testModules: ReadonlyArray<TestModule>,
    unhandledErrors: ReadonlyArray<SerializedError>,
    reason: TestRunEndReason
  ) {
    if (reason === 'passed') {
      testModules.forEach(module => console.log(module.moduleId, 'se ejecutó correctamente'));
    } else if (reason === 'failed') {
      // note that this will skip possible errors in suites
      // you can get them from testSuite.errors()
      for (const testCase of testModules.children.allTests()) {
        if (testCase.result().state === 'failed') {
          console.log(
            testCase.fullName,
            'en el módulo',
            testCase.module.moduleId,
            'falló'
          );
          console.log(testCase.result().errors);
        }
      }
    } else {
      console.log('ejecución interrumpida, omitiendo informe');
    }
  }
}

export default new MyReporter();

AVISO DE DEPRECIACIÓN

Este método se añadió en Vitest 3, reemplazando a onFinished, que ahora está deprecado.

onCoverage ​

ts
function onCoverage(coverage: unknown): Awaitable<void>;

Este hook se invoca después de que los resultados de cobertura han sido procesados. Los reporteros del proveedor de cobertura se llaman después de este hook. Los tipos de coverage dependen del coverage.provider. Para los proveedores incorporados predeterminados de Vitest, puede importar los tipos del paquete istanbul-lib-coverage:

ts
import type { CoverageMap } from 'istanbul-lib-coverage';

declare function onCoverage(coverage: CoverageMap): Awaitable<void>;

Si Vitest no realiza ninguna cobertura, este hook no se invoca.

onTestModuleQueued ​

ts
function onTestModuleQueued(testModule: TestModule): Awaitable<void>;

Este método se invoca justo antes de que Vitest importe el archivo de configuración y el propio módulo de prueba. Esto significa que testModule aún no tendrá children, pero puede comenzar a reportarlo como la próxima prueba a ejecutar.

onTestModuleCollected ​

ts
function onTestModuleCollected(testModule: TestModule): Awaitable<void>;

Este método se invoca cuando todas las pruebas dentro del archivo han sido recolectadas, lo que significa que la colección testModule.children está poblada, pero las pruebas aún no tienen ningún resultado.

onTestModuleStart ​

ts
function onTestModuleStart(testModule: TestModule): Awaitable<void>;

Este método se invoca justo después de onTestModuleCollected, a menos que Vitest se ejecute en modo de recolección (vitest.collect() o vitest collect en la CLI); en este caso, no se llamará en absoluto porque no hay pruebas que ejecutar.

onTestModuleEnd ​

ts
function onTestModuleEnd(testModule: TestModule): Awaitable<void>;

Este método se invoca cuando cada prueba en el módulo ha terminado de ejecutarse. Esto significa que cada prueba dentro de testModule.children tendrá un test.result() que no será igual a pending.

onHookStart ​

ts
function onHookStart(context: ReportedHookContext): Awaitable<void>;

Este método se invoca cuando cualquiera de los siguientes hooks ha comenzado a ejecutarse:

  • beforeAll
  • afterAll
  • beforeEach
  • afterEach

Si beforeAll o afterAll se inician, la entity será TestSuite o TestModule.

Si beforeEach o afterEach se inician, la entity siempre será TestCase.

WARNING

El método onHookStart no se invocará si el hook no se ejecutó durante la ejecución de la prueba.

onHookEnd ​

ts
function onHookEnd(context: ReportedHookContext): Awaitable<void>;

Este método se invoca cuando cualquiera de los siguientes hooks ha terminado de ejecutarse:

  • beforeAll
  • afterAll
  • beforeEach
  • afterEach

Si beforeAll o afterAll han terminado, la entity será TestSuite o TestModule.

Si beforeEach o afterEach han terminado, la entity siempre será TestCase.

WARNING

El método onHookEnd no se invocará si el hook no se ejecutó durante la ejecución de la prueba.

onTestSuiteReady ​

ts
function onTestSuiteReady(testSuite: TestSuite): Awaitable<void>;

Este método se invoca antes de que la suite comience a ejecutar sus pruebas. Este método también se invoca si la suite es omitida.

Si el archivo no tiene ninguna suite, este método no se invocará. Considere usar onTestModuleStart para cubrir este caso.

onTestSuiteResult ​

ts
function onTestSuiteResult(testSuite: TestSuite): Awaitable<void>;

Este método se invoca después de que la suite ha terminado de ejecutar las pruebas. Este método también se invoca si la suite es omitida.

Si el archivo no tiene ninguna suite, este método no se invocará. Considere usar onTestModuleEnd para cubrir este caso.

onTestCaseReady ​

ts
function onTestCaseReady(testCase: TestCase): Awaitable<void>;

Este método se invoca antes de que la prueba comience a ejecutarse o si es omitida. Tenga en cuenta que los hooks beforeEach y afterEach se consideran parte de la prueba porque pueden influir en el resultado.

WARNING

Tenga en cuenta que es posible que testCase.result() ya tenga el estado passed o failed cuando se invoca onTestCaseReady. Esto puede ocurrir si la prueba se ejecuta demasiado rápido y tanto onTestCaseReady como onTestCaseResult son programados para ejecutarse en la misma microtarea.

onTestCaseResult ​

ts
function onTestCaseResult(testCase: TestCase): Awaitable<void>;

Este método se invoca cuando la prueba ha terminado de ejecutarse o simplemente es omitida. Tenga en cuenta que esto se llamará después de que el hook afterEach haya terminado, si los hubiera.

En este punto, testCase.result() tendrá un estado definido.

onTestAnnotate 3.2.0+ ​

ts
function onTestAnnotate(
  testCase: TestCase,
  annotation: TestAnnotation
): Awaitable<void>;

El hook onTestAnnotate está asociado con el método context.annotate. Cuando se invoca annotate, Vitest lo serializa y envía el mismo adjunto al hilo principal donde el reportero puede interactuar con él.

Si se especifica la ruta, Vitest la almacena en un directorio separado (configurado por attachmentsDir) y modifica la propiedad path para referenciarla.

Pager
AnteriorAPI del Runner
SiguienteMetadatos de Tareas

Publicado bajo la licencia MIT.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/advanced/api/reporters

Publicado bajo la licencia MIT.

Copyright (c) 2021-Present Vitest Team