Options CLI de Jest
Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →
L'exécuteur en ligne de commande jest propose plusieurs options utiles. Vous pouvez exécuter jest --help pour voir toutes les options disponibles. Beaucoup des options présentées ci-dessous peuvent également être combinées pour exécuter vos tests exactement comme vous le souhaitez. Toutes les options de Configuration de Jest peuvent également être spécifiées via la CLI.
Voici un aperçu rapide :
Exécution depuis la ligne de commande
Exécuter tous les tests (par défaut) :
jest
Exécuter uniquement les tests spécifiés par un motif ou un nom de fichier :
jest my-test #or
jest path/to/my-test.js
Exécuter les tests liés aux fichiers modifiés (fichiers non commités) via hg/git :
jest -o
Exécuter les tests liés à path/to/fileA.js et path/to/fileB.js :
jest --findRelatedTests path/to/fileA.js path/to/fileB.js
Exécuter les tests correspondant à ce nom de spécification (correspond au nom dans describe ou test).
jest -t name-of-spec
Lancer le mode watch :
jest --watch #runs jest -o by default
jest --watchAll #runs all tests
Le mode watch permet également de spécifier le nom ou le chemin d'un fichier pour se concentrer sur un ensemble spécifique de tests.
Utilisation avec un gestionnaire de paquets
Si vous exécutez Jest via votre gestionnaire de paquets, vous pouvez quand même passer les arguments de ligne de commande directement à Jest.
Au lieu de :
jest -u -t="ColorPicker"
vous pouvez utiliser :
- npm
- Yarn
- pnpm
- Bun
npm test -- -u -t="ColorPicker"
yarn test -u -t="ColorPicker"
pnpm test -u -t="ColorPicker"
bun run test -u -t "ColorPicker"
Support des arguments camelCase et kebab-case
Jest prend en charge les formats d'arguments camelCase et kebab-case. Les exemples suivants produiront le même résultat :
jest --collect-coverage
jest --collectCoverage
Les arguments peuvent également être mélangés :
jest --update-snapshot --detectOpenHandles
Options
Les options CLI ont priorité sur les valeurs de la Configuration.
- Support des arguments camelCase et kebab-case
- Options
- Référence
jest <regexForTestFiles>--bail[=<n>]--cache--changedFilesWithAncestor--changedSince--ci--clearCache--clearMocks--collectCoverageFrom=<glob>--colors--config=<path>--coverage[=<boolean>]--coverageDirectory=<path>--coverageProvider=<provider>--debug--detectOpenHandles--env=<environment>--errorOnDeprecated--expand--filter=<file>--findRelatedTests <spaceSeparatedListOfSourceFiles>--forceExit--help--ignoreProjects <project1> ... <projectN>--init--injectGlobals--json--lastCommit--listTests--logHeapUsage--maxConcurrency=<num>--maxWorkers=<num>|<string>--noStackTrace--notify--onlyChanged--onlyFailures--openHandlesTimeout=<milliseconds>--outputFile=<filename>--passWithNoTests--projects <path1> ... <pathN>--randomize--reporters--resetMocks--restoreMocks--roots--runInBand--runTestsByPath--seed=<num>--selectProjects <project1> ... <projectN>--setupFilesAfterEnv <path1> ... <pathN>--shard--showConfig--showSeed--silent--testEnvironmentOptions=<json string>--testLocationInResults--testMatch glob1 ... globN--testNamePattern=<regex>--testPathIgnorePatterns=<regex>|[array]--testPathPattern=<regex>--testRunner=<path>--testSequencer=<path>--testTimeout=<number>--updateSnapshot--useStderr--verbose--version--watch--watchAll--watchman--workerThreads
Référence
jest <regexForTestFiles>
Lorsque vous exécutez jest avec un argument, celui-ci est traité comme une expression régulière pour filtrer les fichiers de votre projet. Vous pouvez exécuter des suites de tests en fournissant un motif. Seuls les fichiers correspondant au motif seront exécutés. Selon votre terminal, vous devrez peut-être mettre cet argument entre guillemets : jest "my.*(complex)?pattern". Sous Windows, utilisez / comme séparateur de chemin ou échappez \ avec \\.
--bail[=<n>]
Alias : -b. Quitte immédiatement la suite de tests après n échecs de suite de tests. Par défaut 1.
--cache
Active ou non le cache. Par défaut true. Désactivez le cache avec --no-cache.
Le cache ne devrait être désactivé qu'en cas de problèmes liés à la mise en cache. En moyenne, désactiver le cache rend Jest au moins deux fois plus lent.
Pour inspecter le cache, utilisez --showConfig et cherchez la valeur cacheDirectory. Pour vider le cache, utilisez --clearCache.
--changedFilesWithAncestor
Exécute les tests liés aux changements actuels et aux modifications du dernier commit. Comportement similaire à --onlyChanged.
--changedSince
Exécute les tests liés aux modifications depuis la branche ou le hash de commit fourni. Si la branche courante a divergé de la branche donnée, seuls les changements locaux seront testés. Comportement similaire à --onlyChanged.
--ci
Lorsque cette option est activée, Jest suppose qu'il s'exécute dans un environnement CI. Cela modifie le comportement lorsqu'un nouveau snapshot est rencontré : au lieu de le stocker automatiquement, le test échoue et nécessite d'exécuter Jest avec --updateSnapshot.
--clearCache
Supprime le répertoire de cache de Jest puis quitte sans exécuter les tests. Supprime cacheDirectory si l'option est fournie, ou le répertoire de cache par défaut de Jest. Le répertoire de cache par défaut peut être trouvé en exécutant jest --showConfig.
Vider le cache réduira les performances.
--clearMocks
Efface automatiquement les appels, instances, contextes et résultats des mocks avant chaque test. Équivalent à appeler jest.clearAllMocks() avant chaque test. Cela ne supprime aucune implémentation de mock qui aurait pu être fournie.
--collectCoverageFrom=<glob>
Un motif glob relatif à rootDir correspondant aux fichiers depuis lesquels les informations de couverture doivent être collectées.
--colors
Force la mise en évidence des résultats de test même si stdout n'est pas un TTY.
Alternativement, vous pouvez définir la variable d'environnement FORCE_COLOR=true pour activer forcément ou FORCE_COLOR=false pour désactiver la sortie colorée. L'utilisation de FORCE_COLOR prime sur toutes les autres vérifications de support couleur.
--config=<path>
Alias : -c. Le chemin vers un fichier de configuration Jest spécifiant comment trouver et exécuter les tests. Si aucun rootDir n'est défini dans la configuration, le répertoire contenant le fichier de config est considéré comme le rootDir du projet. Peut aussi être une valeur encodée en JSON que Jest utilisera comme configuration.
--coverage[=<boolean>]
Alias : --collectCoverage. Indique que les informations de couverture de test doivent être collectées et rapportées dans la sortie. Passez optionnellement <boolean> pour surcharger l'option définie dans la configuration.
--coverageDirectory=<path>
Le répertoire où Jest doit écrire ses fichiers de couverture.
--coverageProvider=<provider>
Indique quel fournisseur utiliser pour instrumenter le code en vue de la couverture. Les valeurs autorisées sont babel (par défaut) ou v8.
--debug
Affiche des informations de débogage sur votre configuration Jest.
--detectOpenHandles
Tente de collecter et d'afficher les handles ouverts empêchant Jest de quitter proprement. Utilisez ceci dans les cas où vous devez utiliser --forceExit pour que Jest quitte, afin de potentiellement identifier la cause. Implique --runInBand, faisant s'exécuter les tests en série. Implémenté via async_hooks. Cette option impacte significativement les performances et doit être réservée au débogage.
--env=<environment>
L'environnement de test utilisé pour tous les tests. Peut pointer vers n'importe quel fichier ou module node. Exemples : jsdom, node ou path/to/my-environment.js.
--errorOnDeprecated
Fait en sorte que l'appel d'APIs obsolètes génère des messages d'erreur utiles. Facilité la migration vers des versions plus récentes.
--expand
Alias : -e. Utilisez ce drapeau pour afficher les diffs complets et les erreurs au lieu d'un patch.
--filter=<file>
Chemin vers un module exportant une fonction de filtrage. Cette fonction asynchrone reçoit une liste de chemins de tests qui peut être manipulée pour exclure des tests de l'exécution en retournant un objet de la forme { filtered: Array<{ test: string }> }. Particulièrement utile en conjonction avec une infrastructure de test pour filtrer des tests connus comme défaillants, par exemple.
module.exports = testPaths => {
const allowedPaths = testPaths
.filter(filteringFunction)
.map(test => ({test})); // [{ test: "path1.spec.js" }, { test: "path2.spec.js" }, etc]
return {
filtered: allowedPaths,
};
};
--findRelatedTests <spaceSeparatedListOfSourceFiles>
Trouve et exécute les tests couvrant une liste de fichiers sources séparés par des espaces passés en arguments. Utile pour l'intégration dans des hooks pre-commit afin d'exécuter le strict minimum de tests nécessaires. Peut être utilisé avec --coverage pour inclure la couverture de test des fichiers sources, sans besoin de dupliquer les arguments --collectCoverageFrom.
--forceExit
Force Jest à quitter après l'exécution complète de tous les tests. Utile lorsque les ressources configurées par le code de test ne peuvent être correctement nettoyées.
Cette fonctionnalité est une échappatoire. Si Jest ne quitte pas à la fin d'une série de tests, cela signifie que des ressources externes sont encore retenues ou que des minuteries sont en attente dans votre code. Il est conseillé de démonter les ressources externes après chaque test pour garantir une fermeture propre de Jest. Utilisez --detectOpenHandles pour aider à localiser le problème.
--help
Affiche les informations d'aide, similaires à cette page.
--ignoreProjects <project1> ... <projectN>
Ignore les tests des projets spécifiés. Jest utilise l'attribut displayName dans la configuration pour identifier chaque projet. Si vous utilisez cette option, fournissez un displayName à tous vos projets.
--init
Génère un fichier de configuration de base. En fonction de votre projet, Jest vous posera quelques questions qui aideront à générer un fichier jest.config.js avec une brève description pour chaque option.
--injectGlobals
Injecte les variables globales de Jest (expect, test, describe, beforeEach, etc.) dans l'environnement global. Si vous définissez cette option sur false, vous devez les importer depuis @jest/globals, par exemple :
import {expect, jest, test} from '@jest/globals';
jest.useFakeTimers();
test('some test', () => {
expect(Date.now()).toBe(0);
});
Cette option n'est prise en charge qu'avec le runner de test par défaut jest-circus.
--json
Imprime les résultats des tests au format JSON. Ce mode redirige toutes les autres sorties de test et messages utilisateur vers stderr.
--lastCommit
Exécute tous les tests affectés par les modifications de fichiers du dernier commit. Se comporte comme --onlyChanged.
--listTests
Liste tous les fichiers de tests que Jest exécutera avec les arguments fournis, puis quitte.
--logHeapUsage
Enregistre l'utilisation du tas après chaque test. Utile pour déboguer les fuites mémoire. À utiliser avec --runInBand et --expose-gc dans node.
--maxConcurrency=<num>
Empêche Jest d'exécuter plus que le nombre spécifié de tests simultanément. Affecte uniquement les tests utilisant test.concurrent.
--maxWorkers=<num>|<string>
Alias : -w. Spécifie le nombre maximum de workers que le pool créera pour exécuter les tests. En mode single run, par défaut égal au nombre de cœurs disponibles moins un (pour le thread principal). En mode watch, par défaut la moitié des cœurs disponibles pour éviter la surcharge. Ajustez cette valeur dans les environnements limités (comme les CI), mais les valeurs par défaut conviennent à la plupart des cas.
Pour les environnements à nombre variable de CPU, utilisez une configuration en pourcentage : --maxWorkers=50%
--noStackTrace
Désactive les traces de pile dans les résultats des tests.
--notify
Active les notifications pour les résultats des tests. Pratique quand vous ne voulez pas que votre conscience puisse se concentrer sur autre chose que les tests JavaScript.
--onlyChanged
Alias : -o. Tente d'identifier les tests à exécuter en fonction des fichiers modifiés dans le dépôt actuel. Nécessite un dépôt git/hg et un graphe de dépendances statique (sans require dynamique).
--onlyFailures
Alias : -f. Exécute les tests ayant échoué lors de la précédente exécution.
--openHandlesTimeout=<milliseconds>
Lorsque --detectOpenHandles et --forceExit sont désactivés, Jest affichera un avertissement si le processus ne s'est pas terminé proprement après ce nombre de millisecondes. Une valeur de 0 désactive l'avertissement. Valeur par défaut : 1000.
--outputFile=<filename>
Écrit les résultats des tests dans un fichier lorsque l'option --json est également spécifiée. La structure JSON retournée est documentée dans testResultsProcessor.
--passWithNoTests
Permet à la suite de tests de réussir lorsqu'aucun fichier n'est trouvé.
--projects <path1> ... <pathN>
Exécute les tests d'un ou plusieurs projets situés dans les chemins spécifiés ; accepte également les globs de chemins. Cette option est l'équivalent CLI de l'option de configuration projects.
Si des fichiers de configuration sont trouvés dans les chemins spécifiés, tous les projets définis dans ces fichiers de configuration seront exécutés.
--randomize
Mélange aléatoirement l'ordre des tests dans un fichier. Le mélange est basé sur la graine (seed). Voir --seed=<num> pour plus d'informations.
La valeur de la graine est affichée lorsque cette option est activée. Équivalent à l'option CLI --showSeed.
jest --randomize --seed 1234
Cette option n'est prise en charge qu'avec le runner de test par défaut jest-circus.
--reporters
Exécute les tests avec les reporters spécifiés. Les options des reporters ne sont pas disponibles via CLI. Exemple avec plusieurs reporters :
jest --reporters="default" --reporters="jest-junit"
--resetMocks
Réinitialise automatiquement l'état des mocks avant chaque test. Équivalent à appeler jest.resetAllMocks() avant chaque test. Cela supprimera les implémentations factices de tous les mocks mais ne restaurera pas leur implémentation initiale.
--restoreMocks
Restaure automatiquement l'état et l'implémentation des simulacres avant chaque test. Équivalent à appeler jest.restoreAllMocks() avant chaque test. Cela supprime les implémentations factices et restaure le comportement d'origine.
--roots
Liste de chemins vers les répertoires que Jest doit explorer.
--runInBand
Alias : -i. Exécute tous les tests en série dans le processus courant, plutôt que de créer un pool de processus enfants. Utile pour le débogage.
--runTestsByPath
Exécute uniquement les tests spécifiés par leur chemin exact. Évite de les convertir en expression régulière et de les faire correspondre à chaque fichier.
Par exemple, avec cette structure de fichiers :
__tests__
└── t1.test.js # test
└── t2.test.js # test
Avec un pattern, aucun test n'est trouvé :
jest --runTestsByPath __tests__/t
Sortie :
No tests found
Cependant, en passant un chemin exact, seul le test donné est exécuté :
jest --runTestsByPath __tests__/t1.test.js
Sortie :
PASS __tests__/t1.test.js
Le filtrage par expression régulière fonctionne bien sur de petits ensembles, mais devient lent avec plusieurs patterns ou beaucoup de tests. Cette option remplace la logique de correspondance par regex pour optimiser le temps de filtrage des fichiers de test par Jest.
--seed=<num>
Définit une valeur de départ (seed) qui peut être récupérée dans un fichier de test via jest.getSeed(). La valeur doit être comprise entre -0x80000000 et 0x7fffffff inclus (-2147483648 (-(2 ** 31)) et 2147483647 (2 ** 31 - 1) en décimal).
jest --seed=1324
Si cette option n'est pas spécifiée, Jest générera aléatoirement la valeur. Vous pouvez utiliser le flag --showSeed pour afficher la valeur de départ dans le résumé du rapport de test.
Jest utilise cette valeur en interne pour mélanger l'ordre d'exécution des suites de test. Si l'option --randomize est utilisée, la valeur sert également à mélanger l'ordre des tests au sein de chaque bloc describe. Pour les tests instables (flaky), une réexécution avec la même valeur peut aider à reproduire l'échec.
--selectProjects <project1> ... <projectN>
Exécute les tests des projets spécifiés. Jest utilise l'attribut displayName de la configuration pour identifier chaque projet. Si vous utilisez cette option, définissez un displayName pour tous vos projets.
--setupFilesAfterEnv <path1> ... <pathN>
Liste de chemins vers des modules exécutant du code pour configurer le framework de test avant chaque test. Attention : les fichiers importés par ces scripts ne seront pas mockés pendant les tests.
--shard
Fragment (shard) de la suite de test à exécuter, au format (?<shardIndex>\d+)/(?<shardCount>\d+).
shardIndex désigne le fragment à sélectionner tandis que shardCount contrôle le nombre total de fragments.
shardIndex et shardCount doivent être des nombres positifs commençant à 1, avec shardIndex inférieur ou égal à shardCount.
Lorsque shard est spécifié, le testSequencer configuré doit implémenter une méthode shard.
Par exemple, pour diviser la suite en trois fragments exécutant chacun un tiers des tests :
jest --shard=1/3
jest --shard=2/3
jest --shard=3/3
--showConfig
Afficher votre configuration Jest et quitter.
--showSeed
Affiche la valeur de départ (seed) dans le résumé du rapport de test. Voir --seed=<num> pour les détails.
Peut également être défini dans la configuration. Voir showSeed.
--silent
Empêcher les tests d'imprimer des messages via la console.
--testEnvironmentOptions=<json string>
Une chaîne JSON avec des options qui seront passées au testEnvironment. Les options pertinentes dépendent de l'environnement.
--testLocationInResults
Ajoute un champ location aux résultats de test. Utile si vous souhaitez indiquer l'emplacement d'un test dans un rapporteur.
Dans l'objet résultant, column est indexé à partir de 0 tandis que line ne l'est pas.
{
"column": 4,
"line": 5
}
--testMatch glob1 ... globN
Les modèles glob que Jest utilise pour détecter les fichiers de test. Veuillez vous référer à la configuration testMatch pour plus de détails.
--testNamePattern=<regex>
Alias : -t. Exécute uniquement les tests dont le nom correspond à l'expression régulière. Par exemple, si vous souhaitez exécuter uniquement les tests liés à l'authentification qui auront des noms comme 'GET /api/posts with auth', vous pouvez utiliser jest -t=auth.
L'expression régulière est comparée au nom complet, qui combine le nom du test et tous les blocs de description environnants.
--testPathIgnorePatterns=<regex>|[array]
Une chaîne unique ou un tableau de motifs regexp testés contre tous les chemins de tests avant l'exécution. Contrairement à --testPathPattern, cela n'exécutera que les tests dont le chemin ne correspond pas aux expressions regexp fournies.
Pour passer un tableau, utilisez des parenthèses échappées et des regex séparés par des espaces comme \(/node_modules/ /tests/e2e/\). Alternativement, combinez les regex en une seule expression comme /node_modules/|/tests/e2e/. Ces deux exemples sont équivalents.
--testPathPattern=<regex>
Motif regex testé contre tous les chemins de test avant exécution. Sous Windows, utilisez / comme séparateur de chemin ou échappez \ en \\.
--testRunner=<path>
Permet de spécifier un exécuteur de tests personnalisé.
--testSequencer=<path>
Permet de spécifier un séquenceur de tests personnalisé. Voir la documentation testSequencer pour les détails.
--testTimeout=<number>
Délai d'expiration par défaut d'un test en millisecondes. Valeur par défaut : 5000.
--updateSnapshot
Alias : -u. Réenregistre tous les snapshots échouant pendant cette exécution de tests. Peut être combiné avec un motif de suite de tests ou --testNamePattern.
--useStderr
Redirige toute la sortie vers stderr.
--verbose
Affiche les résultats individuels des tests avec la hiérarchie des suites.
--version
Alias : -v. Affiche la version et quitte.
--watch
Surveille les fichiers modifiés et réexécute les tests concernés. Pour réexécuter tous les tests après une modification, utilisez plutôt --watchAll.
Utilisez --no-watch (ou --watch=false) pour désactiver explicitement le mode watch s'il a été activé avec --watch. Dans la plupart des environnements CI, ceci est géré automatiquement.
--watchAll
Surveille les fichiers modifiés et réexécute tous les tests lors d'un changement. Pour ne réexécuter que les tests dépendants des fichiers modifiés, utilisez --watch.
Utilisez --no-watchAll (ou --watchAll=false) pour désactiver explicitement le mode watch si celui-ci a été activé avec --watchAll. Dans la plupart des environnements CI, ceci est géré automatiquement.
--watchman
Indique s'il faut utiliser watchman pour l'exploration des fichiers. Par défaut : true. Désactivez cette option avec --no-watchman.
--workerThreads
Indique s'il faut utiliser des worker threads pour la parallélisation. Par défaut, des processus enfants sont utilisés.
Il s'agit d'une fonctionnalité expérimentale. Consultez l'option de configuration workerThreads pour plus de détails.