Extension des Rapporteurs
WARNING
Il s'agit d'une API avancée. Si vous souhaitez simplement configurer les rapporteurs intégrés, veuillez consulter le guide "Rapporteurs".
Vous pouvez importer des rapporteurs depuis vitest/reporters
et les étendre pour créer vos propres rapporteurs personnalisés.
Extension des Rapporteurs Intégrés
En général, il n'est pas nécessaire de créer votre rapporteur à partir de zéro. vitest
est livré avec plusieurs rapporteurs par défaut que vous pouvez étendre.
import { DefaultReporter } from 'vitest/reporters';
export default class MyDefaultReporter extends DefaultReporter {
// implémenter la logique
}
Bien sûr, vous pouvez également créer votre rapporteur entièrement à partir de zéro. Il suffit d'étendre la classe BaseReporter
et d'implémenter les méthodes nécessaires.
Voici un exemple de rapporteur personnalisé :
import { BaseReporter } from 'vitest/reporters';
export default class CustomReporter extends BaseReporter {
onCollected() {
const files = this.ctx.state.getFiles(this.watchFilters);
this.reportTestSummary(files);
}
}
Ou implémentez l'interface Reporter
:
import type { Reporter } from 'vitest/node';
export default class CustomReporter implements Reporter {
onCollected() {
// imprimer quelque chose
}
}
Ensuite, vous pouvez utiliser votre rapporteur personnalisé dans le fichier vitest.config.ts
:
import { defineConfig } from 'vitest/config';
import CustomReporter from './custom-reporter.js';
export default defineConfig({
test: {
reporters: [new CustomReporter()],
},
});
Tâches Rapportées
Au lieu d'utiliser les tâches que les rapporteurs reçoivent directement, il est recommandé d'utiliser l'API des Tâches Rapportées.
Pour accéder à cette API, appelez 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) {
// notez que l'ancienne implémentation de tâche utilise "file" au lieu de "module"
const testModule = this.vitest.state.getReportedEntity(
file
) as TestModule;
for (const task of testModule.children) {
// ^?
console.log('finished', task.type, task.fullName);
}
}
}
}
Rapporteurs Exportés
vitest
inclut plusieurs rapporteurs intégrés que vous pouvez utiliser directement.
Rapporteurs intégrés :
BasicReporter
DefaultReporter
DotReporter
JsonReporter
VerboseReporter
TapReporter
JUnitReporter
TapFlatReporter
HangingProcessReporter
Rapporteurs Abstraits de Base :
BaseReporter
Rapporteurs d'interface :
Reporter