Skip to content
Vitest 3
Main Navigation Guide & APIConfigurationMode NavigateurAPI avancée
3.2.0
2.1.9
1.6.1
0.34.6

Français

English
简体中文
繁體中文
Español
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Français

English
简体中文
繁體中文
Español
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Apparence

Sidebar Navigation

Introduction

Pourquoi Vitest

Démarrage

Fonctionnalités

Configuration de Vitest

API

Référence de l'API des Tests

Fonctions Mocks

vi

expect

expectTypeOf

assert

assertType

Guide

Interface en ligne de commande (CLI)

Filtrage des tests

Projets de Test

Rapporteurs

Couverture de code

Instantanés

Simulation

Parallélisme

Tests de type

Interface utilisateur de Vitest

Tests in-source

Contexte de test

Annotations de test

Environnement de Test

Étendre les Matchers

Intégrations IDE

Débogage

Erreurs courantes

Guide de migration

Migration vers Vitest 3.0

Migration depuis Jest

Performance

Analyse des performances des tests

Amélioration des performances

Mode Navigateur

API avancée

Comparaison avec d'autres exécuteurs de tests

Sur cette page

Rapporteurs ​

Vitest propose plusieurs rapporteurs intégrés pour afficher les résultats des tests dans différents formats, ainsi que la possibilité d'utiliser des rapporteurs personnalisés. Vous pouvez sélectionner différents rapporteurs soit en utilisant l'option de ligne de commande --reporter, soit en incluant une propriété reporters dans votre fichier de configuration. Si aucun rapporteur n'est spécifié, Vitest utilisera le rapporteur default comme décrit ci-dessous.

Utilisation des rapporteurs via la ligne de commande :

bash
npx vitest --reporter=verbose

Utilisation des rapporteurs via vitest.config.ts :

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    reporters: ['verbose'],
  },
});

Certains rapporteurs peuvent être personnalisés en leur passant des options supplémentaires. Les options spécifiques aux rapporteurs sont décrites dans les sections ci-dessous.

ts
export default defineConfig({
  test: {
    reporters: ['default', ['junit', { suiteName: 'UI tests' }]],
  },
});

Sortie des rapporteurs ​

Par défaut, les rapporteurs de Vitest affichent leur sortie dans le terminal. Lorsque vous utilisez les rapporteurs json, html ou junit, vous pouvez plutôt écrire les résultats de vos tests dans un fichier en incluant une option de configuration outputFile soit dans votre fichier de configuration Vite, soit via la CLI.

bash
npx vitest --reporter=json --outputFile=./test-output.json
ts
export default defineConfig({
  test: {
    reporters: ['json'],
    outputFile: './test-output.json',
  },
});

Combinaison de rapporteurs ​

Vous pouvez utiliser plusieurs rapporteurs simultanément pour afficher les résultats de vos tests dans différents formats. Par exemple :

bash
npx vitest --reporter=json --reporter=default
ts
export default defineConfig({
  test: {
    reporters: ['json', 'default'],
    outputFile: './test-output.json',
  },
});

L'exemple ci-dessus affichera les résultats des tests dans le terminal dans le style par défaut et les écrira au format JSON dans le fichier de sortie désigné.

Lorsque vous utilisez plusieurs rapporteurs, il est également possible de désigner plusieurs fichiers de sortie, comme suit :

ts
export default defineConfig({
  test: {
    reporters: ['junit', 'json', 'verbose'],
    outputFile: {
      junit: './junit-report.xml',
      json: './json-report.json',
    },
  },
});

Cet exemple écrira des rapports JSON et XML distincts et affichera un rapport détaillé dans le terminal.

Rapporteurs intégrés ​

Rapporteur par défaut ​

Par défaut (c'est-à-dire si aucun rapporteur n'est spécifié), Vitest affichera un résumé des tests en cours et de leur statut en bas. Une fois qu'une suite est réussie, son statut apparaîtra en haut du résumé.

Vous pouvez désactiver le résumé en configurant le rapporteur :

ts
export default defineConfig({
  test: {
    reporters: [['default', { summary: false }]],
  },
});

Exemple de sortie pour les tests en cours :

bash
 ✓ test/example-1.test.ts (5 tests | 1 skipped) 306ms
 ✓ test/example-2.test.ts (5 tests | 1 skipped) 307ms

 ❯ test/example-3.test.ts 3/5
 ❯ test/example-4.test.ts 1/5

 Test Files 2 passed (4)
      Tests 10 passed | 3 skipped (65)
   Start at 11:01:36
   Duration 2.00s

