Options de Jest CLI
L'interpréteur en ligne de commande de jest
a de nombreuses options utiles. Vous pouvez entrer jest --help
pour voir toutes les options disponibles. Plusieurs des options présentées ci-dessous peuvent également être utilisées ensemble pour exécuter les tests exactement comme vous le souhaitez. Chacune des options de Configuration de Jest peut également être définie via l'interface CLI.
Voici un bref aperçu :
Exécution en ligne de commande
Exécute tous les tests (par défaut) :
jest
Exécute seulement les tests identifiés par un pattern ou un nom de fichier :
jest my-test #ou
jest path/to/my-test.js
Exécute des tests relatifs à des changements hg/git (fichiers non commités) :
jest -o
Exécute des tests relatifs à path/to/fileA.js
et path/to/fileB.js
:
jest --findRelatedTests path/to/fileA.js path/to/fileB.js
Exécute des tests qui correspondent au nom de la spécification (correspond au nom describe
ou test
).
jest -t name-of-spec
Exécute en mode surveillance (watch) :
jest --watch #exécute jest -o par défaut
jest --watchAll #exécute tous les tests
Le mode surveillance permet également de spécifier le nom ou le chemin d'accès à un fichier pour se concentrer sur un ensemble spécifique de tests.
Utilisation avec le gestionnaire de paquets
Si vous exécutez Jest via votre gestionnaire de paquets, vous pouvez toujours passer les arguments directement en ligne de commande en tant qu'arguments Jest.
Au lieu de :
jest -u -t="ColorPicker"
vous pouvez utiliser :
- npm
- Yarn
- pnpm
npm test -- -u -t="ColorPicker"
yarn test -u -t="ColorPicker"
pnpm test -u -t="ColorPicker"
Prise en charge des arguments au format camelcase & tirets
Jest prend en charge les arguments au format camelcase et les arguments avec tirets. Les exemples suivants auront un résultat identique :
jest --collect-coverage
jest --collectCoverage
Les arguments peuvent également être mélangés :
jest --update-snapshot --detectOpenHandles
Options
Les options passées en ligne de commande ont priorité sur les valeurs de la Configuration.
- Prise en charge des arguments au format camelcase & tirets
- 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>
--injectGlobals
--json
--lastCommit
--listTests
--logHeapUsage
--maxConcurrency=<num>
--maxWorkers=<num>|<string>
--noStackTrace
--notify
--onlyChanged
--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]
--testPathPatterns=<regex>
--testRunner=<path>
--testSequencer=<path>
--testTimeout=<number>
--updateSnapshot
--useStderr
--verbose
--version
--waitNextEventLoopTurnForUnhandledRejectionEvents
--watch
--watchAll
--watchman
--workerThreads
Référence
jest <regexForTestFiles>
Quand vous exécutez jest
avec un argument, cet argument est traité comme une expression régulière servant à filtrer les fichiers de votre projet. Il est possible d'exécuter des suites de test en fournissant un modèle. Seuls les fichiers correspondants au modèle seront exécutés. En fonction de votre terminal, vous pouvez avoir besoin de citer cet argument : jest "my.*(complex)?pattern"
. Sous Windows, vous devrez utiliser /
comme séparateur de chemin ou échapper \` ainsi
\`.
--bail[=<n>]
Alias : -b
. Quitte la suite de tests immédiatement après n
nombre d'échec de la suite de tests. Par défaut, 1
.
--cache
Utilisation du cache. Valeur par défaut: true
. Désactiver le cache à l'aide de --no-cache
.
Le cache ne devrait être désactivé que si vous rencontrez des problèmes liés à la cache. En moyenne, la désactivation du cache rend Jest au moins deux fois plus lent.
Si vous voulez inspecter le cache, utilisez --showConfig
et regardez la valeur cacheDirectory
. Si vous devez vider le cache, utilisez --clearCache
.
--changedFilesWithAncestor
Exécute les tests relatifs aux changements actuels et aux changements effectués dans le dernier commit. Se comporte de la même façon que --onlyChanged
.
--changedSince
Exécute les tests liés aux changements depuis la branche ou le hash du commit fourni. Si la branche actuelle a divergé de la branche donnée, alors seules les modifications faites localement seront testées. Se comporte de la même façon que --onlyChanged
.
--ci
Quand cette option est passée, Jest considérera qu'il est exécuté dans un environnement de CI. Cela modifie le comportement lorsqu'un nouveau snapshot est rencontré. A la place de stocker le nouveau snapshot automatiquement, le test échouera et il sera nécessaire d'exécuter jest avec l'option --updateSnapshot
.
--clearCache
Supprime le répertoire de cache Jest, puis quitte sans exécuter de tests. Supprimera cacheDirectory
si l'option est passée, ou le répertoire de cache par défaut de Jest. Le répertoire de cache par défaut peut être trouvé en appelant jest --showConfig
.
Nettoyer le cache réduira les performances.
--clearMocks
Efface automatiquement les appels, les instances, les contextes et les résultats des simulations avant chaque test. Équivalent à l'appel de jest.clearAllMocks()
avant chaque test. Cela ne supprime aucune implémentation simulée qui aurait pu être fournie.
--collectCoverageFrom=<glob>
Un pattern glob relatif à rootDir
correspondant aux fichiers dont les informations de couverture doivent être collectées.
--colors
Force la coloration des résultats de tests même si la sortie standard n'est pas un terminal.
Vous pouvez également définir la variable d'environnement FORCE_COLOR=true
pour activer de force ou FORCE_COLOR=false
pour empêcher la sortie colorisée. L'utilisation de FORCE_COLOR
remplace toutes les autres vérifications de support des couleurs.
--config=<path>
Alias: -c
. Le chemin vers un fichier de config jest décrivant comment trouver et exécuter les tests. Si aucun rootDir
n'est défini dans la configuration, le répertoire contenant le fichier de configuration est supposé être le rootDir
du projet. Ce paramètre accepte aussi une valeur encodée en JSON que Jest utilisera comme configuration.
--coverage[=<boolean>]
Alias : --collectCoverage
. Indique que les informations de couverture de code doivent être recueillies et affichées dans la sortie du terminal. Passez éventuellement <boolean>
pour remplacer l'option définie dans la configuration.
--coverageDirectory=<path>
Le répertoire où Jest doit écrire les fichiers de couverture.
--coverageProvider=<provider>
Indique quel fournisseur doit être utilisé pour instrumenter le code pour la couverture. Les valeurs autorisées sont babel
(par défaut) ou v8
.
--debug
Affiche les informations de débogage de votre configuration Jest.
--detectOpenHandles
Tente de collecter et d'afficher les gestionnaires ouverts qui empêchent Jest de sortir proprement. Utilisez ceci dans les cas où vous avez besoin d'utiliser --forceExit
afin que Jest quitte pour potentiellement découvrir la raison. Cela implique --runInBand
, faisant en sorte que les tests s'exécutent en série. Mis en œuvre en utilisant async_hooks
. Cette option pénalise les performances de manière significative et ne doit être utilisée que pour le débogage.
--env=<environment>
L'environnement de test utilisé pour tous les tests. Ceci peut pointer vers n'importe quel fichier ou module. Exemples : jsdom
, node
ou path/to/my-environment.js
.
--errorOnDeprecated
Fait en sorte que l'appel d'API obsolètes génère des messages d'erreur utiles. Utile pour faciliter le processus de mise à jour.
--expand
Alias : -e
. Utilisez cette option pour afficher un diff complet 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 test qui peuvent être manipulés pour exclure les tests de l'exécution et doit retourner un objet avec la forme { filtered: Array<string> }
contenant les tests qui devraient être exécutés par Jest. Particulièrement utile lorsqu'il est utilisé en conjonction avec une infrastructure de test pour filtrer les pannes connues.
// Ce filtre, une fois appliqué, n'exécutera que les tests se terminant par .spec.js (ce n'est pas la meilleure façon de procéder, mais c'est juste un exemple) :
const filteringFunction = testPath => testPath.endsWith('.spec.js');
module.exports = testPaths => {
const allowedPaths = testPaths.filter(filteringFunction); // ["path1.spec.js", "path2.spec.js", etc]
return {
filtered: allowedPaths,
};
};
--findRelatedTests <spaceSeparatedListOfSourceFiles>
Recherche et exécute les tests qui couvrent une liste de fichiers source séparés par des espaces et passés en argument. Utile pour l'intégration de hook de pré-commit pour exécuter le minimum de tests nécessaires. Peut être utilisé avec --coverage
pour inclure une couverture de test pour les fichiers sources, sans avoir besoin de dupliquer les arguments de --collectCoverageFrom
.
--forceExit
Force Jest à s'arrêter une fois que tous les tests ont fini de s'exécuter. Ceci est utile lorsque les ressources mises en place par le code de test ne peuvent pas être nettoyées de manière adéquate.
Cette fonctionnalité est un raccourci pour quitter le processus. Si Jest ne se termine pas à la fin d'un test, cela signifie que des ressources externes sont toujours retenues ou que des temporisateurs sont toujours en attente dans votre code. Il est conseillé de détruire les ressources externes après chaque test pour s'assurer que Jest peut s'arrêter correctement. Vous pouvez utiliser --detectOpenHandles
pour aider à le repérer.
--help
Afficher l'aide, similaire à 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, vous devez fournir un displayName
à tous vos projets.
--injectGlobals
Insére les globales de Jest (expect
, test
, describe
, beforeEach
etc.) dans l'environnement global. Si vous définissez cette valeur à false
, vous devez par exemple importer à partir de @jest/globals
.
import {expect, jest, test} from '@jest/globals';
jest.useFakeTimers();
test('un test', () => {
expect(Date.now()).toBe(0);
});
Cette option n'est prise en charge qu'en utilisant le runner de test jest-circus
par défaut.
--json
Affiche les résultats du test en JSON. Ce mode enverra tous les autres messages de test et de l'utilisateur à stderr.
--lastCommit
Exécute tous les tests affectés par les fichiers modifiés dans le dernier commit. Se comporte de la même façon que --onlyChanged
.
--listTests
Liste tous les fichiers de test que Jest exécutera en fonction des arguments et sort.
--logHeapUsage
Enregistre l'utilisation du tas après chaque test. Utile pour déboguer les fuites de mémoire. A utiliser conjointement avec --runInBand
et --expose-gc
dans node.
--maxConcurrency=<num>
Empêche Jest d'exécuter plus que le nombre spécifié de tests en même temps. N'affecte que les tests qui utilisent test.concurrent
.
--maxWorkers=<num>|<string>
Alias : -w
. Spécifie le maximum de processus que l'orchestrateur de processus lancera pour exécuter les tests. En mode d'exécution simple, il s'agit par défaut du nombre de cœurs disponibles sur votre machine, moins un pour le thread principal. En mode surveillance, il s'agit par défaut de la moitié des cœurs disponibles sur votre machine afin de s'assurer que Jest reste discret et ne paralyse pas votre machine. Il peut être utile d'utiliser cette option dans les environnements avec des ressources limitées comme les environnements de CI, mais la valeur par défaut devrait être suffisante pour la plupart des cas d’utilisation.
Pour les environnements avec des processeurs disponibles variables, vous pouvez utiliser une configuration basée sur le pourcentage : --maxWorkers=50%
--noStackTrace
Désactive le suivi de la pile d'exécution dans les résultats des tests.
--notify
Active les notifications pour les résultats de test. Idéal lorsque vous ne voulez pas que votre cerveau soit en mesure de se concentrer sur autre chose que les tests JavaScript.
--onlyChanged
Alias : -o
. Tente d’identifier quels tests doivent être exécutés en fonction des fichiers changés dans le dépôt actuel. Ne fonctionne que si vous exécutez des tests dans un dépôt git/hg pour le moment et nécessite un graphe de dépendances statique (c'est-à-dire sans exigences dynamiques).
--openHandlesTimeout=<milliseconds>
When --detectOpenHandles
and --forceExit
are disabled, Jest will print a warning if the process has not exited cleanly after this number of milliseconds. A value of 0
disables the warning. Defaults to 1000
.
--outputFile=<filename>
Écrit les résultats des tests dans un fichier lorsque l'option --json
est aussi passée. La structure JSON retournée est documentée dans testResultsProcessor.
--passWithNoTests
Permet à la suite de tests de passer si aucun fichier n'est trouvé.
--projects <path1> ... <pathN>
Exécute des tests à partir d'un ou plusieurs projets, trouvés dans les chemins spécifiés ; prend aussi les globs de chemin. Cette option CLI est l'équivalent de l'option de configuration projects
.
Si les fichiers de configuration sont trouvés dans les chemins spécifiés, tous les projets spécifiés dans ces fichiers de configuration seront exécutés.
--randomize
Mélange l'ordre des tests dans un fichier. Le mélange est basé sur la valeur de l'argument seed. Voir --seed=<num>
pour plus d'informations.
La valeur de seed est affichée lorsque cette option est définie. Equivalent to setting the CLI option --showSeed
.
jest --randomize --seed 1234
Cette option n'est prise en charge qu'en utilisant le runner de test jest-circus
par défaut.
--reporters
Exécuter les tests avec les rapporteurs spécifiés. Les options des rapporteurs ne sont pas disponibles via CLI. Exemple avec plusieurs rapporteurs :
jest --reporters="default" --reporters="jest-junit"
--resetMocks
Réinitialisation automatique de l'état de la simulation avant chaque test. Équivalent à l'appel de jest.resetAllMocks()
avant chaque test. Cela conduira à la destruction des implémentations fictives des simulations, mais ne rétablira pas leur implémentation initiale.
--restoreMocks
Restauration automatique de l'état de la simulation et l'implémentation avant chaque test. Équivalent à l'appel de jest.restoreAllMocks()
avant chaque test. Cela conduira à la destruction des implémentations de tous les simulations et rétablira leur implémentation initiale.
--roots
Une liste de chemins vers des répertoires que Jest devrait utiliser pour rechercher des fichiers.
--runInBand
Alias : -i
. Exécute tous les tests en série dans le processus actuel, plutôt que de créer un pool de processus enfants qui exécutent les tests. Cela peut être utile pour le débogage.
--runTestsByPath
Exécute uniquement les tests qui ont été spécifiés avec leurs chemins exacts. Cela évite de les convertir en une expression régulière et de les faire correspondre à chaque fichier.
Par exemple, partant de la structure de fichier suivante :
__tests__
└── t1.test.js # test
└── t2.test.js # test
Lorsqu'il est exécuté avec un motif, aucun test n'est trouvé :
jest --runTestsByPath __tests__/t
Sortie :
No tests found
Cependant, passer un chemin exact n'exécutera que le test donné :
jest --runTestsByPath __tests__/t1.test.js
Sortie :
PASS __tests__/t1.test.js
La correspondance regex par défaut fonctionne bien sur les petites exécutions, mais devient lente si elle est fournie avec plusieurs patterns et/ou avec un grand nombre de tests. Cette option remplace la logique de correspondance regex et optimise ainsi le temps nécessaire à Jest pour filtrer des fichiers de test spécifiques.
--seed=<num>
Définit une valeur de seed qui peut être récupérée dans un fichier de test via jest.getSeed()
. The seed value must be between -0x80000000
and 0x7fffffff
inclusive (-2147483648
(-(2 ** 31)
) and 2147483647
(2 ** 31 - 1
) in decimal).
jest --seed=1324
If this option is not specified Jest will randomly generate the value. You can use the --showSeed
flag to print the seed in the test report summary.
--selectProjects <project1> ... <projectN>
Exécute les tests des projets spécifiés. Jest utilise l'attribut displayName
dans la configuration pour identifier chaque projet. Si vous utilisez cette option, vous devez fournir un displayName
à tous vos projets.
--setupFilesAfterEnv <path1> ... <pathN>
Une liste de chemins vers des modules qui exécutent du code pour configurer ou paramétrer le framework de test avant chaque test. Attention, les fichiers importés par les scripts d'installation ne seront pas simulés pendant les tests.
--shard
Le partitionnement de la suite de test à exécuter dans un format équivalent à (?<shardIndex>\d+)/(?<shardCount>\d+)
.
shardIndex
décrit le partitionnement à sélectionner tandis que shardCount
contrôle le nombre de partitionnements dans lesquels la suite doit être divisée.
shardIndex
et shardCount
doivent être des nombres positifs, basés sur 1, et shardIndex
doit être inférieur ou égal à shardCount
.
Lorsque shard
est spécifié, le testSequencer
configuré doit implémenter une méthode shard
.
Par exemple, pour découper la suite en trois partitionnement, chacun exécutant un tiers des tests :
jest --shard=1/3
jest --shard=2/3
jest --shard=3/3
--showConfig
Affiche votre configuration Jest et sort.
--showSeed
Affiche la valeur de 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êche les tests d'afficher des messages dans la console.
--testEnvironmentOptions=<json string>
Une chaîne JSON avec des options qui seront passées à testEnvironment
. Les options pertinentes dépendent de l'environnement.
--testLocationInResults
Ajoute un champ location
aux résultats des tests. Utile si vous voulez signaler l'emplacement d'un test dans un rapport.
In the resulting object column
is 0-indexed while line
is not.
{
"column": 4,
"line": 5
}
--testMatch glob1 ... globN
Les patterns de glob que Jest utilise pour détecter les fichiers de test. Veuillez vous référer à la configuration de testMatch
pour plus de détails.
--testNamePattern=<regex>
Alias : -t
. Exécute uniquement les tests dont le nom correspond à la regex. For example, suppose you want to run only tests related to authorization which will have names like 'GET /api/posts with auth'
, then you can use jest -t=auth
.
La recherche est effectuée sur le nom complet, qui est une combinaison du nom du test et de tous les blocs describe qui l'entourent.
--testPathIgnorePatterns=<regex>|[array]
Une seule ou un tableau de chaînes de patterns regexp qui sont testées par rapport à tous les chemins de test avant d'exécuter le test. Contrary to --testPathPatterns
, it will only run those tests with a path that does not match with the provided regexp expressions.
Pour les transmettre sous forme de tableau, utilisez des parenthèses échappées et des regexp délimitées par des espaces, comme \(/node_modules/ /tests/e2e/\)
. Alternativement, vous pouvez omettre les parenthèses en combinant des regexp en un seul regexp comme /node_modules/|/tests/e2e/
. Ces deux exemples sont équivalents.
--testPathPatterns=<regex>
Une chaîne de patterns regexp qui est comparée à tous les chemins de test avant d'exécuter le test. Sous Windows, vous devrez utiliser /
comme séparateur de chemin ou échapper \` ainsi
\`.
--testRunner=<path>
Vous permet de spécifier un runner de test personnalisé.
--testSequencer=<path>
Vous permet de spécifier un séquenceur de test personnalisé. Veuillez vous référer à la configuration de testSequencer
pour plus de détails.
--testTimeout=<number>
Délai par défaut d'un test en millisecondes. Valeur par défaut : 5000.
--updateSnapshot
Alias : -u
. Utiliser cette option pour ré-enregister chaque snapshot qui échoue durant les tests. Peut être utilisé avec un pattern de suite de test ou avec l'option --testNamePattern
pour ré-enregistrer les snapshots.
--useStderr
Dirige toutes les sorties vers stderr.
--verbose
Afficher les résultats de chaque test avec la hiérarchie de la suite de test.
--version
Alias : -v
. Affiche la version et sort.
--waitNextEventLoopTurnForUnhandledRejectionEvents
Gives one event loop turn to handle rejectionHandled
, uncaughtException
or unhandledRejection
.
Without this flag Jest may report false-positive errors (e.g. actually handled rejection reported) or not report actually unhandled rejection (or report it for different test case).
This option may add a noticeable overhead for fast test suites.
--watch
Surveille les changements dans les fichiers et relance les tests liés aux fichiers modifiés. Si vous voulez relancer tous les tests lorsqu'un fichier a changé, utilisez plutôt l'option --watchAll
.
Use --no-watch
(or --watch=false
) to explicitly disable the watch mode if it was enabled using --watch
. In most CI environments, this is automatically handled for you.
--watchAll
Surveille les changements dans les fichiers et réexécute tous les tests lorsque quelque chose change. Si vous voulez ré-exécuter uniquement les tests qui dépendent des fichiers modifiés, utilisez l'option --watch
.
Use --no-watchAll
(or --watchAll=false
) to explicitly disable the watch mode if it was enabled using --watchAll
. In most CI environments, this is automatically handled for you.
--watchman
Utilisation ou non de watchman
pour l'exploration des fichiers. Par défaut à true
. Désactivez en utilisant --no-watchman
.
--workerThreads
Whether to use worker threads for parallelization. Child processes are used by default.
This is experimental feature. See the workerThreads
configuration option for more details.