Estendendo Relatores
WARNING
Esta é uma API avançada. Se você deseja apenas configurar os relatores integrados, consulte o guia "Relatores".
Você pode importar relatores de vitest/reporters
e estendê-los para criar seus relatores personalizados.
Estendendo Relatores Integrados
Geralmente, você não precisa criar seu relator do zero. O vitest
oferece vários relatores padrão que você pode estender.
import { DefaultReporter } from 'vitest/reporters';
export default class MyDefaultReporter extends DefaultReporter {
// faça algo
}
Alternativamente, você pode criar seu relator do zero. Basta estender a classe BaseReporter
e implementar os métodos necessários.
Aqui está um exemplo de um relator personalizado:
import { BaseReporter } from 'vitest/reporters';
export default class CustomReporter extends BaseReporter {
onCollected() {
const files = this.ctx.state.getFiles(this.watchFilters);
this.reportTestSummary(files);
}
}
Ou implemente a interface Reporter
:
import type { Reporter } from 'vitest/node';
export default class CustomReporter implements Reporter {
onCollected() {
// imprima algo
}
}
Em seguida, você pode usar seu relator personalizado no arquivo vitest.config.ts
:
import { defineConfig } from 'vitest/config';
import CustomReporter from './custom-reporter.js';
export default defineConfig({
test: {
reporters: [new CustomReporter()],
},
});
Tarefas Reportadas
Em vez de usar as tarefas que os relatores recebem diretamente, é recomendado usar a API de Tarefas Reportadas.
Você pode acessar esta API chamando 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) {
// observe que a implementação de tarefa anterior usava "file" em vez de "module"
const testModule = this.vitest.state.getReportedEntity(
file
) as TestModule;
for (const task of testModule.children) {
// ^?
console.log('finished', task.type, task.fullName);
}
}
}
}
Relatores Exportados
O vitest
inclui alguns relatores integrados que você pode usar prontos para uso.
Relatores Integrados:
BasicReporter
DefaultReporter
DotReporter
JsonReporter
VerboseReporter
TapReporter
JUnitReporter
TapFlatReporter
HangingProcessReporter
Relatores Abstratos Base:
BaseReporter
Relatores de Interface:
Reporter