This is an advanced API. If you just want to configure built-in reporters, read the "Reporters" guide.
You can import reporters from vitest/reporters and extend them to create your custom reporters.
In general, you don't need to create your reporter from scratch. vitest comes with several default reporting programs that you can extend.
import { DefaultReporter } from 'vitest/reporters'
export default class MyDefaultReporter extends DefaultReporter {
// do something
}
Of course, you can create your reporter from scratch. Just extend the BaseReporter class and implement the methods you need.
And here is an example of a custom reporter:
import { BaseReporter } from 'vitest/reporters'
export default class CustomReporter extends BaseReporter {
onTestModuleCollected() {
const files = this.ctx.state.getFiles(this.watchFilters)
this.reportTestSummary(files)
}
}
Or implement the Reporter interface:
import type { Reporter } from 'vitest/node'
export default class CustomReporter implements Reporter {
onTestModuleCollected() {
// print something
}
}
Then you can use your custom reporter in the vitest.config.ts file:
import { defineConfig } from 'vitest/config'
import CustomReporter from './custom-reporter.js'
export default defineConfig({
test: {
reporters: [new CustomReporter()],
},
})
Instead of using the tasks that reporters receive, it is recommended to use the Reported Tasks API instead.
You can get access to this API by calling vitest.state.getReportedEntity(runnerTask):
import type { Reporter, TestModule } from 'vitest/node'
class MyReporter implements Reporter {
onTestRunEnd(testModules: ReadonlyArray<TestModule>) {
for (const testModule of testModules) {
for (const task of testModule.children) {
console.log('test run end', task.type, task.fullName)
}
}
}
}
vitest comes with a few built-in reporters that you can use out of the box.
DefaultReporterDotReporterJsonReporterVerboseReporterTapReporterJUnitReporterTapFlatReporterHangingProcessReporterTreeReporterBaseReporterReporter
© 2021-Present VoidZero Inc. and Vitest contributors
Licensed under the MIT License.
https://vitest.dev/guide/advanced/reporters