Vitest の設定
Vitest の設定ファイルを作成するには、ガイドを参照してください。設定を進める前に、Vitest の設定解決の仕組みを理解しておくことを推奨します。
WARNING
ここに記載されているオプションはすべて、設定ファイルの test プロパティ内に記述します。
export default defineConfig({
test: {
exclude: [],
},
});TIP
以下のオプションに加えて、Vite のあらゆる設定オプションも使用できます。例えば、グローバル変数を定義する define や、エイリアスを定義する resolve.alias などがあります。
ワークスペース プロジェクトの設定内でサポートされていない設定オプションには、* マークが付いています。
include
- 型:
string[] - デフォルト:
['**/*.{test,spec}.?(c|m)[jt]s?(x)'] - CLI:
vitest [...include],vitest **/*.test.js
テストファイルにマッチさせるグロブパターンのリストです。
注
カバレッジを使用する場合、Vitest はテストファイル include パターンをカバレッジのデフォルト exclude パターンに自動的に追加します。coverage.exclude を参照してください。
exclude
- 型:
string[] - デフォルト:
['**/node_modules/**', '**/dist/**', '**/cypress/**', '**/.{idea,git,cache,output,temp}/**', '**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*'] - CLI:
vitest --exclude "**/excluded-file"
テストファイルから除外するグロブパターンのリストです。
WARNING
このオプションはカバレッジには影響しません。カバレッジレポートから特定のファイルを除外する必要がある場合は、coverage.exclude を使用してください。
このオプションは、CLI フラグで指定した場合に設定を上書きしない唯一のオプションです。--exclude フラグで追加されたすべてのグロブパターンは、設定ファイルの exclude に追加されます。
includeSource
- 型:
string[] - デフォルト:
[]
ソースコード内のテストファイルに対するグロブパターンを指定します。
このオプションを定義すると、Vitest は import.meta.vitest を含む、指定されたパターンに一致するすべてのファイルを実行します。
server
- 型:
{ sourcemap?, deps?, ... }
Vite-Node サーバーのオプションです。
server.sourcemap
- 型:
'inline' | boolean - デフォルト:
'inline'
インラインソースマップをモジュールに挿入します。
server.debug
- 型:
{ dumpModules?, loadDumppedModules? }
Vite-Node デバッガーのオプションです。
server.debug.dumpModules
- 型:
boolean | string
変換されたモジュールをファイルシステムにダンプします。文字列を渡すと、指定されたパスにダンプされます。
server.debug.loadDumppedModules
- 型:
boolean
ダンプされたモジュールが存在する場合、ファイルシステムから読み込みます。ファイルシステム上のダンプ結果を変更してデバッグする場合に便利です。
server.deps
- 型:
{ external?, inline?, ... }
依存関係の解決を制御します。
server.deps.external
- 型:
(string | RegExp)[] - デフォルト:
[/\/node_modules\//]
外部化とは、Vite がパッケージをネイティブ Node.js にバイパスさせることを意味します。外部化された依存関係には、Vite のトランスフォーマーとリゾルバーが適用されないため、リロード時の HMR はサポートされません。デフォルトでは、node_modules 内のすべてのパッケージが外部化されます。
これらのオプションは、node_modules に存在するパッケージ名、または deps.moduleDirectories で指定されているディレクトリ内のパッケージ名をサポートします。例えば、packages/some-name 内にあるパッケージ @company/some-name は some-name として指定する必要があり、packages は deps.moduleDirectories に含める必要があります。基本的に、Vitest は実際のパッケージ名ではなく、常にファイルパスをチェックします。
正規表現を使用する場合、Vitest はパッケージ名ではなく、ファイルパス に対して評価を行います。
server.deps.inline
- 型:
(string | RegExp)[] | true - デフォルト:
[]
Vite がインラインモジュールとして処理するモジュールを指定します。これは、(Node.js が処理できない) ESM 形式で .js ファイルを出力するパッケージを処理するのに役立ちます。
true を指定すると、すべての依存関係がインライン化されます。ssr.noExternal で指定されたすべての依存関係は、デフォルトでインライン化されます。
server.deps.fallbackCJS
- 型
boolean - デフォルト:
false
依存関係が有効な ESM パッケージである場合、パスに基づいて CJS バージョンを推測しようとします。これは、依存関係に誤った ESM ファイルが含まれている場合に役立つことがあります。
パッケージが ESM モードと CJS モードで異なるロジックを持っている場合、予期せぬ動作を引き起こす可能性があります。
server.deps.cacheDir
- 型
string - デフォルト:
'node_modules/.vite'
キャッシュファイルを保存するディレクトリ。
deps
- 型:
{ optimizer?, ... }
依存関係の解決を制御します。
deps.optimizer
- 型:
{ ssr?, web? } - 参照: 依存関係の最適化オプション
依存関係の最適化を有効にします。テストが多い場合にパフォーマンスが向上する可能性があります。
Vitest が include にリストされている外部ライブラリを検出すると、esbuild を使用して単一のファイルにバンドルし、モジュール全体としてインポートします。これにはいくつかの理由があります。
- 多数のインポートを含むパッケージのインポートはコストがかかります。それらを 1 つのファイルにバンドルすることで、大幅な時間を節約できます。
- UI ライブラリのインポートは、Node.js 環境での実行を想定していないため、コストがかかります。
alias設定がバンドルされたパッケージ内で有効になります。- テストのコードは、ブラウザで実行される方法に近い方法で実行されます。
deps.optimizer?.[mode].include オプションで指定されたパッケージのみがバンドルされることに注意してください (Svelte のように、一部のプラグインはこれを自動的に設定します)。利用可能なオプションの詳細については、Vite のドキュメントを参照してください (Vitest は disable および noDiscovery オプションをサポートしていません)。デフォルトでは、Vitest は jsdom および happy-dom 環境に optimizer.web を使用し、node および edge 環境に optimizer.ssr を使用しますが、transformMode で設定可能です。
このオプションは、optimizeDeps 設定も継承します (web の場合、Vitest は optimizeDeps を拡張し、ssr の場合は ssr.optimizeDeps を拡張します)。deps.optimizer で include/exclude オプションを再定義すると、テストの実行時に optimizeDeps が拡張されます。Vitest は、exclude にリストされている場合、include から同じオプションを自動的に削除します。
TIP
コードは実際には cacheDir または test.cache.dir ディレクトリに存在するため、デバッグのために node_modules のコードを直接編集することはできません。console.log ステートメントでデバッグする場合は、直接編集するか、deps.optimizer?.[mode].force オプションを使用して強制的に再バンドルしてください。
deps.optimizer.{mode}.enabled
- 型:
boolean - デフォルト:
false
依存関係の最適化を有効にします。
deps.web
- 型:
{ transformAssets?, ... }
変換モードが web に設定されている場合に外部ファイルに適用されるオプションです。デフォルトでは、jsdom と happy-dom は web モードを使用し、node と edge 環境は ssr 変換モードを使用するため、これらのオプションはこれらの環境内のファイルには影響しません。
通常、node_modules 内のファイルは外部化されますが、これらのオプションは server.deps.external 内のファイルにも影響します。
deps.web.transformAssets
- 型:
boolean - デフォルト:
true
Vitest に、アセットファイル (.png、.svg、.jpg など) を処理させ、Vite がブラウザで行うように解決させるかどうかを指定します。
クエリが指定されていない場合、このモジュールのデフォルトエクスポートはアセットへのパスになります。
deps.web.transformCss
- 型:
boolean - デフォルト:
true
Vitest は CSS (.css、.scss、.sass など) ファイルを処理し、Vite がブラウザで行うようにそれらを解決する必要がありますか。
CSS ファイルが css オプションで無効になっている場合、このオプションは ERR_UNKNOWN_FILE_EXTENSION エラーを抑制するだけです。
deps.web.transformGlobPattern
- 型:
RegExp | RegExp[] - デフォルト:
[]
変換が必要な外部ファイルに一致する正規表現パターン。
デフォルトでは、node_modules 内のファイルは外部化され、変換されません。ただし、CSS またはアセットであり、対応するオプションが無効になっていない場合は除きます。
deps.interopDefault
- 型:
boolean - デフォルト:
true
CJS モジュールのデフォルトエクスポートを名前付きエクスポートとして解釈します。一部の依存関係は CJS モジュールのみをバンドルし、require の代わりに import 構文を使用してパッケージがインポートされるときに Node.js が静的に分析できる名前付きエクスポートを使用しません。名前付きエクスポートを使用して Node.js 環境でそのような依存関係をインポートすると、次のエラーが表示されます。
import { read } from 'fs-jetpack';
^^^^
SyntaxError: Named export 'read' not found. The requested module 'fs-jetpack' is a CommonJS module, which may not support all module.exports as named exports.
CommonJS modules can always be imported via the default export.Vitest は静的分析を行わず、コードを実行する前にエラーを検出できないため、この機能が無効になっている場合、テストを実行するときにこのエラーが表示される可能性が高くなります。
TypeError: createAsyncThunk is not a function
TypeError: default is not a functionデフォルトでは、Vitest はこれをバイパスするためにバンドラーを使用していると想定し、エラーを発生させませんが、コードが処理されない場合は、この動作を手動で無効にすることができます。
deps.moduleDirectories
- 型:
string[] - デフォルト:
['node_modules']
モジュールディレクトリとして扱うディレクトリのリストです。この設定オプションは、vi.mock の動作に影響します。ファクトリが提供されておらず、モック対象のパスが moduleDirectories のいずれかに一致する場合、Vitest はプロジェクトの root で __mocks__ フォルダを探してモックを解決しようとします。
このオプションは、依存関係を外部化するときにファイルをモジュールとして扱う必要があるかどうかにも影響します。デフォルトでは、Vitest は Vite 変換ステップをバイパスして、ネイティブ Node.js で外部モジュールをインポートします。
このオプションを設定すると、デフォルト値が 上書き されます。node_modules でパッケージを検索する場合は、他のオプションと一緒に含める必要があります。
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
deps: {
moduleDirectories: ['node_modules', path.resolve('../../packages')],
},
},
});runner
- 型:
VitestRunnerConstructor - デフォルト: テストの実行時は
node、ベンチマークの実行時はbenchmark
カスタムテストランナーへのパス。これは高度な機能であり、カスタムライブラリランナーで使用することを推奨します。詳細については、ドキュメントを参照してください。
benchmark
- 型:
{ include?, exclude?, ... }
vitest bench コマンド実行時に使用されるオプションです。
benchmark.include
- 型:
string[] - デフォルト:
['**/*.{bench,benchmark}.?(c|m)[jt]s?(x)']
ベンチマークテストファイルのグロブパターンを指定します。
benchmark.exclude
- 型:
string[] - デフォルト:
['node_modules', 'dist', '.idea', '.git', '.cache']
ベンチマークテストファイルから除外するグロブパターンを指定します。
benchmark.includeSource
- 型:
string[] - デフォルト:
[]
ソースコード内のベンチマークテストファイルに対するグロブパターンを指定します。このオプションは、includeSource と同様です。
このオプションを定義すると、Vitest は import.meta.vitest を含む、指定されたパターンに一致するすべてのファイルを実行します。
benchmark.reporters
- 型:
Arrayable<BenchmarkBuiltinReporters | Reporter> - デフォルト:
'default'
出力に使用するカスタムレポーターを指定します。1 つ以上の組み込みレポート名、レポーターインスタンス、またはカスタムレポーターへのパスを指定できます。
benchmark.outputFile
benchmark.outputJson の代わりに非推奨になりました。
benchmark.outputJson
- 型:
string | undefined - デフォルト:
undefined
ベンチマーク結果を保存するためのファイルパス。これは、後で --compare オプションで使用できます。
例:
# メインブランチの結果を保存
git checkout main
vitest bench --outputJson main.json
# ブランチを切り替えてメインと比較
git checkout feature
vitest bench --compare main.jsonbenchmark.compare
- 型:
string | undefined - デフォルト:
undefined
現在の実行結果と比較するための、過去のベンチマーク結果のファイルパス。
alias
- 型:
Record<string, string> | Array<{ find: string | RegExp, replacement: string, customResolver?: ResolverFunction | ResolverObject }>
テスト実行時にカスタムエイリアスを定義します。これらは resolve.alias のエイリアスとマージされます。
WARNING
Vitest は Vite SSR プリミティブを使用してテストを実行しますが、特定の問題点があります。
globals
- 型:
boolean - デフォルト:
false - CLI:
--globals,--globals=false
デフォルトでは、Vitest は明示性を高めるためにグローバル API を提供していません。Jest のように API をグローバルに使用したい場合は、--globals オプションを CLI に渡すか、設定ファイルに globals: true を追加できます。
// vitest.config.ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
globals: true,
},
});TypeScript をグローバル API で動作させるには、tsconfig.json の types フィールドに vitest/globals を追加します。
// tsconfig.json
{
"compilerOptions": {
"types": ["vitest/globals"]
}
}プロジェクトで unplugin-auto-import を既に使用している場合は、これらの API を自動インポートするために直接使用することもできます。
// vitest.config.ts
import { defineConfig } from 'vitest/config';
import AutoImport from 'unplugin-auto-import/vite';
export default defineConfig({
plugins: [
AutoImport({
imports: ['vitest'],
dts: true, // generate TypeScript declaration
}),
],
});environment
- タイプ:
'node' | 'jsdom' | 'happy-dom' | 'edge-runtime' | string - デフォルト:
'node' - CLI:
--environment=<env>
テストで使用する環境を指定します。Vitest のデフォルト環境は Node.js 環境です。Web アプリケーションをテストする場合は、jsdom または happy-dom を使用して、ブラウザのような環境をエミュレートできます。Edge Functions をテストする場合は、edge-runtime 環境を使用できます。
TIP
ブラウザモードを使用して、環境をモックせずにブラウザで統合テストまたは単体テストを実行することもできます。
ファイルの先頭に @vitest-environment のドックブロックまたはコメントを追加することで、そのファイル内のすべてのテストで使用する環境を個別に指定できます。
ドックブロック形式:
/**
* @vitest-environment jsdom
*/
test('このテストファイルでは jsdom を使用する', () => {
const element = document.createElement('div');
expect(element).not.toBeNull();
});コメント形式:
// @vitest-environment happy-dom
test('このテストファイルでは happy-dom を使用する', () => {
const element = document.createElement('div');
expect(element).not.toBeNull();
});Jest との互換性のために、@jest-environment も使用できます。
/**
* @jest-environment jsdom
*/
test('このテストファイルでは jsdom を使用する', () => {
const element = document.createElement('div');
expect(element).not.toBeNull();
});--isolate=false フラグを指定して Vitest を実行している場合、テストは node、jsdom、happy-dom、edge-runtime、custom environments の順に実行されます。つまり、同じ環境のテストはグループ化され、順番に実行されます。
0.23.0 以降では、カスタム環境を定義することもできます。組み込み環境以外の環境を使用すると、Vitest は vitest-environment-${name} という名前のパッケージのロードを試みます。このパッケージは、Environment 型のオブジェクトをエクスポートする必要があります。
import type { Environment } from 'vitest';
export default <Environment>{
name: 'custom',
transformMode: 'ssr',
setup() {
// カスタムセットアップ
return {
teardown() {
// この環境で実行されたすべてのテストの後に呼び出される
},
};
},
};Vitest は、拡張を容易にするために、vitest/environments エントリを介して builtinEnvironments も公開しています。環境の拡張に関する詳細は、ガイドを参照してください。
TIP
jsdom 環境は、現在の JSDOM インスタンスと同じ jsdom グローバル変数を公開しています。TypeScript でこれを認識させたい場合は、この環境を使用するときに vitest/jsdom を tsconfig.json に追加できます。
{
"compilerOptions": {
"types": ["vitest/jsdom"]
}
}environmentOptions
- タイプ:
Record<'jsdom' | string, unknown> - デフォルト:
{}
これらのオプションは、現在の environment の setup メソッドに渡されます。デフォルトでは、テスト環境として JSDOM を使用している場合にのみ、JSDOM オプションを設定できます。
environmentMatchGlobs
- タイプ:
[string, EnvironmentName][] - デフォルト:
[]
グロブパターンに基づいて、テスト環境を自動的に割り当てることができます。最初に一致したパターンが使用されます。
例:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
environmentMatchGlobs: [
// tests/dom 内のすべてのテストは jsdom で実行される
['tests/dom/**', 'jsdom'],
// tests/ 内の .edge.test.ts を含むすべてのテストは edge-runtime で実行される
['**/*.edge.test.ts', 'edge-runtime'],
// ...
],
},
});poolMatchGlobs
- タイプ:
[string, 'threads' | 'forks' | 'vmThreads' | 'vmForks' | 'typescript'][] - デフォルト:
[]
グロブパターンに基づいて、テストの実行に使用するプールを自動的に割り当てます。最初に一致したパターンが使用されます。
例:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
poolMatchGlobs: [
// "worker-specific" ディレクトリ内のすべてのテストは、`--pool=threads` を有効にした場合と同様にワーカー内で実行される
['**/tests/worker-specific/**', 'threads'],
// "browser" ディレクトリ内のすべてのテストを実際のブラウザで実行する
['**/tests/browser/**', 'browser'],
// 他のすべてのテストは、他のグロブを指定しない限り、"browser.enabled" および "threads" オプションに基づいて実行される
// ...
],
},
});update*
- タイプ:
boolean - デフォルト:
false - CLI:
-u,--update,--update=false
スナップショットを更新します。このオプションを指定すると、変更されたすべてのスナップショットが更新され、不要になったスナップショットが削除されます。
watch*
- タイプ:
boolean - デフォルト:
!process.env.CI - CLI:
-w,--watch,--watch=false
ウォッチモードを有効にします。
root
- タイプ:
string - CLI:
-r <path>,--root=<path>
プロジェクトのルートディレクトリを指定します。
dir
- 型:
string - CLI:
--dir=<path> - デフォルト:
rootと同じ
テストファイルをスキャンするベースディレクトリ。ルートがプロジェクト全体をカバーしている場合、このオプションを指定することでテストの検出を高速化できます。
reporters*
- タイプ:
Reporter | Reporter[] - デフォルト:
'default' - CLI:
--reporter=<name>,--reporter=<name1> --reporter=<name2>
テスト結果の出力に使用するカスタムレポーターを指定します。レポーターは、Reporter インスタンス、組み込みレポーターを選択する文字列、またはカスタム実装へのパス(例:'./path/to/reporter.ts'、'@scope/reporter')を指定できます。
outputFile*
- タイプ:
string | Record<string, string> - CLI:
--outputFile=<path>,--outputFile.json=./path
--reporter=json、--reporter=html、または --reporter=junit オプションも指定されている場合に、テスト結果を指定されたファイルに書き込みます。複数のレポーターを使用する場合、文字列の代わりにオブジェクトを指定することで、各レポーターの出力を個別に定義できます。
pool*
- タイプ:
'threads' | 'forks' | 'vmThreads' | 'vmForks' - デフォルト:
'forks' - CLI:
--pool=threads
テストの実行に使用するプールを指定します。
threads*
tinypool(Piscina の軽量フォーク)を使用してマルチスレッドを有効にします。スレッドを使用する場合、process.chdir() などのプロセス関連の API は使用できません。Prisma、bcrypt、canvas などのネイティブコードで記述された一部のライブラリは、複数のスレッドで実行すると問題が発生し、セグメンテーションフォルトが発生する可能性があります。このような場合は、代わりに forks プールを使用することをお勧めします。
forks*
threads プールと同様ですが、tinypool を介して worker_threads の代わりに child_process を使用します。テストとメインプロセス間の通信は、threads プールほど高速ではありません。process.chdir() などのプロセス関連の API は、forks プールで使用できます。
vmThreads*
VM コンテキスト(サンドボックス内)を使用して、threads プールでテストを実行します。
これにより、テストの実行が高速になりますが、ESM コードを実行すると VM モジュールが不安定になる場合があります。また、テストでメモリリークが発生する可能性があります。それを回避するには、poolOptions.vmThreads.memoryLimit の値を手動で調整することを検討してください。
WARNING
サンドボックス環境でコードを実行することには、いくつかの利点(テストの高速化)がありますが、多くの欠点もあります。
- (
fs、pathなど) などのネイティブモジュール内のグローバル変数は、テスト環境に存在するグローバル変数とは異なります。その結果、これらのネイティブモジュールによってスローされるエラーは、コードで使用されているものとは異なる Error コンストラクターを参照します。
try {
fs.writeFileSync('/doesnt exist');
} catch (err) {
console.log(err instanceof Error); // false
}- ES モジュールをインポートすると、それらが無期限にキャッシュされ、多くのコンテキスト (テストファイル) がある場合にメモリリークが発生します。Node.js にはそのキャッシュをクリアする API はありません。
- サンドボックス環境では、グローバル変数へのアクセスに時間がかかります。
このオプションを使用する場合は、これらの問題に注意してください。Vitest チームは、こちら側で問題を修正することはできません。
vmForks*
vmThreads プールと同様ですが、tinypool を介して worker_threads の代わりに child_process を使用します。テストとメインプロセス間の通信は、vmThreads プールほど高速ではありません。process.chdir() などのプロセス関連の API は、vmForks プールで使用できます。このプールには、vmThreads にリストされているのと同じ注意点があることに注意してください。
poolOptions*
- タイプ:
Record<'threads' | 'forks' | 'vmThreads' | 'vmForks', {}> - デフォルト:
{}
各プールのオプションを設定します。
poolOptions.threads
threads プールのオプション。
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
poolOptions: {
threads: {
// Threads 関連のオプションをここに記述します
},
},
},
});poolOptions.threads.maxThreads*
- 型:
number | string - デフォルト: 利用可能な CPU
スレッドの最大数または割合。環境変数 VITEST_MAX_THREADS を使用することもできます。
poolOptions.threads.minThreads*
- 型:
number | string - デフォルト: 利用可能な CPU
スレッドの最小数または割合。環境変数 VITEST_MIN_THREADS を使用することもできます。
poolOptions.threads.singleThread
- タイプ:
boolean - デフォルト:
false
同じ環境のすべてのテストを単一のワーカースレッド内で実行します。これにより、組み込みのモジュール分離が無効になります (ソースコードまたは インライン化 されたコードは、テストごとに再評価されます) が、テストのパフォーマンスが向上する可能性があります。
WARNING
このオプションはテストを強制的に順番に実行させますが、Jest の --runInBand とは異なります。Vitest は、テストを並行して実行するだけでなく、分離を提供するためにもワーカーを使用します。このオプションを無効にすると、テストは順番に実行されますが、同じグローバルコンテキストで実行されるため、自分で分離を提供する必要があります。
グローバル状態に依存している場合 (フロントエンドフレームワークは通常そうですが)、またはコードがテストごとに個別に定義される環境に依存している場合は、あらゆる種類の問題が発生する可能性があります。ただし、グローバル状態に必ずしも依存しないテストや、それを簡単に回避できるテストにとっては、速度が向上する可能性があります (最大 3 倍高速)。
poolOptions.threads.useAtomics*
- タイプ:
boolean - デフォルト:
false
Atomics を使用してスレッドを同期します。
これにより、パフォーマンスが向上する場合がありますが、古い Node バージョンではセグメンテーション違反が発生する可能性があります。
poolOptions.threads.isolate
- タイプ:
boolean - デフォルト:
true
テストファイルごとに環境を分離します。
poolOptions.threads.execArgv*
- タイプ:
string[] - デフォルト:
[]
スレッド内の node プロセスに追加の引数を渡します。詳細については、コマンドライン API | Node.js を参照してください。
WARNING
一部のオプションはワーカーをクラッシュさせる可能性があるため、使用する場合は注意してください (例: --prof、--title)。https://github.com/nodejs/node/issues/41103 を参照してください。
poolOptions.forks
forks プール(子プロセス)のオプション。
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
poolOptions: {
forks: {
// Forks 関連のオプションをここに記述します
},
},
},
});poolOptions.forks.maxForks*
- タイプ:
number | string - デフォルト: 利用可能な CPU 数
フォークの最大数または割合。
poolOptions.forks.minForks*
- タイプ:
number | string - デフォルト: 利用可能な CPU 数
フォークの最小数または割合。
poolOptions.forks.isolate
- タイプ:
boolean - デフォルト:
true
テストファイルごとに環境を分離します。
poolOptions.forks.singleFork
- タイプ:
boolean - デフォルト:
false
同じ環境のすべてのテストを単一の子プロセス内で実行します。これにより、組み込みのモジュール分離が無効になります (ソースコードまたは インライン化 されたコードは、テストごとに再評価されます) が、テストのパフォーマンスが向上する可能性があります。
WARNING
このオプションはテストを強制的に順番に実行させますが、Jest の --runInBand とは異なります。Vitest は、テストを並行して実行するだけでなく、分離を提供するためにも子プロセスを使用します。このオプションを無効にすると、テストは順番に実行されますが、同じグローバルコンテキストで実行されるため、自分で分離を提供する必要があります。
グローバル状態に依存している場合 (フロントエンドフレームワークは通常そうですが)、またはコードがテストごとに個別に定義される環境に依存している場合は、あらゆる種類の問題が発生する可能性があります。ただし、グローバル状態に必ずしも依存しないテストや、それを簡単に回避できるテストにとっては、速度が向上する可能性があります (最大 3 倍高速)。
poolOptions.forks.execArgv*
- タイプ:
string[] - デフォルト:
[]
子プロセス内の node プロセスに追加の引数を渡します。詳細については、コマンドライン API | Node.js を参照してください。
WARNING
一部のオプションはワーカーをクラッシュさせる可能性があるため、使用する場合は注意してください (例: --prof、--title)。https://github.com/nodejs/node/issues/41103 を参照してください。
poolOptions.vmThreads
vmThreads プールのオプション。
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
poolOptions: {
vmThreads: {
// VM threads 関連のオプションをここに記述します
},
},
},
});poolOptions.vmThreads.maxThreads*
- 型:
number | string - デフォルト: 利用可能な CPU
スレッドの最大数または最大比率。VITEST_MAX_THREADS 環境変数も使用できます。
poolOptions.vmThreads.minThreads*
- 型:
number | string - デフォルト: 利用可能な CPU
スレッドの最小数または最小比率。VITEST_MIN_THREADS 環境変数も使用できます。
poolOptions.vmThreads.memoryLimit*
- タイプ:
string | number - デフォルト:
1 / CPU Cores
ワーカーがリサイクルされる前に、ワーカーのメモリ制限を指定します。この値は環境に大きく依存するため、デフォルトに依存するのではなく、手動で指定することをお勧めします。
TIP
実装は、Jest の workerIdleMemoryLimit に基づいています。
制限はさまざまな方法で指定でき、結果がどうであれ、Math.floor を使用して整数値に変換されます。
<= 1- 値はシステムメモリの割合であると見なされます。したがって、0.5 はワーカーのメモリ制限をシステムメモリの半分に設定します。\> 1- 固定バイト値であると見なされます。前のルールにより、1 バイトの値が必要な場合 (理由はわかりませんが) は、1.1 を使用できます。単位付き
50%- 上記のように、システムメモリの合計に対する割合100KB、65MBなど - 固定メモリ制限を示す単位付き。K/KB- キロバイト (x1000)KiB- キビバイト (x1024)M/MB- メガバイトMiB- メビバイトG/GB- ギガバイトGiB- ギビバイト
WARNING
割合ベースのメモリ制限は、報告されるシステムメモリが正しくないため、Linux CircleCI ワーカーでは機能しません。
poolOptions.vmThreads.useAtomics*
- タイプ:
boolean - デフォルト:
false
Atomics を使用してスレッドを同期します。
これにより、パフォーマンスが向上する場合がありますが、古い Node バージョンではセグメンテーション違反が発生する可能性があります。
poolOptions.vmThreads.execArgv*
- タイプ:
string[] - デフォルト:
[]
VM コンテキスト内の node プロセスに追加の引数を渡します。詳細については、コマンドライン API | Node.js を参照してください。
WARNING
一部のオプションはワーカーをクラッシュさせる可能性があるため、使用する場合は注意してください (例: --prof、--title)。https://github.com/nodejs/node/issues/41103 を参照してください。
poolOptions.vmForks
vmForks プールのオプション。
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
poolOptions: {
vmForks: {
// VM forks 関連のオプションをここに記述します
},
},
},
});poolOptions.vmForks.maxForks*
- 型:
number | string - デフォルト: 利用可能な CPU
スレッドの最大数またはパーセンテージ。VITEST_MAX_FORKS 環境変数も使用できます。
poolOptions.vmForks.minForks*
- 型:
number | string - デフォルト: 利用可能な CPU
スレッドの最小数またはパーセンテージ。VITEST_MIN_FORKS 環境変数も使用できます。
poolOptions.vmForks.memoryLimit*
- タイプ:
string | number - デフォルト:
1 / CPU Cores
ワーカーがリサイクルされる前に、ワーカーのメモリ制限を指定します。この値は環境に大きく依存するため、デフォルトに依存するのではなく、手動で指定することをお勧めします。値の計算方法については、poolOptions.vmThreads.memoryLimit で説明されています。
poolOptions.vmForks.execArgv*
- タイプ:
string[] - デフォルト:
[]
VM コンテキスト内の node プロセスに追加の引数を渡します。詳細については、コマンドライン API | Node.js を参照してください。
WARNING
一部のオプションはワーカーをクラッシュさせる可能性があるため、使用する場合は注意してください (例: --prof、--title)。https://github.com/nodejs/node/issues/41103 を参照してください。
fileParallelism*
- Type:
boolean - Default:
true - CLI:
--no-file-parallelism,--fileParallelism=false
すべてのテストファイルを並列実行するかどうかを設定します。false に設定すると、maxWorkers および minWorkers オプションは 1 に強制的に設定されます。
maxWorkers*
- Type:
number | string
テストを実行するワーカーの最大数。poolOptions.{threads,vmThreads}.maxThreads/poolOptions.forks.maxForks の方が優先度が高いです。
minWorkers*
- Type:
number | string
テストを実行するワーカーの最小数または割合。poolOptions.{threads,vmThreads}.minThreads/poolOptions.forks.minForks の方が優先度が高いです。
testTimeout
- Type:
number - Default: Node.js では
5_000、browser.enabledがtrueの場合は15_000 - CLI:
--test-timeout=5000,--testTimeout=5000
テストのデフォルトのタイムアウト (ミリ秒)
hookTimeout
- Type:
number - Default: Node.js では
10_000、browser.enabledがtrueの場合は30_000 - CLI:
--hook-timeout=10000,--hookTimeout=10000
フックのデフォルトのタイムアウト (ミリ秒)
teardownTimeout*
- Type:
number - Default:
10000 - CLI:
--teardown-timeout=5000,--teardownTimeout=5000
Vitest がシャットダウンする際に、クローズ処理の完了を待機するデフォルトタイムアウト時間(ミリ秒)。
silent*
- Type:
boolean - Default:
false - CLI:
--silent,--silent=false
テスト実行時のコンソール出力を抑制します。
setupFiles
- Type:
string | string[]
セットアップファイルへのパス。指定されたファイルは、各テストファイルの実行前に実行されます。
INFO
セットアップファイルを編集すると、すべてのテストが自動的に再実行されます。
スレッドを区別するために、内部で process.env.VITEST_POOL_ID (整数を表す文字列) を使用できます。
TIP
--isolate=false を指定した場合、このセットアップファイルは同じグローバルスコープ内で複数回実行されることに注意してください。つまり、各テストの前に同じグローバルオブジェクトにアクセスするため、意図しない副作用が発生しないように注意してください。
たとえば、グローバル変数を利用する例を以下に示します。
import { config } from '@some-testing-lib';
if (!globalThis.defined) {
config.plugins = [myCoolPlugin];
computeHeavyThing();
globalThis.defined = true;
}
// hooks are reset before each suite
afterEach(() => {
cleanup();
});
globalThis.resetBeforeEachTest = true;provide 2.1.0+
- Type:
Partial<ProvidedContext>
inject メソッドを使用して、テスト内でアクセスできる値を定義します。
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
provide: {
API_KEY: '123',
},
},
});import { expect, inject, test } from 'vitest';
test('api key is defined', () => {
expect(inject('API_KEY')).toBe('123');
});WARNING
プロパティは文字列である必要があり、値は シリアライズ可能 である必要があります。これは、このオブジェクトが異なるプロセス間で転送されるためです。
TIP
TypeScript を使用している場合は、タイプ安全なアクセスのために ProvidedContext 型を拡張する必要があります。
// vitest.shims.d.ts
declare module 'vitest' {
export interface ProvidedContext {
API_KEY: string;
}
}
// mark this file as a module so augmentation works correctly
export {};globalSetup
- Type:
string | string[]
グローバルセットアップファイルへのパス。プロジェクトルートからの相対パスで指定します。
グローバルセットアップファイルは、名前付き関数 setup と teardown、または teardown 関数を返す default 関数をエクスポートできます (例 を参照)。
INFO
複数の globalSetup ファイルを設定できます。 setup 関数は設定された順に実行され、teardown 関数は設定された順の逆順に実行されます。
WARNING
大域的なセットアップは、実行中のテストが少なくとも 1 つある場合にのみ実行されます。これは、ウォッチモード中にテストファイルが変更された後、大域的なセットアップが開始される可能性があることを意味します(テストファイルは、大域的なセットアップが完了するまで待機してから実行されます)。
大域的なセットアップは別のグローバルスコープで実行されているため、テストはここで定義された変数にアクセスできないことに注意してください。ただし、provide メソッドを介して、シリアル化可能なデータをテストに渡すことができます。
export default function setup({ provide }) {
provide('wsPort', 3000);
}import type { GlobalSetupContext } from 'vitest/node';
export default function setup({ provide }: GlobalSetupContext) {
provide('wsPort', 3000);
}
declare module 'vitest' {
export interface ProvidedContext {
wsPort: number;
}
}import { inject } from 'vitest';
inject('wsPort') === 3000;forceRerunTriggers*
- Type:
string[] - Default:
['**/package.json/**', '**/vitest.config.*/**', '**/vite.config.*/**']
スイート全体の再実行をトリガーするファイルパスの Glob パターン。--changed 引数と組み合わせることで、指定されたファイルが git diff に含まれる場合にテストスイート全体を再実行できます。
Vite がモジュールグラフを構築できない場合に、CLI コマンドの呼び出しをテストする際に役立ちます。
test('execute a script', async () => {
// Vitest cannot rerun this test, if content of `dist/index.js` changes
await execa('node', ['dist/index.js']);
});TIP
ファイルが server.watch.ignored によって除外されていないことを確認してください。
coverage*
v8, istanbul、または カスタムカバレッジソリューション を使用してカバレッジを収集できます。
ドット表記を使用して、CLI からカバレッジオプションを指定できます。
npx vitest --coverage.enabled --coverage.provider=istanbul --coverage.allWARNING
ドット表記でカバレッジオプションを使用する場合は、--coverage.enabled を必ず指定してください。--coverage オプションを単独で使用しないでください。
coverage.provider
- Type:
'v8' | 'istanbul' | 'custom' - Default:
'v8' - CLI:
--coverage.provider=<provider>
カバレッジ収集ツールを選択します。
coverage.enabled
- Type:
boolean - Default:
false - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.enabled,--coverage.enabled=false
カバレッジ収集を有効にします。--coverage CLI オプションで上書きできます。
coverage.include
- Type:
string[] - Default:
['**'] - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.include=<path>,--coverage.include=<path1> --coverage.include=<path2>
カバレッジに含めるファイルのリストを glob パターンで指定します。
coverage.extension
- Type:
string | string[] - Default:
['.js', '.cjs', '.mjs', '.ts', '.mts', '.tsx', '.jsx', '.vue', '.svelte', '.marko', '.astro'] - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.extension=<extension>,--coverage.extension=<extension1> --coverage.extension=<extension2>
coverage.exclude
- Type:
string[] - Default:
[
'coverage/**',
'dist/**',
'**/node_modules/**',
'**/[.]**',
'packages/*/test?(s)/**',
'**/*.d.ts',
'**/virtual:*',
'**/__x00__*',
'**/\x00*',
'cypress/**',
'test?(s)/**',
'test?(-*).?(c|m)[jt]s?(x)',
'**/*{.,-}{test,spec,bench,benchmark}?(-d).?(c|m)[jt]s?(x)',
'**/__tests__/**',
'**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build,eslint,prettier}.config.*',
'**/vitest.{workspace,projects}.[jt]s?(on)',
'**/.{eslint,mocha,prettier}rc.{?(c|m)js,yml}',
];- Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.exclude=<path>,--coverage.exclude=<path1> --coverage.exclude=<path2>
カバレッジから除外するファイルのリストを glob パターンで指定します。
このオプションは、すべてのデフォルトオプションを上書きします。除外するパターンを追加する場合は、デフォルトオプションを拡張してください。
import { coverageConfigDefaults, defineConfig } from 'vitest/config';
export default defineConfig({
test: {
coverage: {
exclude: ['**/custom-pattern/**', ...coverageConfigDefaults.exclude],
},
},
});注記
Vitest はテストファイルの include パターンを自動的に coverage.exclude のデフォルト値に追加します。
coverage.all
- Type:
boolean - Default:
true - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.all,--coverage.all=false
テストされていないファイルを含め、すべてのファイルをレポートに含めるかどうか。
coverage.clean
- Type:
boolean - Default:
true - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.clean,--coverage.clean=false
テスト実行前に既存のカバレッジ結果を削除します。
coverage.cleanOnRerun
- Type:
boolean - Default:
true - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.cleanOnRerun,--coverage.cleanOnRerun=false
ウォッチ再実行時のカバレッジレポートをクリーンアップします。ウォッチモードでの以前の実行結果を保持するには false に設定します。
coverage.reportsDirectory
- Type:
string - Default:
'./coverage' - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.reportsDirectory=<path>
WARNING
coverage.clean が有効になっている場合 (デフォルト)、Vitest はテストを実行する前にこのディレクトリを削除します。
カバレッジレポートを書き込むディレクトリ。
HTML レポーター の出力でカバレッジレポートをプレビューするには、このオプションを HTML レポートディレクトリのサブディレクトリとして設定する必要があります (例:./html/coverage)。
coverage.reporter
- Type:
string | string[] | [string, {}][] - Default:
['text', 'html', 'clover', 'json'] - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.reporter=<reporter>,--coverage.reporter=<reporter1> --coverage.reporter=<reporter2>
使用するカバレッジレポーターのリスト。レポーターの詳細なリストについては、istanbul のドキュメント を参照してください。レポーター固有のオプションについては、@types/istanbul-reporter を参照してください。
レポーターには次の 3 つのタイプがあります。
- 単一のレポーター:
{ reporter: 'html' } - オプションなしの複数のレポーター:
{ reporter: ['html', 'json'] } - レポーターオプション付きの単一または複数のレポーター: ts
{ reporter: [ ['lcov', { projectRoot: './src' }], ['json', { file: 'coverage.json' }], ['text'], ]; }
カスタムカバレッジレポーターを渡すこともできます。詳細については、ガイド - カスタムカバレッジレポーターを参照してください。
{
reporter: [
// Specify reporter using name of the NPM package
'@vitest/custom-coverage-reporter',
['@vitest/custom-coverage-reporter', { someOption: true }],
// Specify reporter using local path
'/absolute/path/to/custom-reporter.cjs',
['/absolute/path/to/custom-reporter.cjs', { someOption: true }],
];
}Vitest UI でカバレッジレポートを確認できます。Vitest UI Coverage で詳細を確認してください。
coverage.reportOnFailure
- Type:
boolean - Default:
false - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.reportOnFailure,--coverage.reportOnFailure=false
テストが失敗した場合でもカバレッジレポートを生成します。
coverage.allowExternal
- Type:
boolean - Default:
false - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.allowExternal,--coverage.allowExternal=false
プロジェクト root の外部にあるファイルのカバレッジを収集します。
coverage.excludeAfterRemap 2.1.0+
- 型:
boolean - デフォルト:
false - 利用可能なプロバイダー:
'v8' | 'istanbul' - CLI:
--coverage.excludeAfterRemap,--coverage.excludeAfterRemap=false
カバレッジが元のソースに再マップされた後、除外を再度適用します。 これは、ソースファイルがトランスパイルされ、非ソースファイルのソースマップが含まれている場合に便利です。
coverage.exclude パターンに一致してもレポートに表示されるファイルがある場合、このオプションを使用します。
coverage.skipFull
- Type:
boolean - Default:
false - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.skipFull,--coverage.skipFull=false
100% のステートメント、ブランチ、および関数カバレッジを持つファイルをレポートから除外します。
coverage.thresholds
カバレッジの閾値に関するオプション。
coverage.thresholds.lines
- Type:
number - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.thresholds.lines=<number>
行のカバレッジに関するグローバルな閾値。 詳細については、istanbul のドキュメント を参照してください。
coverage.thresholds.functions
- Type:
number - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.thresholds.functions=<number>
関数のカバレッジに関するグローバルな閾値。 詳細については、istanbul のドキュメント を参照してください。
coverage.thresholds.branches
- Type:
number - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.thresholds.branches=<number>
ブランチのカバレッジに関するグローバルな閾値。 詳細については、istanbul のドキュメント を参照してください。
coverage.thresholds.statements
- Type:
number - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.thresholds.statements=<number>
ステートメントのカバレッジに関するグローバルな閾値。 詳細については、istanbul のドキュメント を参照してください。
coverage.thresholds.perFile
- Type:
boolean - Default:
false - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.thresholds.perFile,--coverage.thresholds.perFile=false
ファイルごとに閾値を確認します。
coverage.thresholds.autoUpdate
- Type:
boolean - Default:
false - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.thresholds.autoUpdate=<boolean>
現在のカバレッジが設定された閾値を超えている場合、すべての閾値 (lines、functions、branches、statements) の値を設定ファイルに自動的に更新します。このオプションは、カバレッジ改善時に閾値を維持するのに役立ちます。
coverage.thresholds.100
- Type:
boolean - Default:
false - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.thresholds.100,--coverage.thresholds.100=false
グローバル閾値を 100 に設定します。 --coverage.thresholds.lines 100 --coverage.thresholds.functions 100 --coverage.thresholds.branches 100 --coverage.thresholds.statements 100 をまとめて指定するショートカットです。
coverage.thresholds[glob-pattern]
- Type:
{ statements?: number functions?: number branches?: number lines?: number } - Default:
undefined - Available for providers:
'v8' | 'istanbul'
glob パターンに一致するファイルに対して、個別の閾値を設定します。
注
Vitest は、グロブパターンでカバーされているファイルを含め、すべてのファイルをグローバルカバレッジしきい値に含みます。 これは Jest の動作とは異なります。
{
coverage: {
thresholds: {
// Thresholds for all files
functions: 95,
branches: 70,
// Thresholds for matching glob pattern
'src/utils/**.ts': {
statements: 95,
functions: 90,
branches: 85,
lines: 80,
},
// Files matching this pattern will only have lines thresholds set.
// Global thresholds are not inherited.
'**/math.ts': {
lines: 100,
}
}
}
}coverage.thresholds[glob-pattern].100 2.1.0+
- 型:
boolean - デフォルト:
false - 利用可能なプロバイダー:
'v8' | 'istanbul'
glob パターンに一致するファイルのしきい値を 100 に設定します。
{
coverage: {
thresholds: {
// すべてのファイルのしきい値
functions: 95,
branches: 70,
// glob パターンに一致するファイルのしきい値
'src/utils/**.ts': { 100: true },
'**/math.ts': { 100: true }
}
}
}coverage.ignoreEmptyLines
- Type:
boolean - Default:
true(v1 ではfalse) - Available for providers:
'v8' - CLI:
--coverage.ignoreEmptyLines=<boolean>
空行、コメント、TypeScript の型定義など、実行時に影響のないコードを無視します。
このオプションは、使用されるコンパイラがトランスパイルされたコードからコメントやその他の非ランタイムコードを削除する場合にのみ有効です。 デフォルトでは、Vite は ESBuild を使用して、.ts、.tsx、および .jsx ファイルからコメントと TypeScript 型を削除します。
ESBuild を他のファイルにも適用する場合は、esbuild オプション でそれらを定義します。
import { defineConfig } from 'vitest/config';
export default defineConfig({
esbuild: {
// Transpile all files with ESBuild to remove comments from code coverage.
// Required for `test.coverage.ignoreEmptyLines` to work:
include: ['**/*.js', '**/*.jsx', '**/*.mjs', '**/*.ts', '**/*.tsx'],
},
test: {
coverage: {
provider: 'v8',
ignoreEmptyLines: true,
},
},
});coverage.ignoreClassMethods
- Type:
string[] - Default:
[] - Available for providers:
'istanbul' - CLI:
--coverage.ignoreClassMethods=<method>
カバレッジから無視するクラスメソッド名の配列を設定します。 詳細については、istanbul のドキュメント を参照してください。
coverage.watermarks
- Type:
{
statements?: [number, number],
functions?: [number, number],
branches?: [number, number],
lines?: [number, number]
}- Default:
{
statements: [50, 80],
functions: [50, 80],
branches: [50, 80],
lines: [50, 80]
}- Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.watermarks.statements=50,80,--coverage.watermarks.branches=50,80
ステートメント、行、ブランチ、および関数のウォーターマーク。詳細については、istanbul のドキュメント を参照してください。
coverage.processingConcurrency
- Type:
boolean - Default:
Math.min(20, os.availableParallelism?.() ?? os.cpus().length) - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.processingConcurrency=<number>
カバレッジ結果の処理に使用される並行処理の制限。
coverage.customProviderModule
- Type:
string - Available for providers:
'custom' - CLI:
--coverage.customProviderModule=<path or module name>
カスタムカバレッジプロバイダーモジュールのモジュール名またはパスを指定します。詳細については、ガイド - カスタムカバレッジプロバイダー を参照してください。
testNamePattern*
- タイプ:
string | RegExp - CLI:
-t <pattern>,--testNamePattern=<pattern>,--test-name-pattern=<pattern>
指定されたパターンに完全一致する名前を持つテストを実行します。このオプションと OnlyRunThis を組み合わせると、テスト名に OnlyRunThis という単語が含まれていないテストはスキップされます。
import { expect, test } from 'vitest';
// 実行
test('OnlyRunThis', () => {
expect(true).toBe(true);
});
// スキップ
test('doNotRun', () => {
expect(true).toBe(true);
});open*
- タイプ:
boolean - デフォルト値:
!process.env.CI - CLI:
--open,--open=false
Vitest UI を開きます (WIP)。
api
- タイプ:
boolean | number - デフォルト値:
false - CLI:
--api,--api.port,--api.host,--api.strictPort
API サーバーを起動し、指定されたポートを監視します。true に設定すると、デフォルトのポート 51204 が使用されます。
browser
- タイプ:
{ enabled?, name?, provider?, headless?, api? } - デフォルト値:
{ enabled: false, headless: process.env.CI, api: 63315 } - CLI:
--browser,--browser=<name>,--browser.name=chrome --browser.headless
ブラウザ上で Vitest のテストを実行します。デフォルトでは WebdriverIO を使用しますが、browser.provider オプションで変更できます。
NOTE
実際のブラウザでのテストに関する詳細は、ガイドページ を参照してください。
WARNING
これは実験的な機能です。破壊的な変更が SemVer に準拠しない可能性があるため、使用する際は Vitest のバージョンを固定することを推奨します。
browser.enabled
- タイプ:
boolean - デフォルト値:
false - CLI:
--browser,--browser.enabled=false
デフォルトでブラウザですべてのテストを実行します。poolMatchGlobs オプションでこの設定を上書きできます。
browser.name
- タイプ:
string - CLI:
--browser=safari
指定されたブラウザですべてのテストを実行します。指定可能なオプションはプロバイダーによって異なります。
webdriverio:firefox,chrome,edge,safariplaywright:firefox,webkit,chromium- custom: プロバイダーに渡される任意の文字列
browser.headless
- タイプ:
boolean - デフォルト値:
process.env.CI - CLI:
--browser.headless,--browser.headless=false
ブラウザをヘッドレスモードで実行します。CI 環境で Vitest を実行している場合、デフォルトで有効になります。
browser.isolate
- タイプ:
boolean - デフォルト値:
true - CLI:
--browser.isolate,--browser.isolate=false
各テストを個別の iframe で実行します。
browser.testerHtmlPath
- 型:
string - デフォルト:
@vitest/browser/tester.html - バージョン: Vitest 2.1.4 以降
HTML エントリーポイントへのパス。プロジェクトのルートからの相対パスでもかまいません。このファイルは transformIndexHtml フックで処理されます。
browser.api
- 型:
number | { port?, strictPort?, host? } - デフォルト:
63315 - CLI:
--browser.api=63315,--browser.api.port=1234, --browser.api.host=example.com
ブラウザでコードを提供するための Vite サーバ構成オプションです。test.api オプションには影響しません。デフォルトでは、Vitest は開発サーバーとの衝突を避けるためにポート 63315 を割り当て、両方を並行して実行できます。
browser.provider
- 型:
'webdriverio' | 'playwright' | 'preview' | string - デフォルト:
'preview' - CLI:
--browser.provider=playwright
ブラウザテストの実行時に使用されるプロバイダへのパスです。Vitest は preview (デフォルト)、webdriverio、playwright の 3 つのプロバイダを提供します。カスタムプロバイダは default エクスポートを使用してエクスポートされ、この形状を持っている必要があります。
export interface BrowserProvider {
name: string;
getSupportedBrowsers: () => readonly string[];
initialize: (
ctx: Vitest,
options: { browser: string; options?: BrowserProviderOptions }
) => Awaitable<void>;
openPage: (url: string) => Awaitable<void>;
close: () => Awaitable<void>;
}WARNING
これはライブラリ開発者向けの詳細な API です。ブラウザでテストを実行する必要があるだけの場合は、browser オプションを使用してください。
browser.providerOptions
- タイプ:
BrowserProviderOptions
provider.initialize を呼び出す際にプロバイダーに渡されるオプション。
export default defineConfig({
test: {
browser: {
providerOptions: {
launch: {
devtools: true,
},
},
},
},
});TIP
組み込みプロバイダーを使用する際に型安全性を高めるには、使用しているプロバイダーに対応する型を tsconfig の compilerOptions.types フィールドに追加できます。
{
"compilerOptions": {
"types": [
"@vitest/browser/providers/webdriverio",
"@vitest/browser/providers/playwright"
]
}
}browser.ui
- Type:
boolean - Default:
!isCI - CLI:
--browser.ui=false
Vitest UI をページに注入するかどうか。デフォルトでは、開発中に UI iframe を注入します。
browser.viewport
- Type:
{ width, height } - Default:
414x896
デフォルトの iframe のビューポート。
browser.locators
組み込みの ブラウザロケーター のオプション。
browser.locators.testIdAttribute
- Type:
string - Default:
data-testid
getByTestId ロケーターで要素を検索するために使用される属性。
browser.screenshotDirectory
- Type:
string - Default: テストファイルディレクトリの
__snapshots__
root からの相対パスで指定されたスナップショットディレクトリのパス。
browser.screenshotFailures
- Type:
boolean - Default:
!browser.ui
テストが失敗した場合に Vitest はスクリーンショットを撮るべきか。
browser.orchestratorScripts
- Type:
BrowserScript[] - Default:
[]
test iframe が開始される前に orchestrator HTML に注入されるカスタムスクリプト。この HTML ドキュメントは iframe を設定するだけで、実際にはコードをインポートしません。
スクリプトの src と content は Vite プラグインによって処理されます。スクリプトは次の形式で記述してください。
export interface BrowserScript {
/**
* "content" が提供され、type が "module" の場合、これはその識別子になります。
*
* TypeScript を使用している場合は、たとえば、ここに `.ts` 拡張子を追加できます。
* @default `injected-${index}.js`
*/
id?: string;
/**
* 挿入される JavaScript コンテンツ。この文字列は、type が "module" の場合、Vite プラグインによって処理されます。
*
* `id` を使用して、Vite にファイル拡張子に関するヒントを与えることができます。
*/
content?: string;
/**
* スクリプトへのパス。この値は Vite によって解決されるため、node モジュールまたはファイルパスにすることができます。
*/
src?: string;
/**
* スクリプトを非同期でロードする必要があるかどうか。
*/
async?: boolean;
/**
* スクリプトタイプ。
* @default 'module'
*/
type?: string;
}browser.testerScripts
- タイプ:
BrowserScript[] - デフォルト値:
[]
テスト環境が開始される前に、テスター HTML に挿入されるカスタムスクリプト。これは、Vitest ブラウザ実装に必要なポリフィルを挿入するのに役立ちます。ほとんどの場合、このオプションの代わりに setupFiles を使用することを推奨します。
スクリプトの src と content は、Vite プラグインによって処理されます。
browser.commands
- 型:
Record<string, BrowserCommand> - デフォルト:
{ readFile, writeFile, ... }
ブラウザーテスト中に @vitest/browser/commands からインポートできるカスタムコマンド。
clearMocks
- タイプ:
boolean - デフォルト値:
false
各テストの前に、すべてのスパイに対して .mockClear() を呼び出します。これにより、モックの履歴はクリアされますが、実装はデフォルトの状態にリセットされません。
mockReset
- タイプ:
boolean - デフォルト値:
false
各テストの前に、すべてのスパイに対して .mockReset() を呼び出します。これにより、モックの履歴がクリアされ、実装が空の関数 (undefined を返す) にリセットされます。
restoreMocks
- タイプ:
boolean - デフォルト値:
false
各テストの前に、すべてのスパイに対して .mockRestore() を呼び出します。これにより、モックの履歴がクリアされ、実装が元の状態にリセットされます。
unstubEnvs
- タイプ:
boolean - デフォルト値:
false
各テストの前に、vi.unstubAllEnvs を呼び出します。
unstubGlobals
- タイプ:
boolean - デフォルト値:
false
各テストの前に、vi.unstubAllGlobals を呼び出します。
testTransformMode
- タイプ:
{ web?, ssr? }
グロブパターンに一致するテスト内でインポートされたモジュールの変換方法を決定します。デフォルトでは、環境に依存します。例えば、JSDOM 環境のテストでは、すべてのファイルが ssr: false フラグで処理され、Node 環境のテストでは、すべてのモジュールが ssr: true で処理されます。
testTransformMode.ssr
- タイプ:
string[] - デフォルト値:
[]
指定されたテスト内のすべてのモジュールに対して、SSR 変換パイプラインを使用します。Vite プラグインは、これらのファイルを処理する際に ssr: true フラグを受け取ります。
testTransformMode.web
- タイプ:
string[] - デフォルト値:
[]
最初に通常の変換パイプライン (ブラウザをターゲット) を実行し、次に SSR 書き換えを実行して、Node でコードを実行します。Vite プラグインは、これらのファイルを処理する際に ssr: false フラグを受け取ります。
snapshotFormat*
- タイプ:
PrettyFormatOptions
スナップショットテストのフォーマットオプション。これらのオプションは、pretty-format に渡されます。
TIP
このオブジェクトの plugins フィールドは無視されることに注意してください。
pretty-format プラグインを介してスナップショットシリアライザーを拡張する必要がある場合は、expect.addSnapshotSerializer API または snapshotSerializers オプションを使用してください。
snapshotSerializers*
- タイプ:
string[] - デフォルト値:
[]
カスタムスナップショットシリアライザーを追加するために使用する、スナップショットテスト用のシリアライザーモジュールへのパスのリスト。詳細については、カスタムシリアライザー を参照してください。
resolveSnapshotPath*
- タイプ:
(testPath: string, snapExtension: string) => string - デフォルト値: スナップショットファイルを
__snapshots__ディレクトリに保存します
デフォルトのスナップショットパスを上書きします。例えば、テストファイルの隣にスナップショットを保存するには:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
resolveSnapshotPath: (testPath, snapExtension) => testPath + snapExtension,
},
});allowOnly
- タイプ:
boolean - デフォルト値:
!process.env.CI - CLI:
--allowOnly,--allowOnly=false
only としてマークされているテストとスイートの実行を許可します。
dangerouslyIgnoreUnhandledErrors*
- タイプ:
boolean - デフォルト値:
false - CLI:
--dangerouslyIgnoreUnhandledErrors--dangerouslyIgnoreUnhandledErrors=false
発生した未処理のエラーを無視します。
passWithNoTests*
- タイプ:
boolean - デフォルト値:
false - CLI:
--passWithNoTests,--passWithNoTests=false
テストが見つからない場合に、Vitest が失敗しないようにします。
logHeapUsage
- タイプ:
boolean - デフォルト値:
false - CLI:
--logHeapUsage,--logHeapUsage=false
各テストの後にヒープ使用量を表示します。メモリリークのデバッグに役立ちます。
css
- タイプ:
boolean | { include?, exclude?, modules? }
CSS の処理を制御します。除外された場合、CSS ファイルは後続の処理をスキップするために空の文字列に置き換えられます。CSS Modules はランタイムに影響を与えないようにプロキシを返します。
css.include
- タイプ:
RegExp | RegExp[] - デフォルト値:
[]
実際の CSS を返し、Vite パイプラインで処理されるファイルの正規表現パターンです。
TIP
すべての CSS ファイルを処理するには、/.+/ を使用します。
css.exclude
- タイプ:
RegExp | RegExp[] - デフォルト値:
[]
空の CSS ファイルを返すファイルの正規表現パターン。
css.modules
- タイプ:
{ classNameStrategy? } - デフォルト値:
{}
css.modules.classNameStrategy
- タイプ:
'stable' | 'scoped' | 'non-scoped' - デフォルト値:
'stable'
CSS ファイルを処理する際に、CSS モジュール内のクラス名をスコープするかどうかを設定します。以下のオプションから選択してください。
stable: クラス名は_${name}_${hashedFilename}として生成されます。これは、CSS コンテンツが変更されても生成されるクラスは同じままで、ファイル名が変更されたり、別のフォルダーに移動された場合にのみ変更されることを意味します。この設定は、スナップショット機能を使用する場合に役立ちます。scoped: クラス名は通常どおり生成され、css.modules.generateScopedNameメソッド (存在する場合) と CSS 処理が有効になっている場合は、それを尊重します。デフォルトでは、ファイル名は_${name}_${hash}として生成され、ハッシュにはファイル名とファイルの内容が含まれます。non-scoped: クラス名はハッシュされません。
WARNING
デフォルトでは、Vitest はプロキシをエクスポートし、CSS Modules の処理をバイパスします。クラスの CSS プロパティに依存する場合は、include オプションで CSS 処理を有効にする必要があります。
maxConcurrency
- 型:
number - デフォルト:
5 - CLI:
--max-concurrency=10,--maxConcurrency=10
test.concurrent が付与されたテストを同時に実行できる最大数。
この制限を超えたテストは、利用可能なスロットができるまで待機します。
cache*
- 型:
false - CLI:
--no-cache,--cache=false
キャッシュ機能を無効にする場合は、このオプションを使用します。Vitest は現在、テスト結果をキャッシュし、実行時間が長く失敗したテストを優先的に実行します。
キャッシュディレクトリは Vite の cacheDir オプションで制御されます。
import { defineConfig } from 'vitest/config';
export default defineConfig({
cacheDir: 'custom-folder/.vitest',
});process.env.VITEST を使うことで、ディレクトリを Vitest のみに限定できます。
import { defineConfig } from 'vitest/config';
export default defineConfig({
cacheDir: process.env.VITEST ? 'custom-folder/.vitest' : undefined,
});sequence
- 型:
{ sequencer?, shuffle?, seed?, hooks?, setupFiles? }
テストの実行順序に関するオプション。
sequence オプションは、ドット表記で CLI に指定できます。
npx vitest --sequence.shuffle --sequence.seed=1000sequence.sequencer*
- 型:
TestSequencerConstructor - デフォルト:
BaseSequencer
テストのシャーディングとソートの方法を定義するカスタムクラス。sort メソッドと shard メソッドのいずれか一方のみを再定義する必要がある場合は、vitest/node から BaseSequencer を継承できます。ただし、両方のメソッドが存在する必要があります。
シャーディングはソートの前に行われ、--shard オプションが指定されている場合にのみ実行されます。
sequence.shuffle
- 型:
boolean | { files?, tests? } - デフォルト:
false - CLI:
--sequence.shuffle,--sequence.shuffle=false
ファイルとテストをランダムな順序で実行したい場合は、このオプションまたは CLI 引数 --sequence.shuffle を使用して有効にできます。
ファイルとテストをランダムな順序で実行しても、テストの実行速度は向上しませんが、以前の実行に依存しているテストを特定するのに役立つ場合があります。
sequence.shuffle.files
- 型:
boolean - デフォルト:
false - CLI:
--sequence.shuffle.files,--sequence.shuffle.files=false
ファイルをランダム化するかどうか。このオプションを有効にすると、実行時間の長いテストが早く開始されなくなることに注意してください。
sequence.shuffle.tests
- 型:
boolean - デフォルト:
false - CLI:
--sequence.shuffle.tests,--sequence.shuffle.tests=false
テストをランダム化するかどうか。
sequence.concurrent
- 型:
boolean - デフォルト:
false - CLI:
--sequence.concurrent,--sequence.concurrent=false
テストを並行実行するには、このオプションまたは CLI 引数 --sequence.concurrent を使用します。
sequence.seed*
- 型:
number - デフォルト:
Date.now() - CLI:
--sequence.seed=1000
テストがランダムな順序で実行される場合に、ランダム化のシード値を設定します。
sequence.hooks
- 型:
'stack' | 'list' | 'parallel' - デフォルト:
'parallel' - CLI:
--sequence.hooks=<value>
フックの実行順序を変更します。
stack: "after" フックを逆順に、"before" フックを定義された順に実行します。list: すべてのフックを定義された順に実行します。parallel: フックを一つのグループとして並行して実行します(親スイートのフックは、現在のスイートのフックよりも前に実行されます)。
TIP
このオプションは onTestFinished には影響しません。常に逆順で呼び出されます。
sequence.setupFiles
- 型:
'list' | 'parallel' - デフォルト:
'parallel' - CLI:
--sequence.setupFiles=<value>
セットアップファイルの実行順序を変更します。
list: セットアップファイルを定義された順に実行します。parallel: セットアップファイルを並行して実行します。
typecheck
型チェックテスト環境を構成するためのオプション。
typecheck.enabled
- 型:
boolean - デフォルト:
false - CLI:
--typecheck,--typecheck.enabled
通常のテストと並行して型チェックを有効にします。
typecheck.only
- 型:
boolean - デフォルト:
false - CLI:
--typecheck.only
型チェックが有効になっている場合、型チェックテストのみを実行します。CLI を使用する場合、このオプションは自動的に型チェックを有効にします。
typecheck.checker
- 型:
'tsc' | 'vue-tsc' | string - デフォルト:
tsc
型チェックに使用するツール。Vitest は、指定された型に応じて解析を容易にするために特定のパラメータを持つプロセスを生成します。チェッカーは、tsc と同じ出力形式を実装する必要があります。
typechecker を使用するには、対応するパッケージをインストールする必要があります。
tscを使用するにはtypescriptパッケージが必要ですvue-tscを使用するにはvue-tscパッケージが必要です
tsc --noEmit --pretty false と同じ出力を生成するカスタムバイナリまたはコマンドへのパスを指定することもできます。
typecheck.include
- 型:
string[] - デフォルト:
['**/*.{test,spec}-d.?(c|m)[jt]s?(x)']
テストファイルとして扱うファイルのグロブパターン。
typecheck.exclude
- 型:
string[] - デフォルト:
['**/node_modules/**', '**/dist/**', '**/cypress/**', '**/.{idea,git,cache,output,temp}/**']
テストファイルから除外するファイルのグロブパターン。
typecheck.allowJs
- 型:
boolean - デフォルト:
false
@ts-check コメントを持つ JS ファイルをチェックします。tsconfig で有効になっている場合、この設定は上書きされません。
typecheck.ignoreSourceErrors
- 型:
boolean - デフォルト:
false
Vitest がテストファイル外でエラーを検出した場合でも、テストを失敗させません。これにより、テスト以外のエラーは表示されなくなります。
typecheck.tsconfig
- 型:
string - デフォルト: 最も近い tsconfig.json を検索します
プロジェクトルートからのカスタム tsconfig ファイルへのパス。
slowTestThreshold*
- 型:
number - デフォルト:
300 - CLI:
--slow-test-threshold=<number>,--slowTestThreshold=<number>
テストまたはスイートが遅いと見なされ、結果でそのように報告されるまでのミリ秒数。
chaiConfig
- 型:
{ includeStack?, showDiff?, truncateThreshold? } - デフォルト:
{ includeStack: false, showDiff: true, truncateThreshold: 40 }
Chai config と同等の設定。
chaiConfig.includeStack
- 型:
boolean - デフォルト:
false
アサーションエラーメッセージにスタックトレースを含めるかどうかを制御します。デフォルトの false は、エラーメッセージのスタックトレースを非表示にします。
chaiConfig.showDiff
- 型:
boolean - デフォルト:
true
showDiff フラグをスローされた AssertionErrors に含めるかどうかを制御します。false は常に false です。true は、アサーションが差分表示を要求した場合に true になります。
chaiConfig.truncateThreshold
- 型:
number - デフォルト:
40
アサーションエラーの実際の値と期待される値の長さのしきい値を設定します。このしきい値を超えた場合(たとえば、大きなデータ構造の場合)、値は [ Array(3) ] や { Object (prop1, prop2) } のように置き換えられます。完全に切り捨てを無効にする場合は、0 に設定します。
この構成オプションは、test.each のタイトルとアサーションエラーメッセージ内の値を切り捨てることに影響します。
bail
- 型:
number - デフォルト:
0 - CLI:
--bail=<value>
指定された数のテストが失敗した場合に、テストの実行を停止します。
これは、100% 成功するビルドのみを目的とし、テスト失敗時に可能な限り早くテストを停止させたい CI ビルドには適さない場合があります。bail オプションを使用すると、失敗が発生した場合にそれ以上のテストの実行を防ぐことで、CI の実行を高速化できます。
retry
- 型:
number - デフォルト:
0 - CLI:
--retry=<value>
テストが失敗した場合に、指定された回数だけテストを再試行します。
onConsoleLog*
- 型:
(log: string, type: 'stdout' | 'stderr') => boolean | void
テストでの console.log のカスタムハンドラー。false を返した場合、Vitest はログをコンソールに出力しません。
サードパーティライブラリからのログをフィルタリングするのに役立ちます。
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
onConsoleLog(log: string, type: 'stdout' | 'stderr'): boolean | void {
return !(log === 'message from third party library' && type === 'stdout');
},
},
});onStackTrace*
- 型:
(error: Error, frame: ParsedStack) => boolean | void
エラーを処理するときに、各スタックトレースの各フレームにフィルタリング関数を適用します。最初の引数 error は、標準の Error と同じプロパティを持つオブジェクトですが、実際にはインスタンスではありません。
サードパーティライブラリからのスタックトレースフレームを除外するのに役立ちます。
import type { ParsedStack } from 'vitest';
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
onStackTrace(error: Error, { file }: ParsedStack): boolean | void {
// ReferenceError が発生した場合は、スタック全体を表示します。
if (error.name === 'ReferenceError') return;
// サードパーティライブラリからのすべてのフレームを除外します。
if (file.includes('node_modules')) return false;
},
},
});diff
- 型:
string - CLI:
--diff=<value>
差分インターフェースの生成に使用される差分構成ファイルへのパス。差分の表示をカスタマイズする場合に役立ちます。
import type { DiffOptions } from 'vitest';
import c from 'tinyrainbow';
export default {
aIndicator: c.bold('--'),
bIndicator: c.bold('++'),
omitAnnotationLines: true,
} satisfies DiffOptions;import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
diff: './vitest.diff.ts',
},
});diff.truncateThreshold
- 型:
number - デフォルト:
0
表示される差分結果の最大長。このしきい値を超える差分は切り捨てられます。 デフォルト値の 0 では、切り捨ては無効になります。
diff.truncateAnnotation
- 型:
string - デフォルト:
'... Diff result is truncated'
差分結果が切り捨てられた場合に、差分結果の最後に出力される注釈。
diff.truncateAnnotationColor
- 型:
DiffOptionsColor = (arg: string) => string - デフォルト:
noColor = (string: string): string => string
切り捨て注釈の色。デフォルトでは、色なしで出力されます。
fakeTimers
- 型:
FakeTimerInstallOpts
vi.useFakeTimers() を使用するときに、Vitest が @sinon/fake-timers に渡すオプション。
fakeTimers.now
- 型:
number | Date - デフォルト:
Date.now()
指定された Unix エポックタイムでフェイクタイマーを設定します。
fakeTimers.toFake
- 型:
('setTimeout' | 'clearTimeout' | 'setImmediate' | 'clearImmediate' | 'setInterval' | 'clearInterval' | 'Date' | 'nextTick' | 'hrtime' | 'requestAnimationFrame' | 'cancelAnimationFrame' | 'requestIdleCallback' | 'cancelIdleCallback' | 'performance' | 'queueMicrotask')[] - デフォルト:
['setTimeout', 'clearTimeout', 'setImmediate', 'clearImmediate', 'setInterval', 'clearInterval', 'Date']
フェイクするグローバルメソッドと API の名前の配列。
setTimeout() と nextTick() のみをモックするには、このプロパティを ['setTimeout', 'nextTick'] として指定します。
--pool=forks を使用して node:child_process 内で Vitest を実行している場合、nextTick のモックはサポートされていません。NodeJS は node:child_process 内で process.nextTick を内部的に使用し、モックされると処理が停止します。--pool=threads で Vitest を実行している場合、nextTick のモックはサポートされています。
fakeTimers.loopLimit
- 型:
number - デフォルト:
10_000
vi.runAllTimers() を呼び出すときに実行されるタイマーの最大数。
fakeTimers.shouldAdvanceTime
- 型:
boolean - デフォルト:
false
モックされた時間が実際のシステム時間のシフトに基づいて自動的に増加するように @sinonjs/fake-timers に指示します (例: モックされた時間は、実際のシステム時間の 20ms ごとの変化に対して 20ms ずつ増加します)。
fakeTimers.advanceTimeDelta
- 型:
number - デフォルト:
20
shouldAdvanceTime: true と共に使用する場合にのみ関連します。実際のシステム時間の advanceTimeDelta ms ごとの変化に対して、モックされた時間を advanceTimeDelta ms ずつ増加させます。
fakeTimers.shouldClearNativeTimers
- 型:
boolean - デフォルト:
true
フェイクタイマーに、それぞれのハンドラーに委譲することで「ネイティブ」(つまりフェイクではない)タイマーをクリアするように指示します。無効にすると、フェイクタイマーセッションを開始する前にタイマーが存在した場合、予期しない動作を引き起こす可能性があります。
workspace*
- 型:
string - CLI:
--workspace=./file.js - デフォルト: 設定ファイルまたはルートに近い
vitest.{workspace,projects}.{js,ts,json}
ルート を基準とした ワークスペース 構成ファイルへのパス。
isolate
- 型:
boolean - デフォルト:
true - CLI:
--no-isolate,--isolate=false
分離された環境でテストを実行します。このオプションは、vmThreads および vmForks プールには影響しません。
コードに副作用がない場合(通常、node 環境のプロジェクトに当てはまります)、このオプションを無効にするとパフォーマンスが向上する可能性があります。
TIP
poolOptions プロパティを使用して、特定のプールの分離を無効にできます。
includeTaskLocation
- 型:
boolean - デフォルト:
false
Vitest API がレポーターでタスクを受信する際に、location プロパティを含めるかどうか。これによりパフォーマンスが若干低下する可能性があります。
location プロパティには、元のファイルの test または describe の位置に対応する column および line の値が含まれます。
このオプションは、明示的に無効にしない限り、以下のいずれかの方法で Vitest を実行している場合に自動的に有効になります。
- Vitest UI
- またはブラウザモードをヘッドレスモードなしで使用する場合
- またはHTML レポーターを使用する場合
TIP
このオプションは、これに依存するカスタムコードを使用しない場合は効果がありません。
snapshotEnvironment
- 型:
string
カスタムスナップショット環境の実装へのパス。これは、Node.js API をサポートしない環境でテストを実行する際に役立ちます。このオプションは、ブラウザランナーには影響しません。
このオブジェクトは SnapshotEnvironment の形状を持ち、スナップショットファイルを解決して読み書きするために使用されます。
export interface SnapshotEnvironment {
getVersion: () => string;
getHeader: () => string;
resolvePath: (filepath: string) => Promise<string>;
resolveRawPath: (testPath: string, rawPath: string) => Promise<string>;
saveSnapshotFile: (filepath: string, snapshot: string) => Promise<void>;
readSnapshotFile: (filepath: string) => Promise<string | null>;
removeSnapshotFile: (filepath: string) => Promise<void>;
}API の一部のみを上書きしたい場合は、vitest/snapshot のエントリーポイントからデフォルトの VitestSnapshotEnvironment を拡張できます。
WARNING
これは低レベルのオプションであり、デフォルトの Node.js API にアクセスできない高度なケースでのみ使用する必要があります。
スナップショット機能を構成するだけでよい場合は、snapshotFormat または resolveSnapshotPath オプションを使用してください。
env
- 型:
Partial<NodeJS.ProcessEnv>
テスト中に process.env および import.meta.env で使用可能な環境変数。これらの変数はメインプロセス (例えば globalSetup 内) では使用できません。
expect
- 型:
ExpectOptions
expect.requireAssertions
- 型:
boolean - デフォルト:
false
各テストの開始時に expect.hasAssertions() を呼び出すことと同じです。これにより、テストが誤ってパスしないようにします。
TIP
これは Vitest の expect でのみ機能します。assert または .should のアサーションを使用した場合、それらはカウントされず、expect アサーションがないためテストが失敗します。
vi.setConfig({ expect: { requireAssertions: false } }) を呼び出すことでこの値を変更できます。設定は、手動で vi.resetConfig が呼び出されるまで、その後のすべての expect 呼び出しに適用されます。
expect.poll
expect.poll のグローバル設定オプション。これらは、expect.poll(condition, options) に渡すことができるものと同じオプションです。
expect.poll.interval
- 型:
number - デフォルト:
50
ポーリング間隔(ミリ秒)
expect.poll.timeout
- 型:
number - デフォルト:
1000
ポーリングタイムアウト(ミリ秒)
printConsoleTrace
- 型:
boolean - デフォルト:
false
任意の console メソッドを呼び出し時に常にコンソールトレースを出力します。これはデバッグに役立ちます。