Sortie finale après la fin des tests :

bash
 ✓ test/example-1.test.ts (5 tests | 1 skipped) 306ms
 ✓ test/example-2.test.ts (5 tests | 1 skipped) 307ms
 ✓ test/example-3.test.ts (5 tests | 1 skipped) 307ms
 ✓ test/example-4.test.ts (5 tests | 1 skipped) 307ms

 Test Files  4 passed (4)
      Tests  16 passed | 4 skipped (20)
   Start at  12:34:32
   Duration  1.26s (transform 35ms, setup 1ms, collect 90ms, tests 1.47s, environment 0ms, prepare 267ms)

Rapporteur basique ​

Le rapporteur basic est équivalent au rapporteur default sans le summary.

bash
npx vitest --reporter=basic
ts
export default defineConfig({
  test: {
    reporters: ['basic'],
  },
});

Exemple de sortie utilisant le rapporteur basique :

bash
✓ __tests__/file1.test.ts (2) 725ms
✓ __tests__/file2.test.ts (2) 746ms

 Test Files  2 passed (2)
      Tests  4 passed (4)
   Start at  12:34:32
   Duration  1.26s (transform 35ms, setup 1ms, collect 90ms, tests 1.47s, environment 0ms, prepare 267ms)

Rapporteur détaillé ​

Le rapporteur détaillé est identique au rapporteur default, mais il affiche également chaque test individuel une fois la suite terminée. Il affiche également les tests en cours qui prennent plus de temps que slowTestThreshold. Comme pour le rapporteur default, vous pouvez désactiver le résumé en configurant le rapporteur.

bash
npx vitest --reporter=verbose
ts
export default defineConfig({
  test: {
    reporters: [['verbose', { summary: false }]],
  },
});

Exemple de sortie pour les tests en cours avec slowTestThreshold: 300 par défaut :

bash
 ✓ __tests__/example-1.test.ts (2) 725ms
   ✓ first test file (2) 725ms
     ✓ 2 + 2 should equal 4
     ✓ 4 - 2 should equal 2

 ❯ test/example-2.test.ts 3/5
   ↳ should run longer than three seconds 1.57s
 ❯ test/example-3.test.ts 1/5

 Test Files 2 passed (4)
      Tests 10 passed | 3 skipped (65)
   Start at 11:01:36
   Duration 2.00s

Exemple de sortie de terminal finale pour une suite de tests réussie :

bash
✓ __tests__/file1.test.ts (2) 725ms
   ✓ first test file (2) 725ms
     ✓ 2 + 2 should equal 4
     ✓ 4 - 2 should equal 2
✓ __tests__/file2.test.ts (2) 746ms
  ✓ second test file (2) 746ms
    ✓ 1 + 1 should equal 2
    ✓ 2 - 1 should equal 1

 Test Files  2 passed (2)
      Tests  4 passed (4)
   Start at  12:34:32
   Duration  1.26s (transform 35ms, setup 1ms, collect 90ms, tests 1.47s, environment 0ms, prepare 267ms)

Rapporteur par points ​

Affiche un seul point pour chaque test terminé afin de fournir une sortie minimale tout en montrant tous les tests qui ont été exécutés. Les détails ne sont fournis que pour les tests échoués, ainsi que le résumé du rapporteur basic pour la suite.

bash
npx vitest --reporter=dot
ts
export default defineConfig({
  test: {
    reporters: ['dot'],
  },
});

Exemple de sortie de terminal pour une suite de tests réussie :

bash
....

 Test Files  2 passed (2)
      Tests  4 passed (4)
   Start at  12:34:32
   Duration  1.26s (transform 35ms, setup 1ms, collect 90ms, tests 1.47s, environment 0ms, prepare 267ms)

Rapporteur JUnit ​

Génère un rapport des résultats des tests au format XML JUnit. Peut être affiché dans le terminal ou écrit dans un fichier XML à l'aide de l'option de configuration outputFile.

bash
npx vitest --reporter=junit
ts
export default defineConfig({
  test: {
    reporters: ['junit'],
  },
});

Exemple de rapport XML JUnit :

