Passer au contenu

Interface en Ligne de Commande (CLI) de Vitest

L’interface en ligne de commande (CLI) de Vitest offre de nombreuses options pour exécuter, filtrer et configurer vos tests. Ce guide vous aidera à tirer le meilleur parti de ces fonctionnalités pour optimiser votre workflow de test.

Commandes de Base

Exécuter les Tests

Fenêtre de terminal
# Démarrer Vitest en mode watch (par défaut)
npx vitest
# Exécuter les tests une seule fois puis quitter
npx vitest run
# Exécuter un seul fichier de test
npx vitest run chemin/vers/fichier.test.js

Mode Watch vs Mode Run

  • Mode Watch (défaut): surveille les modifications de fichiers et relance automatiquement les tests concernés
  • Mode Run: exécute les tests une seule fois puis quitte - idéal pour l’intégration continue (CI)

Filtrage des Tests

Vitest offre plusieurs façons de filtrer les tests à exécuter:

Par Nom de Fichier

Fenêtre de terminal
# Exécuter des tests dans un fichier spécifique
vitest run user.test.js
# Utiliser des motifs glob pour cibler plusieurs fichiers
vitest "**/*.component.test.js"

Par Nom de Test

Fenêtre de terminal
# Filtrer par nom de test (correspondance partielle)
vitest -t "should create user"
# Combiner le filtrage par fichier et par nom
vitest user.test.js -t "should update"
# Utiliser une expression régulière
vitest -t "/user|profile/"

Par Balise (Tag)

Si vous utilisez des tags dans vos tests:

// Dans votre test
test.skipIf(condition)('test name', () => {})
test.runIf(condition)('test name', () => {})

Vous pouvez les cibler:

Fenêtre de terminal
# Exécuter seulement les tests avec un certain tag
vitest --mode=production

Options de Configuration

Environnement

Fenêtre de terminal
# Spécifier l'environnement d'exécution
vitest --environment jsdom
vitest --environment node
vitest --environment happy-dom

Reporters (Formats de Sortie)

Fenêtre de terminal
# Changer le format de sortie
vitest --reporter verbose
vitest --reporter json
vitest --reporter junit
# Utiliser plusieurs reporters
vitest --reporter verbose --reporter json

Timeouts

Fenêtre de terminal
# Définir un timeout global (en ms)
vitest --timeout 10000
# Définir un timeout pour les hooks
vitest --hook-timeout 5000

Couverture de Code

Fenêtre de terminal
# Exécuter avec couverture de code
vitest --coverage
# Spécifier le fournisseur de couverture
vitest --coverage --coverage.provider=v8
vitest --coverage --coverage.provider=istanbul
# Configurer les rapports de couverture
vitest --coverage --coverage.reporter=text --coverage.reporter=html

Parallélisation et Isolation

Fenêtre de terminal
# Désactiver l'exécution parallèle
vitest --no-threads
# Limiter le nombre de threads
vitest --pool=forks --poolOptions.threads.minThreads=1 --poolOptions.threads.maxThreads=2
# Isoler l'environnement pour chaque fichier de test
vitest --isolate

Options d’Affichage

Fenêtre de terminal
# Mode silencieux (moins de sortie)
vitest --silent
# Mode verbeux (plus de détails)
vitest --verbose
# Cacher la sortie console des tests
vitest --silent-console
# Afficher les erreurs de manière détaillée
vitest --diff
# Reporter des tests lents
vitest --slow=500 # (seuil en ms)

Snapshot Testing

Fenêtre de terminal
# Mettre à jour les snapshots
vitest -u
vitest --update
# Filtrer et mettre à jour des snapshots spécifiques
vitest -t "component snapshot" -u

Options de Debug

Fenêtre de terminal
# Activer l'inspection de Node.js pour le débogage
vitest --inspect-brk
# Log du débogage
vitest --debug

Intégration avec TypeScript

Fenêtre de terminal
# Vérifier les types TypeScript
vitest --typecheck
# Spécifier les fichiers à vérifier
vitest --typecheck "**/*.{ts,tsx}"

Workspaces

Fenêtre de terminal
# Lister les workspaces disponibles
vitest --list-workspaces
# Exécuter un workspace spécifique
vitest --workspace=frontend
# Exécuter plusieurs workspaces
vitest --workspace=frontend --workspace=shared

Interface Utilisateur (UI)

Fenêtre de terminal
# Démarrer l'interface graphique
vitest --ui
# Spécifier le port pour l'UI
vitest --ui.port 3000
# Ouvrir automatiquement dans le navigateur
vitest --ui --ui.open

Commandes Interactives en Mode Watch

En mode watch, vous pouvez utiliser ces commandes dans le terminal:

ToucheAction
qQuitter
aExécuter tous les tests
fExécuter seulement les tests ayant échoué
lExécuter les derniers tests modifiés
tFiltrer par nom de test
pFiltrer par nom de fichier
uMettre à jour les snapshots
wChoisir un workspace
cEffacer la console

Configuration via package.json

Vous pouvez définir des scripts npm pour simplifier l’exécution de commandes fréquentes:

{
"scripts": {
"test": "vitest",
"test:run": "vitest run",
"test:ui": "vitest --ui",
"test:coverage": "vitest run --coverage",
"test:typecheck": "vitest --typecheck",
"test:e2e": "vitest run e2e"
}
}

Variables d’Environnement

Vitest reconnaît plusieurs variables d’environnement:

Fenêtre de terminal
# Définir le mode (production, development, etc.)
VITEST_MODE=production vitest
# Désactiver le mode watch
VITEST_WATCH=false vitest
# Limiter la concurrence
VITEST_MAX_THREADS=2 vitest

Définir la Configuration à Utiliser

Fenêtre de terminal
# Spécifier un fichier de configuration
vitest --config ./custom-vitest.config.js
# Utiliser une configuration spécifique dans un projet Vite
vitest --config vite.config.js --configFile vitest.config.js

Options d’Optimisation

Fenêtre de terminal
# Désactiver l'isolation des tests
vitest --no-isolate
# Limiter la mémoire utilisée
vitest --pool-options.threads.singleThread

Exemples de Cas d’Utilisation

Intégration Continue (CI)

Fenêtre de terminal
vitest run --coverage --reporter=json --reporter=junit

Développement Local

Fenêtre de terminal
vitest --ui

Débogage d’un Test Spécifique

Fenêtre de terminal
vitest debug mon-fichier.test.js -t "mon test spécifique"

Tests End-to-End

Fenêtre de terminal
vitest run --config e2e.config.js

Astuces et Bonnes Pratiques

  1. Utilisez le mode watch pendant le développement pour un retour immédiat
  2. Filtrez les tests pendant le développement pour vous concentrer sur ce que vous modifiez
  3. Définissez des scripts npm pour les commandes que vous utilisez fréquemment
  4. Utilisez l’UI de Vitest pour une meilleure visualisation des résultats de test
  5. Combinez différentes options pour créer des workflows de test efficaces

L’interface CLI de Vitest est puissante et flexible, vous permettant d’adapter l’exécution de vos tests à vos besoins spécifiques. Prenez le temps d’explorer ces options pour améliorer votre workflow de développement et d’intégration continue.