Interfaccia a riga di comando
Comandi
vitest
Avvia Vitest nella directory corrente. Passerà automaticamente in modalità watch nell'ambiente di sviluppo e in modalità run in CI.
È possibile specificare un argomento aggiuntivo come filtro per i file di test da eseguire. Ad esempio:
vitest foobar
Eseguirà solo i file di test il cui percorso contiene foobar
. Questo filtro controlla solo l'inclusione e non supporta espressioni regolari o pattern glob (a meno che il terminale non li elabori prima che Vitest riceva il filtro).
vitest run
Esegue una singola esecuzione senza la modalità di osservazione (watch mode).
vitest watch
Esegue tutte le suite di test e rimane in ascolto delle modifiche, rieseguendo i test quando queste si verificano. Equivale all'esecuzione di vitest
senza argomenti. In CI, verrà eseguito vitest run
.
vitest dev
Alias per vitest watch
.
vitest related
Esegue solo i test relativi a un elenco di file sorgente. Funziona con import statici (ad es. import('./index.js')
o import index from './index.js')
), ma non con quelli dinamici (ad es. import(filepath)
). Tutti i file devono essere relativi alla cartella radice.
Utile se utilizzato con lint-staged
o con la configurazione CI.
vitest related /src/index.ts /src/hello-world.js
TIP
Vitest utilizza la modalità watch di default. Se si utilizzano strumenti come lint-staged
, è necessario passare anche l'opzione --run
, in modo che il comando possa terminare correttamente.
// .lintstagedrc.js
export default {
'*.{js,ts}': 'vitest related --run',
};
vitest bench
Esegue solo i test di benchmark, che confrontano le prestazioni.
Opzioni
Opzioni | |
---|---|
-r, --root <path> | Percorso radice |
-c, --config <path> | Percorso del file di configurazione |
-u, --update | Aggiorna snapshot |
-w, --watch | Abilita la modalità di osservazione |
-t, --testNamePattern <pattern> | Esegui i test con nomi completi che corrispondono al pattern regexp specificato |
--dir <path> | Directory base per la scansione dei file di test |
--ui | Abilita l'interfaccia utente |
--open | Apri l'interfaccia utente automaticamente (predefinito: !process.env.CI ) |
--api.port [port] | Specifica la porta del server. Note se la porta è già in uso, Vite proverà automaticamente la successiva porta disponibile quindi questa potrebbe non essere la porta effettiva su cui il server finisce per ascoltare. Se true verrà impostato a 51204 |
--api.host [host] | Specifica su quali indirizzi IP il server dovrebbe ascoltare. Imposta questo su 0.0.0.0 o true per ascoltare su tutti gli indirizzi, inclusi gli indirizzi LAN e pubblici |
--api.strictPort | Imposta su true per uscire se la porta è già in uso, invece di provare automaticamente la successiva porta disponibile |
--silent | Disattiva l'output della console dai test |
--hideSkippedTests | Nascondi i log dei test saltati |
--reporter <name> | Specifica i reporter |
--outputFile <filename/-s> | Scrivi i risultati dei test in un file quando è specificato anche il reporter supporter, usa la notazione a punti di cac per output individuali di più reporter (esempio: --outputFile.tap=./tap.txt) |
--coverage.all | Se includere tutti i file, inclusi quelli non testati, nel report |
--coverage.provider <name> | Seleziona lo strumento per la raccolta della coverage, i valori disponibili sono: "v8", "istanbul" e "custom" |
--coverage.enabled | Abilita la raccolta della coverage. Può essere sovrascritta usando l'opzione CLI --coverage (predefinito: false ) |
--coverage.include <pattern> | File inclusi nella coverage come pattern glob. Può essere specificato più volte quando si utilizzano pattern multipli (predefinito: ** ) |
--coverage.exclude <pattern> | File da escludere dalla coverage. Può essere specificato più volte quando si utilizzano estensioni multiple (predefinito: Consulta coverage.exclude ) |
--coverage.extension <extension> | Estensioni da includere nella coverage. Può essere specificato più volte quando si utilizzano estensioni multiple (predefinito: [".js", ".cjs", ".mjs", ".ts", ".mts", ".cts", ".tsx", ".jsx", ".vue", ".svelte"] ) |
--coverage.clean | Pulisci i risultati della coverage prima di eseguire i test (predefinito: true) |
--coverage.cleanOnRerun | Pulisci il report di coverage al nuovo lancio dell'osservazione (predefinito: true) |
--coverage.reportsDirectory <path> | Directory in cui scrivere il report di coverage (predefinito: ./coverage) |
--coverage.reporter <name> | Coverage reporters da usare. Visita coverage.reporter per maggiori informazioni (predefinito: ["text", "html", "clover", "json"] ) |
--coverage.reportOnFailure | Genera il report di coverage anche quando i test falliscono (predefinito: false ) |
--coverage.allowExternal | Raccogli la coverage dei file al di fuori della root del progetto (predefinito: false ) |
--coverage.skipFull | Non mostrare i file con il 100% di statement, branch e function coverage (predefinito: false ) |
--coverage.thresholds.100 | Scorciatoia per impostare tutte le soglie di coverage a 100 (predefinito: false ) |
--coverage.thresholds.perFile | Controlla le soglie per file. Vedi --coverage.thresholds.lines , --coverage.thresholds.functions , --coverage.thresholds.branches e --coverage.thresholds.statements per le soglie effettive (predefinito: false ) |
--coverage.thresholds.autoUpdate | Aggiorna i valori di soglia: "lines", "functions", "branches" e "statements" al file di configurazione quando la coverage corrente è al di sopra delle soglie configurate (predefinito: false ) |
--coverage.thresholds.lines <number> | Soglia per le righe. Visita istanbuljs per maggiori informazioni. Questa opzione non è disponibile per i custom provider |
--coverage.thresholds.functions <number> | Soglia per le funzioni. Visita istanbuljs per maggiori informazioni. Questa opzione non è disponibile per i custom provider |
--coverage.thresholds.branches <number> | Soglia per i branch. Visita istanbuljs per maggiori informazioni. Questa opzione non è disponibile per i custom provider |
--coverage.thresholds.statements <number> | Soglia per gli statement. Visita istanbuljs per maggiori informazioni. Questa opzione non è disponibile per i custom provider |
--coverage.ignoreClassMethods <name> | Array di nomi di metodi di classe da ignorare per la coverage. Visita istanbuljs per maggiori informazioni. Questa opzione è disponibile solo per i provider istanbul (predefinito: [] ) |
--coverage.processingConcurrency <number> | Limite di concorrenza utilizzato durante l'elaborazione dei risultati della coverage. (predefinito: min tra 20 e il numero di CPU) |
--coverage.customProviderModule <path> | Specifica il nome del modulo o il percorso per il modulo custom coverage provider. Visita Custom Coverage Provider per maggiori informazioni. Questa opzione è disponibile solo per i custom provider |
--coverage.watermarks.statements <watermarks> | Watermark alti e bassi per gli statements nel formato di <alto>,<basso> |
--coverage.watermarks.lines <watermarks> | Watermark alti e bassi per le linee nel formato di <alto>,<basso> |
--coverage.watermarks.branches <watermarks> | Watermark alti e bassi per i branch nel formato di <alto>,<basso> |
--coverage.watermarks.functions <watermarks> | Watermark alti e bassi per le funzioni nel formato di <alto>,<basso> |
--mode <name> | Sovrascrive la modalità Vite (predefinito: test o benchmark ) |
--workspace <path> | Percorso di un file di configurazione workspace |
--isolate | Esegui ogni file di test in isolamento. Per disabilitare l'isolamento, usa --no-isolate (predefinito: true ) |
--globals | Inietta le API globalmente |
--dom | Simula l'API del browser con happy-dom |
--browser.enabled | Esegui i test nel browser. Equivalente a --browser.enabled (predefinito: false ) |
--browser.name <name> | Esegui tutti i test in un browser specifico. Alcuni browser sono disponibili solo per provider specifici (vedi --browser.provider ). Visita browser.name per maggiori informazioni |
--browser.headless | Esegui il browser in modalità headless (cioè senza aprire la GUI (Graphical User Interface)). Se stai eseguendo Vitest in CI, sarà abilitata di default (predefinito: process.env.CI ) |
--browser.api.port [port] | Specifica la porta del server. Note se la porta è già in uso, Vite proverà automaticamente la successiva porta disponibile quindi questa potrebbe non essere la porta effettiva su cui il server finisce per ascoltare. Se true verrà impostato a 63315 |
--browser.api.host [host] | Specifica su quali indirizzi IP il server dovrebbe ascoltare. Imposta questo su 0.0.0.0 o true per ascoltare su tutti gli indirizzi, inclusi gli indirizzi LAN e pubblici |
--browser.api.strictPort | Imposta su true per uscire se la porta è già in uso, invece di provare automaticamente la successiva porta disponibile |
--browser.provider <name> | Provider utilizzato per eseguire test nel browser. Alcuni browser sono disponibili solo per provider specifici. Può essere "webdriverio", "playwright" oppure il percorso di un custom provider. Visita browser.provider per maggiori informazioni (predefinito: "webdriverio" ) |
--browser.providerOptions <options> | Opzioni che vengono passate a un browser provider. Visita browser.providerOptions per maggiori informazioni |
--browser.slowHijackESM | Consenti a Vitest di usare la sua risoluzione dei moduli nel browser per abilitare API come vi.mock e vi.spyOn. Visita browser.slowHijackESM per maggiori informazioni (predefinito: false ) |
--browser.isolate | Esegui ogni file di test del browser in isolamento. Per disabilitare l'isolamento, usa --browser.isolate=false (predefinito: true ) |
--browser.fileParallelism | Indica se tutti i file di test devono essere eseguiti in parallelo. Usa --browser.file-parallelism=false per disabilitare (predefinito: uguale a --file-parallelism ) |
--pool <pool> | Specifica il pool, se non si esegue nel browser (predefinito: threads ) |
--poolOptions.threads.isolate | Isola i test nel pool di threads (predefinito: true ) |
--poolOptions.threads.singleThread | Esegui i test all'interno di un singolo thread (predefinito: false ) |
--poolOptions.threads.maxThreads <workers> | Numero massimo di threads per eseguire i test |
--poolOptions.threads.minThreads <workers> | Numero minimo di threads per eseguire i test |
--poolOptions.threads.useAtomics | Usa Atomics per sincronizzare i thread. Questo può migliorare le prestazioni in alcuni casi, ma potrebbe causare segfault in versioni precedenti di Node (predefinito: false ) |
--poolOptions.vmThreads.isolate | Isola i test nel pool di threads (predefinito: true ) |
--poolOptions.vmThreads.singleThread | Esegui i test all'interno di un singolo thread (predefinito: false ) |
--poolOptions.vmThreads.maxThreads <workers> | Numero massimo di threads per eseguire i test |
--poolOptions.vmThreads.minThreads <workers> | Numero minimo di threads per eseguire i test |
--poolOptions.vmThreads.useAtomics | Usa Atomics per sincronizzare i thread. Questo può migliorare le prestazioni in alcuni casi, ma potrebbe causare segfault in versioni precedenti di Node (predefinito: false ) |
--poolOptions.vmThreads.memoryLimit <limit> | Limite di memoria per il pool di VM threads. Se vedi perdite di memoria, prova a modificare questo valore. |
--poolOptions.forks.isolate | Isola i test nel pool di forks (predefinito: true ) |
--poolOptions.forks.singleFork | Esegui i test all'interno di un singolo child_process (predefinito: false ) |
--poolOptions.forks.maxForks <workers> | Numero massimo di processi per eseguire i test |
--poolOptions.forks.minForks <workers> | Numero minimo di processi per eseguire i test |
--poolOptions.vmForks.isolate | Isola i test nel pool di forks (predefinito: true ) |
--poolOptions.vmForks.singleFork | Esegui i test all'interno di un singolo child_process (predefinito: false ) |
--poolOptions.vmForks.maxForks <workers> | Numero massimo di processi per eseguire i test |
--poolOptions.vmForks.minForks <workers> | Numero minimo di processi per eseguire i test |
--poolOptions.vmForks.memoryLimit <limit> | Limite di memoria per il pool di VM forks. Se vedi perdite di memoria, prova a modificare questo valore. |
--fileParallelism | Indica se tutti i file di test devono essere eseguiti in parallelo. Usa --no-file-parallelism per disabilitare (predefinito: true ) |
--maxWorkers <workers> | Numero massimo di workers per eseguire i test |
--minWorkers <workers> | Numero minimo di workers per eseguire i test |
--environment <name> | Specifica l'ambiente di esecuzione, se non si esegue nel browser (predefinito: node ) |
--passWithNoTests | Supera il test quando non vengono trovati test |
--logHeapUsage | Mostra la dimensione dell'heap per ogni test quando si esegue in node |
--allowOnly | Consenti i test e le suite contrassegnati come only (predefinito: !process.env.CI ) |
--dangerouslyIgnoreUnhandledErrors | Ignora qualsiasi errore non gestito che si verifica |
--shard <shards> | Test suite shard da eseguire in un formato di <index>/<count> |
--changed [since] | Esegui i test che sono influenzati dai file modificati (predefinito: false ) |
--sequence.shuffle.files | Esegui i file in ordine casuale. I test a lunga esecuzione non inizieranno prima se abiliti questa opzione. (predefinito: false ) |
--sequence.shuffle.tests | Esegui i test in un ordine casuale (predefinito: false ) |
--sequence.concurrent | Fai eseguire i test in parallelo (predefinito: false ) |
--sequence.seed <seed> | Imposta il seme di randomizzazione. Questa opzione non avrà effetto se --sequence.shuffle è falso. Visita la pagina "Random Seed" per maggiori informazioni |
--sequence.hooks <order> | Modifica l'ordine in cui vengono eseguiti gli hook. I valori accettati sono: "stack", "list" e "parallel". Visita sequence.hooks per maggiori informazioni (predefinito: "parallel" ) |
--sequence.setupFiles <order> | Modifica l'ordine in cui vengono eseguiti i file di setup. I valori accettati sono: "list" e "parallel". Se impostato su "list", eseguirà i file di setup nell'ordine in cui sono definiti. Se impostato su "parallel", eseguirà i file di setup in parallelo (predefinito: "parallel" ) |
--inspect [[host:]port] | Abilita l'inspector di Node.js (predefinito: 127.0.0.1:9229 ) |
--inspectBrk [[host:]port] | Abilita l'inspector di Node.js e interrompi prima che il test inizi |
--testTimeout <timeout> | Timeout predefinito di un test in millisecondi (predefinito: 5000 ) |
--hookTimeout <timeout> | Timeout predefinito di un hook in millisecondi (predefinito: 10000 ) |
--bail <number> | Interrompi l'esecuzione dei test quando il numero indicato di test è fallito (predefinito: 0 ) |
--retry <times> | Riprova il test un numero specifico di volte se fallisce (predefinito: 0 ) |
--diff <path> | Percorso di un file di configurazione diff che verrà utilizzato per generare l'interfaccia diff |
--exclude <glob> | Glob aggiuntivi di file da escludere dai test |
--expandSnapshotDiff | Mostra la diff completa quando lo snapshot fallisce |
--disableConsoleIntercept | Disabilita l'intercettazione automatica dei log della console (predefinito: false ) |
--typecheck.enabled | Abilita il typechecking insieme ai test (predefinito: false ) |
--typecheck.only | Esegui solo i test di typecheck. Questo abilita automaticamente il typecheck (predefinito: false ) |
--typecheck.checker <name> | Specifica il typechecker da utilizzare. I valori disponibili sono: "tcs" e "vue-tsc" e un percorso a un eseguibile (predefinito: "tsc" ) |
--typecheck.allowJs | Consenti che i file JavaScript siano sottoposti a typecheck. Per impostazione predefinita, prende il valore da tsconfig.json |
--typecheck.ignoreSourceErrors | Ignora gli errori di tipo dai file sorgente |
--typecheck.tsconfig <path> | Percorso di un file tsconfig personalizzato |
--project <name> | Il nome del progetto da eseguire se stai utilizzando la funzionalità workspace di Vitest. Questo può essere ripetuto per più progetti: --project=1 --project=2 . Puoi anche filtrare i progetti usando caratteri jolly come --project=packages* |
--slowTestThreshold <threshold> | Soglia in millisecondi per cui un test è considerato lento (predefinito: 300 ) |
--teardownTimeout <timeout> | Timeout predefinito di una funzione teardown in millisecondi (predefinito: 10000 ) |
--maxConcurrency <number> | Numero massimo di test concorrenti in una suite (predefinito: 5 ) |
--run | Disabilita la modalità di osservazione |
--segfaultRetry <times> | Riprova la test suite se si arresta in modo anomalo a causa di un segfault (predefinito: true ) |
--no-color | Rimuovi i colori dall'output della console |
--clearScreen | Pulisci lo schermo del terminale quando si rieseguono i test in modalità di osservazione (predefinito: true ) |
--standalone | Avvia Vitest senza eseguire test. I filtri dei file verranno ignorati, i test verranno eseguiti solo alla modifica (predefinito: false ) |
TIP
Vitest supporta sia il camel case che il kebab case per gli argomenti della CLI. Ad esempio, --passWithNoTests
e --pass-with-no-tests
funzioneranno entrambi (--no-color
e --inspect-brk
sono le eccezioni).
Vitest supporta anche diversi modi per specificare il valore: --reporter dot
e --reporter=dot
sono entrambi validi.
Se l'opzione supporta un array di valori, è necessario passare l'opzione più volte:
vitest --reporter=dot --reporter=default
Le opzioni booleane possono essere negate con il prefisso no-
. Specificare il valore come false
funziona allo stesso modo:
vitest --no-api
vitest --api=false
changed
Tipo:
boolean | string
Predefinito: false
Esegue i test solo sui file modificati. Se non viene fornito alcun valore, verranno eseguiti i test sulle modifiche non committate (incluse quelle staged e unstaged).
Per eseguire i test sulle modifiche apportate all'ultimo commit, è possibile utilizzare
--changed HEAD~1
. È inoltre possibile passare l'hash del commit (ad esempio--changed 09a9920
) o il nome del branch (ad esempio--changed origin/develop
).Se utilizzato con la code coverage, il report conterrà solo i file correlati alle modifiche.
Se abbinato all'opzione di configurazione
forceRerunTriggers
, verrà eseguita l'intera suite di test se almeno uno dei file elencati nell'elencoforceRerunTriggers
viene modificato. Per impostazione predefinita, le modifiche al file di configurazione Vitest e apackage.json
eseguiranno sempre di nuovo l'intera suite.
shard
Tipo:
string
Predefinito: disabilitato
Partiziona la suite di test da eseguire in un formato di
<index>
/<count>
, dove:count
è un intero positivo, che rappresenta il numero di parti in cui dividere i test.index
è un intero positivo, che rappresenta l'indice della parte da eseguire.
Questo comando divide tutti i test in
count
parti uguali ed esegue solo quelli che si trovano nella parteindex
. Ad esempio, per dividere la suite di test in tre parti, utilizzare:shvitest run --shard=1/3 vitest run --shard=2/3 vitest run --shard=3/3
WARNING
Questa opzione non è compatibile con --watch
abilitato (abilitato in modalità dev per impostazione predefinita).