xml
<?xml version="1.0" encoding="UTF-8" ?>
<testsuites name="vitest tests" tests="2" failures="1" errors="0" time="0.503">
    <testsuite name="__tests__/test-file-1.test.ts" timestamp="2023-10-19T17:41:58.580Z" hostname="My-Computer.local" tests="2" failures="1" errors="0" skipped="0" time="0.013">
        <testcase classname="__tests__/test-file-1.test.ts" name="first test file &gt; 2 + 2 should equal 4" time="0.01">
            <failure message="expected 5 to be 4 // Object.is equality" type="AssertionError">
AssertionError: expected 5 to be 4 // Object.is equality
 ❯ __tests__/test-file-1.test.ts:20:28
            </failure>
        </testcase>
        <testcase classname="__tests__/test-file-1.test.ts" name="first test file &gt; 4 - 2 should equal 2" time="0">
        </testcase>
    </testsuite>
</testsuites>

Le XML généré contient des balises testsuites et testcase imbriquées. Celles-ci peuvent également être personnalisées via les options du rapporteur suiteName et classnameTemplate. classnameTemplate peut être une chaîne de modèle ou une fonction.

Les espaces réservés pris en charge pour l'option classnameTemplate sont :

  • filename
  • filepath
ts
export default defineConfig({
  test: {
    reporters: [
      [
        'junit',
        {
          suiteName: 'custom suite name',
          classnameTemplate: 'filename:{filename} - filepath:{filepath}',
        },
      ],
    ],
  },
});

Rapporteur JSON ​

Génère un rapport des résultats des tests au format JSON compatible avec l'option --json de Jest. Peut être affiché dans le terminal ou écrit dans un fichier à l'aide de l'option de configuration outputFile.

bash
npx vitest --reporter=json
ts
export default defineConfig({
  test: {
    reporters: ['json'],
  },
});

Exemple de rapport JSON :

json
{
  "numTotalTestSuites": 4,
  "numPassedTestSuites": 2,
  "numFailedTestSuites": 1,
  "numPendingTestSuites": 1,
  "numTotalTests": 4,
  "numPassedTests": 1,
  "numFailedTests": 1,
  "numPendingTests": 1,
  "numTodoTests": 1,
  "startTime": 1697737019307,
  "success": false,
  "testResults": [
    {
      "assertionResults": [
        {
          "ancestorTitles": ["", "first test file"],
          "fullName": " first test file 2 + 2 should equal 4",
          "status": "failed",
          "title": "2 + 2 should equal 4",
          "duration": 9,
          "failureMessages": ["expected 5 to be 4 // Object.is equality"],
          "location": {
            "line": 20,
            "column": 28
          },
          "meta": {}
        }
      ],
      "startTime": 1697737019787,
      "endTime": 1697737019797,
      "status": "failed",
      "message": "",
      "name": "/root-directory/__tests__/test-file-1.test.ts"
    }
  ],
  "coverageMap": {}
}

INFO

Depuis Vitest 3, le rapporteur JSON inclut les informations de couverture dans coverageMap si la couverture est activée.

Rapporteur HTML ​

Génère un fichier HTML pour visualiser les résultats des tests via une interface graphique interactive. Une fois le fichier généré, Vitest maintiendra un serveur de développement local en cours d'exécution et fournira un lien pour visualiser le rapport dans un navigateur.

Le fichier de sortie peut être spécifié à l'aide de l'option de configuration outputFile. Si aucune option outputFile n'est fournie, un nouveau fichier HTML sera créé.

bash
npx vitest --reporter=html
ts
export default defineConfig({
  test: {
    reporters: ['html'],
  },
});

TIP

Ce rapporteur nécessite l'installation du package @vitest/ui.

Rapporteur TAP ​

Génère un rapport suivant le Test Anything Protocol (TAP).

bash
npx vitest --reporter=tap
ts
export default defineConfig({
  test: {
    reporters: ['tap'],
  },
});

Exemple de rapport TAP :

bash
TAP version 13
1..1
not ok 1 - __tests__/test-file-1.test.ts # time=14.00ms {
    1..1
    not ok 1 - first test file # time=13.00ms {
        1..2
        not ok 1 - 2 + 2 should equal 4 # time=11.00ms
            ---
            error:
                name: "AssertionError"
                message: "expected 5 to be 4 // Object.is equality"
            at: "/root-directory/__tests__/test-file-1.test.ts:20:28"
            actual: "5"
            expected: "4"
            ...
        ok 2 - 4 - 2 should equal 2 # time=1.00ms
    }
}

Rapporteur TAP Flat ​

