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:
// ./custom-reporter.ts
import { BaseReporter } from 'vitest/reporters'
export default class CustomReporter extends BaseReporter {
onCollected() {
const files = this.ctx.state.getFiles(this.watchFilters)
this.reportTestSummary(files)
}
}
Or implement the Reporter
interface:
// ./custom-reporter.ts
import { Reporter } from 'vitest/reporters'
export default class CustomReporter implements Reporter {
onCollected() {
// 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()],
},
})
vitest
comes with a few built-in reporters that you can use out of the box.
BasicReporter
DefaultReporter
DotReporter
JsonReporter
VerboseReporter
TapReporter
JUnitReporter
TapFlatReporter
HangingProcessReporter
BaseReporter
Reporter