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
# Démarrer Vitest en mode watch (par défaut)npx vitest
# Exécuter les tests une seule fois puis quitternpx vitest run
# Exécuter un seul fichier de testnpx 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
# Exécuter des tests dans un fichier spécifiquevitest run user.test.js
# Utiliser des motifs glob pour cibler plusieurs fichiersvitest "**/*.component.test.js"
Par Nom de Test
# Filtrer par nom de test (correspondance partielle)vitest -t "should create user"
# Combiner le filtrage par fichier et par nomvitest user.test.js -t "should update"
# Utiliser une expression régulièrevitest -t "/user|profile/"
Par Balise (Tag)
Si vous utilisez des tags dans vos tests:
// Dans votre testtest.skipIf(condition)('test name', () => {})test.runIf(condition)('test name', () => {})
Vous pouvez les cibler:
# Exécuter seulement les tests avec un certain tagvitest --mode=production
Options de Configuration
Environnement
# Spécifier l'environnement d'exécutionvitest --environment jsdomvitest --environment nodevitest --environment happy-dom
Reporters (Formats de Sortie)
# Changer le format de sortievitest --reporter verbosevitest --reporter jsonvitest --reporter junit
# Utiliser plusieurs reportersvitest --reporter verbose --reporter json
Timeouts
# Définir un timeout global (en ms)vitest --timeout 10000
# Définir un timeout pour les hooksvitest --hook-timeout 5000
Couverture de Code
# Exécuter avec couverture de codevitest --coverage
# Spécifier le fournisseur de couverturevitest --coverage --coverage.provider=v8vitest --coverage --coverage.provider=istanbul
# Configurer les rapports de couverturevitest --coverage --coverage.reporter=text --coverage.reporter=html
Parallélisation et Isolation
# Désactiver l'exécution parallèlevitest --no-threads
# Limiter le nombre de threadsvitest --pool=forks --poolOptions.threads.minThreads=1 --poolOptions.threads.maxThreads=2
# Isoler l'environnement pour chaque fichier de testvitest --isolate
Options d’Affichage
# Mode silencieux (moins de sortie)vitest --silent
# Mode verbeux (plus de détails)vitest --verbose
# Cacher la sortie console des testsvitest --silent-console
# Afficher les erreurs de manière détailléevitest --diff
# Reporter des tests lentsvitest --slow=500 # (seuil en ms)
Snapshot Testing
# Mettre à jour les snapshotsvitest -uvitest --update
# Filtrer et mettre à jour des snapshots spécifiquesvitest -t "component snapshot" -u
Options de Debug
# Activer l'inspection de Node.js pour le débogagevitest --inspect-brk
# Log du débogagevitest --debug
Intégration avec TypeScript
# Vérifier les types TypeScriptvitest --typecheck
# Spécifier les fichiers à vérifiervitest --typecheck "**/*.{ts,tsx}"
Workspaces
# Lister les workspaces disponiblesvitest --list-workspaces
# Exécuter un workspace spécifiquevitest --workspace=frontend
# Exécuter plusieurs workspacesvitest --workspace=frontend --workspace=shared
Interface Utilisateur (UI)
# Démarrer l'interface graphiquevitest --ui
# Spécifier le port pour l'UIvitest --ui.port 3000
# Ouvrir automatiquement dans le navigateurvitest --ui --ui.open
Commandes Interactives en Mode Watch
En mode watch, vous pouvez utiliser ces commandes dans le terminal:
Touche | Action |
---|---|
q | Quitter |
a | Exécuter tous les tests |
f | Exécuter seulement les tests ayant échoué |
l | Exécuter les derniers tests modifiés |
t | Filtrer par nom de test |
p | Filtrer par nom de fichier |
u | Mettre à jour les snapshots |
w | Choisir un workspace |
c | Effacer 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:
# Définir le mode (production, development, etc.)VITEST_MODE=production vitest
# Désactiver le mode watchVITEST_WATCH=false vitest
# Limiter la concurrenceVITEST_MAX_THREADS=2 vitest
Définir la Configuration à Utiliser
# Spécifier un fichier de configurationvitest --config ./custom-vitest.config.js
# Utiliser une configuration spécifique dans un projet Vitevitest --config vite.config.js --configFile vitest.config.js
Options d’Optimisation
# Désactiver l'isolation des testsvitest --no-isolate
# Limiter la mémoire utiliséevitest --pool-options.threads.singleThread
Exemples de Cas d’Utilisation
Intégration Continue (CI)
vitest run --coverage --reporter=json --reporter=junit
Développement Local
vitest --ui
Débogage d’un Test Spécifique
vitest debug mon-fichier.test.js -t "mon test spécifique"
Tests End-to-End
vitest run --config e2e.config.js
Astuces et Bonnes Pratiques
- Utilisez le mode watch pendant le développement pour un retour immédiat
- Filtrez les tests pendant le développement pour vous concentrer sur ce que vous modifiez
- Définissez des scripts npm pour les commandes que vous utilisez fréquemment
- Utilisez l’UI de Vitest pour une meilleure visualisation des résultats de test
- 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.