Génère un rapport TAP plat. Comme le rapporteur tap, les résultats des tests sont formatés pour suivre les standards TAP, mais les suites de tests sont formatées comme une liste plate plutôt qu'une hiérarchie imbriquée.

bash
npx vitest --reporter=tap-flat
ts
export default defineConfig({
  test: {
    reporters: ['tap-flat'],
  },
});

Exemple de rapport TAP plat :

bash
TAP version 13
1..2
not ok 1 - __tests__/test-file-1.test.ts > first test file > 2 + 2 should equal 4 # time=11.00ms
    ---
    error:
        name: "AssertionError"
        message: "expected 5 to be 4 // Object.is equality"
    at: "/root-directory/__tests__/test-file-1.test.ts:20:28"
    actual: "5"
    expected: "4"
    ...
ok 2 - __tests__/test-file-1.test.ts > first test file > 4 - 2 should equal 2 # time=0.00ms

Rapporteur de processus bloqués ​

Affiche une liste des processus bloqués, s'il y en a qui empêchent Vitest de s'arrêter correctement. Le rapporteur hanging-process n'affiche pas lui-même les résultats des tests, mais peut être utilisé conjointement avec un autre rapporteur pour surveiller les processus pendant l'exécution des tests. L'utilisation de ce rapporteur peut être gourmande en ressources et devrait donc généralement être réservée aux fins de débogage dans les situations où Vitest ne parvient pas à terminer le processus de manière fiable.

bash
npx vitest --reporter=hanging-process
ts
export default defineConfig({
  test: {
    reporters: ['hanging-process'],
  },
});

Rapporteur Github Actions ​

Affiche les commandes de flux de travail pour fournir des annotations en cas d'échec de test. Ce rapporteur est automatiquement activé avec un rapporteur default lorsque process.env.GITHUB_ACTIONS === 'true'.

Github ActionsGithub Actions

Si vous configurez des rapporteurs non par défaut, vous devez explicitement ajouter github-actions.

ts
export default defineConfig({
  test: {
    reporters: process.env.GITHUB_ACTIONS ? ['dot', 'github-actions'] : ['dot'],
  },
});

Vous pouvez personnaliser les chemins de fichiers qui sont affichés au format de commande d'annotation de GitHub en utilisant l'option onWritePath. Ceci est utile lors de l'exécution de Vitest dans un environnement conteneurisé, tel que Docker, où les chemins de fichiers peuvent différer des chemins dans l'environnement GitHub Actions.

ts
export default defineConfig({
  test: {
    reporters: process.env.GITHUB_ACTIONS
      ? [
          'default',
          [
            'github-actions',
            {
              onWritePath(path) {
                return path.replace(
                  /^\/app\//,
                  `${process.env.GITHUB_WORKSPACE}/`
                );
              },
            },
          ],
        ]
      : ['default'],
  },
});

Rapporteur Blob ​

Stocke les résultats des tests sur la machine afin qu'ils puissent être fusionnés ultérieurement à l'aide de la commande --merge-reports. Par défaut, stocke tous les résultats dans le dossier .vitest-reports, mais peut être remplacé à l'aide des options --outputFile ou --outputFile.blob.

bash
npx vitest --reporter=blob --outputFile=reports/blob-1.json

Nous vous recommandons d'utiliser ce rapporteur si vous exécutez Vitest sur différentes machines avec l'option --shard. Tous les rapports blob peuvent être fusionnés dans n'importe quel rapport à l'aide de la commande --merge-reports à la fin de votre pipeline CI :

bash
npx vitest --merge-reports=reports --reporter=json --reporter=default

TIP

Les deux options --reporter=blob et --merge-reports ne fonctionnent pas en mode surveillance.

Rapporteurs personnalisés ​

Vous pouvez utiliser des rapporteurs personnalisés tiers installés depuis NPM en spécifiant leur nom de package dans l'option des rapporteurs :

bash
npx vitest --reporter=some-published-vitest-reporter
ts
export default defineConfig({
  test: {
    reporters: ['some-published-vitest-reporter'],
  },
});

De plus, vous pouvez définir vos propres rapporteurs personnalisés et les utiliser en spécifiant leur chemin de fichier :

bash
npx vitest --reporter=./path/to/reporter.ts

Les rapporteurs personnalisés doivent implémenter l'interface Reporter.

Pager
Page précédenteProjets de Test
Page suivanteCouverture de code

Publié sous la licence MIT.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/guide/reporters

Publié sous la licence MIT.

Copyright (c) 2021-Present Vitest Team