Расширение репортеров
WARNING
Это расширенный API. Если вы просто хотите настроить встроенные репортеры, прочитайте руководство "Репортеры".
Вы можете импортировать репортеры из vitest/reporters
и расширять их для создания собственных репортеров.
Расширение встроенных репортеров
В целом, вам не нужно создавать свой репортер с нуля. vitest
поставляется с несколькими встроенными репортерами по умолчанию, которые вы можете расширить.
import { DefaultReporter } from 'vitest/reporters';
export default class MyDefaultReporter extends DefaultReporter {
// do something
}
Конечно, вы можете создать свой репортер с нуля. Просто расширьте класс BaseReporter
и реализуйте необходимые методы.
Вот пример пользовательского репортера:
import { BaseReporter } from 'vitest/reporters';
export default class CustomReporter extends BaseReporter {
onCollected() {
const files = this.ctx.state.getFiles(this.watchFilters);
this.reportTestSummary(files);
}
}
Или реализуйте интерфейс Reporter
:
import type { Reporter } from 'vitest/node';
export default class CustomReporter implements Reporter {
onCollected() {
// print something
}
}
Затем вы можете использовать свой репортер в файле vitest.config.ts
:
import { defineConfig } from 'vitest/config';
import CustomReporter from './custom-reporter.js';
export default defineConfig({
test: {
reporters: [new CustomReporter()],
},
});
Задачи для отчетов
Вместо использования задач, получаемых репортерами, рекомендуется использовать API задач для отчетов.
Вы можете получить доступ к этому API, вызвав 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) {
// обратите внимание, что старая реализация задачи использует 'file', а не 'module'
const testModule = this.vitest.state.getReportedEntity(
file
) as TestModule;
for (const task of testModule.children) {
// ^?
console.log('finished', task.type, task.fullName);
}
}
}
}
Доступные репортеры
vitest
поставляется с несколькими встроенными репортерами, которые вы можете использовать сразу же.
Встроенные репортеры:
BasicReporter
DefaultReporter
DotReporter
JsonReporter
VerboseReporter
TapReporter
JUnitReporter
TapFlatReporter
HangingProcessReporter
Абстрактные базовые репортеры:
BaseReporter
Интерфейсы репортеров:
Reporter