Extensión de los Reporters
WARNING
Esta es una API avanzada. Si solo necesitas configurar los reporters integrados, consulta la guía "Reporters".
Puedes importar reporters desde vitest/reporters
y extenderlos para crear tus reporters personalizados.
Extensión de los Reporters Integrados
En general, no es necesario crear tu reporter desde cero. vitest
incluye varios reporters predeterminados que puedes extender.
import { DefaultReporter } from 'vitest/reporters';
export default class MyDefaultReporter extends DefaultReporter {
// realizar alguna acción
}
Alternativamente, puedes crear tu reporter desde cero. Simplemente extiende la clase BaseReporter
e implementa los métodos que necesites.
A continuación, se presenta un ejemplo de un reporter personalizado:
import { BaseReporter } from 'vitest/reporters';
export default class CustomReporter extends BaseReporter {
onCollected() {
const files = this.ctx.state.getFiles(this.watchFilters);
this.reportTestSummary(files);
}
}
O implementa la interfaz Reporter
:
import type { Reporter } from 'vitest/node';
export default class CustomReporter implements Reporter {
onCollected() {
// mostrar información
}
}
Luego, puedes usar tu reporter personalizado en el archivo vitest.config.ts
:
import { defineConfig } from 'vitest/config';
import CustomReporter from './custom-reporter.js';
export default defineConfig({
test: {
reporters: [new CustomReporter()],
},
});
Tareas Reportadas
En lugar de utilizar las tareas que reciben los reporters directamente, se recomienda usar la API de Tareas Reportadas.
Puedes acceder a esta API llamando a vitest.state.getReportedEntity(runnerTask)
:
import type { Reporter, RunnerTestFile, TestModule, Vitest } from 'vitest/node';
class MyReporter implements Reporter {
private vitest!: Vitest;
onInit(vitest: Vitest) {
this.vitest = vitest;
}
onFinished(files: RunnerTestFile[]) {
for (const file of files) {
// Nota: la implementación anterior de la tarea usaba "file" en lugar de "module"
const testModule = this.vitest.state.getReportedEntity(
file
) as TestModule;
for (const task of testModule.children) {
// ^?
console.log('finished', task.type, task.fullName);
}
}
}
}
Reporters Exportados
vitest
incluye algunos reporters integrados que puedes usar directamente.
Reporters integrados:
BasicReporter
DefaultReporter
DotReporter
JsonReporter
VerboseReporter
TapReporter
JUnitReporter
TapFlatReporter
HangingProcessReporter
Reporters abstractos base:
BaseReporter
Reporters de interfaz:
Reporter