Skip to content
Vitest 1
Main Navigation ガイドAPI設定高度な
3.2.0
2.1.9
1.6.1
0.34.6

日本語

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
한국어
Italiano
Polski
Türkçe
čeština
magyar

日本語

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
한국어
Italiano
Polski
Türkçe
čeština
magyar

外観

Sidebar Navigation

Vitestの設定ファイル管理

Vitestの設定

このページの内容

Vitest の設定 ​

Vitest の設定ファイルを作成するには、ガイドを参照してください。設定を進める前に、Vitest の設定解決の仕組みを理解しておくことを推奨します。

WARNING

ここに記載されているオプションはすべて、設定ファイルの test プロパティ内に記述します。

ts
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

テストファイルにマッチさせるグロブパターンのリストです。

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 0.34.0+ ​

  • 型: { 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 0.34.0+ ​

  • 型: { ssr?, web? }
  • 参照: 依存関係の最適化オプション

依存関係の最適化を有効にします。テストが多い場合にパフォーマンスが向上する可能性があります。Vitest 0.34.0 より前は、deps.experimentalOptimizer という名前でした。

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
  • デフォルト: Vitest 1.3.0 以降は false

依存関係の最適化を有効にします。

WARNING

このオプションは、Vite 4.3.2 以降でのみ動作します。

deps.web 0.34.2+ ​

  • 型: { transformAssets?, ... }

変換モードが web に設定されている場合に外部ファイルに適用されるオプションです。デフォルトでは、jsdom と happy-dom は web モードを使用し、node と edge 環境は ssr 変換モードを使用するため、これらのオプションはこれらの環境内のファイルには影響しません。

通常、node_modules 内のファイルは外部化されますが、これらのオプションは server.deps.external 内のファイルにも影響します。

deps.web.transformAssets ​

  • 型: boolean
  • デフォルト: true

Vitest に、アセットファイル (.png、.svg、.jpg など) を処理させ、Vite がブラウザで行うように解決させるかどうかを指定します。

クエリが指定されていない場合、このモジュールのデフォルトエクスポートはアセットへのパスになります。

WARNING

現時点では、このオプションは vmThreads および vmForks プールでのみ動作します。

deps.web.transformCss ​

  • 型: boolean
  • デフォルト: true

Vitest は CSS (.css、.scss、.sass など) ファイルを処理し、Vite がブラウザで行うようにそれらを解決する必要がありますか。

CSS ファイルが css オプションで無効になっている場合、このオプションは ERR_UNKNOWN_FILE_EXTENSION エラーを抑制するだけです。

WARNING

現時点では、このオプションは vmThreads および vmForks プールでのみ動作します。

deps.web.transformGlobPattern ​

  • 型: RegExp | RegExp[]
  • デフォルト: []

変換が必要な外部ファイルに一致する正規表現パターン。

デフォルトでは、node_modules 内のファイルは外部化され、変換されません。ただし、CSS またはアセットであり、対応するオプションが無効になっていない場合は除きます。

WARNING

現時点では、このオプションは vmThreads および vmForks プールでのみ動作します。

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 でパッケージを検索する場合は、他のオプションと一緒に含める必要があります。

ts
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 ​

  • 型: string | Record<string, string>

--reporter=json オプションも指定されている場合に、ベンチマーク結果をファイルに書き込みます。 文字列の代わりにオブジェクトを提供することで、複数のレポーターを使用する際に個別の出力を定義できます。

CLI コマンドを介してオブジェクトを指定するには、次の構文を使用します: --outputFile.json=./path --outputFile.junit=./other-path。

benchmark.outputJson 1.6.0+ ​

  • 型: string | undefined
  • デフォルト: undefined

ベンチマーク結果を保存するためのファイルパス。これは、後で --compare オプションで使用できます。

例:

sh
# メインブランチの結果を保存
git checkout main
vitest bench --outputJson main.json

# ブランチを切り替えてメインと比較
git checkout feature
vitest bench --compare main.json

benchmark.compare 1.6.0+ ​

  • 型: string | undefined
  • デフォルト: undefined

現在の実行結果と比較するための、過去のベンチマーク結果のファイルパス。

alias ​

  • 型: Record<string, string> | Array<{ find: string | RegExp, replacement: string, customResolver?: ResolverFunction | ResolverObject }>

テスト実行時にカスタムエイリアスを定義します。これらは resolve.alias のエイリアスとマージされます。

WARNING

Vitest は Vite SSR プリミティブを使用してテストを実行しますが、特定の問題点があります。

  1. エイリアスは、インライン化されたモジュールにより import キーワードで直接インポートされたモジュールにのみ影響します (すべてのソースコードはデフォルトでインライン化されます)。
  2. Vitest は require 呼び出しのエイリアスをサポートしていません。
  3. 外部依存関係 (例: react -> preact) のエイリアスを設定する場合は、外部化された依存関係で動作するように、実際の node_modules パッケージのエイリアスを設定することをお勧めします。Yarn と pnpm はどちらも npm: プレフィックスを介したエイリアスをサポートしています。

globals ​

  • 型: boolean
  • デフォルト: false
  • CLI: --globals, --globals=false

デフォルトでは、Vitest は明示性を高めるためにグローバル API を提供していません。Jest のように API をグローバルに使用したい場合は、--globals オプションを CLI に渡すか、設定ファイルに globals: true を追加できます。

ts
// vitest.config.ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    globals: true,
  },
});

TypeScript をグローバル API で動作させるには、tsconfig.json の types フィールドに vitest/globals を追加します。

json
// tsconfig.json
{
  "compilerOptions": {
    "types": ["vitest/globals"]
  }
}

プロジェクトで unplugin-auto-import を既に使用している場合は、これらの API を自動インポートするために直接使用することもできます。

ts
// 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 環境を使用できます。

ファイルの先頭に @vitest-environment のドックブロックまたはコメントを追加することで、そのファイル内のすべてのテストで使用する環境を個別に指定できます。

ドックブロック形式:

js
/**
 * @vitest-environment jsdom
 */

test('このテストファイルでは jsdom を使用する', () => {
  const element = document.createElement('div');
  expect(element).not.toBeNull();
});

コメント形式:

js
// @vitest-environment happy-dom

test('このテストファイルでは happy-dom を使用する', () => {
  const element = document.createElement('div');
  expect(element).not.toBeNull();
});

Jest との互換性のために、@jest-environment も使用できます。

js
/**
 * @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 型のオブジェクトをエクスポートする必要があります。

ts
import type { Environment } from 'vitest';

export default <Environment>{
  name: 'custom',
  transformMode: 'ssr',
  setup() {
    // カスタムセットアップ
    return {
      teardown() {
        // この環境で実行されたすべてのテストの後に呼び出される
      },
    };
  },
};

Vitest は、拡張を容易にするために、vitest/environments エントリを介して builtinEnvironments も公開しています。環境の拡張に関する詳細は、ガイドを参照してください。

TIP

Vitest 1.3.0 以降、jsdom 環境は、現在の JSDOM インスタンスと等しい jsdom グローバル変数を公開します。TypeScript でこの変数を認識させるには、この環境を使用する際に tsconfig.json に vitest/jsdom を追加してください。

json
{
  "compilerOptions": {
    "types": ["vitest/jsdom"]
  }
}

environmentOptions ​

  • タイプ: Record<'jsdom' | string, unknown>
  • デフォルト: {}

これらのオプションは、現在の environment の setup メソッドに渡されます。デフォルトでは、テスト環境として JSDOM を使用している場合にのみ、JSDOM オプションを設定できます。

environmentMatchGlobs ​

  • タイプ: [string, EnvironmentName][]
  • デフォルト: []

グロブパターンに基づいて、テスト環境を自動的に割り当てることができます。最初に一致したパターンが使用されます。

例:

ts
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 0.29.4+ ​

  • タイプ: [string, 'threads' | 'forks' | 'vmThreads' | 'vmForks' | 'typescript'][]
  • デフォルト: []

グロブパターンに基づいて、テストの実行に使用するプールを自動的に割り当てます。最初に一致したパターンが使用されます。

例:

ts
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>

プロジェクトのルートディレクトリを指定します。

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* 1.0.0+ ​

  • タイプ: 'threads' | 'forks' | 'vmThreads' | 'vmForks'
  • デフォルト: 'threads'
  • 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 コンストラクターを参照します。
ts
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* 1.0.0+ ​

  • タイプ: Record<'threads' | 'forks' | 'vmThreads' | 'vmForks', {}>
  • デフォルト: {}

各プールのオプションを設定します。

poolOptions.threads ​

threads プールのオプション。

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    poolOptions: {
      threads: {
        // Threads 関連のオプションをここに記述します
      },
    },
  },
});
poolOptions.threads.maxThreads* ​
  • タイプ: number
  • デフォルト: 利用可能な CPU 数

最大スレッド数を指定します。VITEST_MAX_THREADS 環境変数も使用できます。

poolOptions.threads.minThreads* ​
  • タイプ: number
  • デフォルト: 利用可能な 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 プール(子プロセス)のオプション。

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    poolOptions: {
      forks: {
        // Forks 関連のオプションをここに記述します
      },
    },
  },
});
poolOptions.forks.maxForks* ​
  • タイプ: number
  • デフォルト: 利用可能な CPU 数

最大フォーク数を指定します。

poolOptions.forks.minForks* ​
  • タイプ: number
  • デフォルト: 利用可能な 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 プールのオプション。

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    poolOptions: {
      vmThreads: {
        // VM threads 関連のオプションをここに記述します
      },
    },
  },
});
poolOptions.vmThreads.maxThreads* ​
  • タイプ: number
  • デフォルト: 利用可能な CPU 数

最大スレッド数を指定します。VITEST_MAX_THREADS 環境変数も使用できます。

poolOptions.vmThreads.minThreads* ​
  • タイプ: number
  • デフォルト: 利用可能な 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 プールのオプション。

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    poolOptions: {
      vmForks: {
        // VM forks 関連のオプションをここに記述します
      },
    },
  },
});
poolOptions.vmForks.maxForks* ​
  • タイプ: number
  • デフォルト: 利用可能な CPU 数

最大スレッド数を指定します。VITEST_MAX_FORKS 環境変数も使用できます。

poolOptions.vmForks.minForks* ​
  • タイプ: number
  • デフォルト: 利用可能な 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 1.1.0+ ​

  • Type: boolean
  • Default: true
  • CLI: --no-file-parallelism, --fileParallelism=false

すべてのテストファイルを並列実行するかどうかを設定します。false に設定すると、maxWorkers および minWorkers オプションは 1 に強制的に設定されます。

TIP

このオプションは、同一ファイル内で実行されるテストには影響しません。それらを並列実行するには、describe の concurrent オプションを使用するか、設定 を参照してください。

maxWorkers 1.1.0+ ​

  • Type: number

テストを実行するワーカーの最大数。poolOptions.{threads,vmThreads}.maxThreads / poolOptions.forks.maxForks が指定されている場合、そちらが優先されます。

minWorkers 1.1.0+ ​

  • Type: number

テストを実行するワーカーの最小数。poolOptions.{threads,vmThreads}.minThreads / poolOptions.forks.maxForks が指定されている場合、そちらが優先されます。

testTimeout ​

  • Type: number
  • Default: 5000
  • CLI: --test-timeout=5000, --testTimeout=5000

テストのデフォルトタイムアウト時間(ミリ秒)。

hookTimeout ​

  • Type: number
  • Default: 10000
  • 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 を指定した場合、このセットアップファイルは同じグローバルスコープ内で複数回実行されることに注意してください。つまり、各テストの前に同じグローバルオブジェクトにアクセスするため、意図しない副作用が発生しないように注意してください。

たとえば、グローバル変数を利用する例を以下に示します。

ts
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;

globalSetup ​

  • Type: string | string[]

グローバルセットアップファイルへのパス。プロジェクトルートからの相対パスで指定します。

グローバルセットアップファイルは、名前付き関数 setup と teardown、または teardown 関数を返す default 関数をエクスポートできます (例 を参照)。

INFO

複数の globalSetup ファイルを設定できます。 setup 関数は設定された順に実行され、teardown 関数は設定された順の逆順に実行されます。

WARNING

Vitest 1.0.0-beta 以降、グローバルセットアップは、少なくとも 1 つのテストが実行される場合にのみ実行されます。これは、テストファイルが変更された後、ウォッチモード中にグローバルセットアップの実行が開始される可能性があることを意味します (テストファイルは、グローバルセットアップが完了するまで実行を待ちます)。

グローバルセットアップは異なるグローバルスコープで実行されるため、テストからグローバルセットアップで定義された変数に直接アクセスすることはできません。ただし、1.0.0 以降では、provide メソッドを介してシリアライズ可能なデータをテストに渡すことができます。

js
export default function setup({ provide }) {
  provide('wsPort', 3000);
}
ts
import type { GlobalSetupContext } from 'vitest/node';

export default function setup({ provide }: GlobalSetupContext) {
  provide('wsPort', 3000);
}

// You can also extend `ProvidedContext` type
// `ProvidedContext` 型を拡張して、`provide/inject` メソッドへの型安全なアクセスを実現することもできます。
declare module 'vitest' {
  export interface ProvidedContext {
    wsPort: number;
  }
}
ts
import { inject } from 'vitest';

inject('wsPort') === 3000;

watchExclude* ​

  • Type: string[]
  • Default: ['**/node_modules/**', '**/dist/**']
  • Deprecated: 代わりに server.watch.ignored を使用してください。

ウォッチの再実行をトリガーしないファイルパスの glob パターン。

forceRerunTriggers* ​

  • Type: string[]
  • Default: ['**/package.json/**', '**/vitest.config.*/**', '**/vite.config.*/**']

スイート全体の再実行をトリガーするファイルパスの Glob パターン。--changed 引数と組み合わせることで、指定されたファイルが git diff に含まれる場合にテストスイート全体を再実行できます。

Vite がモジュールグラフを構築できない場合に、CLI コマンドの呼び出しをテストする際に役立ちます。

ts
test('execute a script', async () => {
  // Vitest cannot rerun this test, if content of `dist/index.js` changes
  await execa('node', ['dist/index.js']);
});

TIP

ファイルが watchExclude によって除外されていないことを確認してください。

coverage* ​

v8, istanbul、または カスタムカバレッジソリューション を使用してカバレッジを収集できます。

ドット表記を使用して、CLI からカバレッジオプションを指定できます。

sh
npx vitest --coverage.enabled --coverage.provider=istanbul --coverage.all

WARNING

ドット表記でカバレッジオプションを使用する場合は、--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', '.cts', '.tsx', '.jsx', '.vue', '.svelte', '.marko']
  • Available for providers: 'v8' | 'istanbul'
  • CLI: --coverage.extension=<extension>, --coverage.extension=<extension1> --coverage.extension=<extension2>

coverage.exclude ​

  • Type: string[]
  • Default:
js
[
  'coverage/**',
  'dist/**',
  '**/[.]**',
  'packages/*/test?(s)/**',
  '**/*.d.ts',
  '**/virtual:*',
  '**/__x00__*',
  '**/\x00*',
  'cypress/**',
  'test?(s)/**',
  'test?(-*).?(c|m)[jt]s?(x)',
  '**/*{.,-}{test,spec}?(-d).?(c|m)[jt]s?(x)',
  '**/__tests__/**',
  '**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.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 パターンで指定します。

このオプションは、すべてのデフォルトオプションを上書きします。除外するパターンを追加する場合は、デフォルトオプションを拡張してください。

ts
import { coverageConfigDefaults, defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    coverage: {
      exclude: ['**/custom-pattern/**', ...coverageConfigDefaults.exclude],
    },
  },
});

coverage.all ​

  • Type: boolean
  • Default: true (Vitest 1.0.0 以降)
  • 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

ウォッチモードでの再実行時にカバレッジレポートを削除します。

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'],
      ];
    }

Vitest 1.2.0 以降では、カスタムカバレッジレポーターを指定することもできます。詳細については、ガイド - カスタムカバレッジレポーター を参照してください。

ts
{
  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 0.31.0 以降では、Vitest UI でカバレッジレポートを確認できます。詳細については、Vitest UI カバレッジ を参照してください。

coverage.reportOnFailure 0.31.2+ ​

  • Type: boolean
  • Default: false (Vitest 0.34.0 以降)
  • 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.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 パターンに一致するファイルに対して、個別の閾値を設定します。

ts
{
  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.ignoreEmptyLines ​

  • Type: boolean
  • Default: false
  • Available for providers: 'v8'
  • CLI: --coverage.ignoreEmptyLines=<boolean>

空行、コメント、TypeScript の型定義など、実行時に影響のないコードを無視します。

このオプションは、使用されるコンパイラがトランスパイルされたコードからコメントやその他の非ランタイムコードを削除する場合にのみ有効です。 デフォルトでは、Vite は ESBuild を使用して、.ts、.tsx、および .jsx ファイルからコメントと TypeScript 型を削除します。

ESBuild を他のファイルにも適用する場合は、esbuild オプション でそれらを定義します。

ts
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:
ts
{
  statements?: [number, number],
  functions?: [number, number],
  branches?: [number, number],
  lines?: [number, number]
}
  • Default:
ts
{
  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 という単語が含まれていないテストはスキップされます。

js
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 0.29.4+ ​

  • タイプ: { enabled?, name?, provider?, headless?, api?, slowHijackESM? }
  • デフォルト値: { 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, safari
  • playwright: 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.fileParallelism 1.3.0+ ​

  • タイプ: boolean
  • デフォルト値: fileParallelism と同じ
  • CLI: --browser.fileParallelism=false

すべてのテスト iframe を同時に作成し、並行して実行します。

これにより、画面上に複数の iframe が同時に表示されるため、(クリックやホバーなどの)インタラクティブな API を使用できなくなる可能性があります。ただし、テストがこれらの API に依存しない場合は、並行実行によって大幅な高速化が期待できます。

TIP

browser.isolate=false で分離を無効にした場合でも、テストランナーの特性上、テストファイルは順番に実行されます。

browser.api ​

  • タイプ: number | { port?, strictPort?, host? }
  • デフォルト値: 63315
  • CLI: --browser.api=63315, --browser.api.port=1234, --browser.api.host=example.com

ブラウザでコードを提供する Vite サーバーのオプションを設定します。このオプションは、test.api オプションには影響しません。

browser.provider ​

  • タイプ: 'webdriverio' | 'playwright' | string
  • デフォルト値: 'webdriverio'
  • CLI: --browser.provider=playwright

ブラウザテストの実行に使用するプロバイダーへのパスを指定します。Vitest は、webdriverio (デフォルト) と playwright の 2 つのプロバイダーを提供します。カスタムプロバイダーは default としてエクスポートする必要があり、以下のインターフェースを満たす必要があります。

ts
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 1.0.0+ ​

  • タイプ: BrowserProviderOptions

provider.initialize を呼び出す際にプロバイダーに渡されるオプション。

ts
export default defineConfig({
  test: {
    browser: {
      providerOptions: {
        launch: {
          devtools: true,
        },
      },
    },
  },
});

TIP

組み込みプロバイダーを使用する際に型安全性を高めるには、使用しているプロバイダーに対応する型を tsconfig の compilerOptions.types フィールドに追加できます。

json
{
  "compilerOptions": {
    "types": [
      "@vitest/browser/providers/webdriverio",
      "@vitest/browser/providers/playwright"
    ]
  }
}

browser.slowHijackESM 0.31.0+ ​

  • タイプ: boolean
  • デフォルト値: false

Node.js でテストを実行する場合、Vitest は独自のモジュール解決を使用して vi.mock 構文で簡単にモジュールをモックできます。しかし、ブラウザで ES モジュールの解決を再現するのは容易ではないため、ブラウザで使用する前にソースファイルを変換する必要があります。

このオプションは、Node.js 環境で実行されるテストには影響しません。

vi.spyOn で ES モジュールをスパイする必要がある場合は、この実験的な機能を有効にすることで、モジュールエクスポートのスパイを許可できます。

browser.indexScripts 1.6.0+ ​

  • タイプ: BrowserScript[]
  • デフォルト値: []

テスト iframe が開始される前に、index HTML に挿入されるカスタムスクリプト。この HTML ドキュメントは、iframe を設定するだけで、実際にはコードをインポートしません。

スクリプトの src と content は Vite プラグインによって処理されます。スクリプトは次の形式で記述してください。

ts
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 1.6.0+ ​

  • タイプ: BrowserScript[]
  • デフォルト値: []

テスト環境が開始される前に、テスター HTML に挿入されるカスタムスクリプト。これは、Vitest ブラウザ実装に必要なポリフィルを挿入するのに役立ちます。ほとんどの場合、このオプションの代わりに setupFiles を使用することを推奨します。

スクリプトの src と content は、Vite プラグインによって処理されます。

clearMocks ​

  • タイプ: boolean
  • デフォルト値: false

各テストの前に、すべてのスパイに対して .mockClear() を呼び出します。これにより、モックの履歴はクリアされますが、実装はデフォルトの状態にリセットされません。

mockReset ​

  • タイプ: boolean
  • デフォルト値: false

各テストの前に、すべてのスパイに対して .mockReset() を呼び出します。これにより、モックの履歴がクリアされ、実装が空の関数 (undefined を返す) にリセットされます。

restoreMocks ​

  • タイプ: boolean
  • デフォルト値: false

各テストの前に、すべてのスパイに対して .mockRestore() を呼び出します。これにより、モックの履歴がクリアされ、実装が元の状態にリセットされます。

unstubEnvs 0.26.0+ ​

  • タイプ: boolean
  • デフォルト値: false

各テストの前に、vi.unstubAllEnvs を呼び出します。

unstubGlobals 0.26.0+ ​

  • タイプ: boolean
  • デフォルト値: false

各テストの前に、vi.unstubAllGlobals を呼び出します。

testTransformMode 0.34.0+ ​

  • タイプ: { 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* 1.3.0+ ​

  • タイプ: string[]
  • デフォルト値: []

カスタムスナップショットシリアライザーを追加するために使用する、スナップショットテスト用のシリアライザーモジュールへのパスのリスト。詳細については、カスタムシリアライザー を参照してください。

resolveSnapshotPath* ​

  • タイプ: (testPath: string, snapExtension: string) => string
  • デフォルト値: スナップショットファイルを __snapshots__ ディレクトリに保存します

デフォルトのスナップショットパスを上書きします。例えば、テストファイルの隣にスナップショットを保存するには:

ts
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.generateScopeName メソッド (存在する場合) と 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 は現在、テスト結果をキャッシュし、実行時間が長く失敗したテストを優先的に実行します。

sequence ​

  • 型: { sequencer?, shuffle?, seed?, hooks?, setupFiles? }

テストの実行順序に関するオプション。

sequence オプションは、ドット表記で CLI に指定できます。

sh
npx vitest --sequence.shuffle --sequence.seed=1000

sequence.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 1.4.0+ ​

  • 型: boolean
  • デフォルト: false
  • CLI: --sequence.shuffle.files, --sequence.shuffle.files=false

ファイルをランダム化するかどうか。このオプションを有効にすると、実行時間の長いテストが早く開始されなくなることに注意してください。

sequence.shuffle.tests 1.4.0+ ​

  • 型: boolean
  • デフォルト: false
  • CLI: --sequence.shuffle.tests, --sequence.shuffle.tests=false

テストをランダム化するかどうか。

sequence.concurrent 0.32.2+ ​

  • 型: 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 0.29.3+ ​

  • 型: 'list' | 'parallel'
  • デフォルト: 'parallel'
  • CLI: --sequence.setupFiles=<value>

セットアップファイルの実行順序を変更します。

  • list: セットアップファイルを定義された順に実行します。
  • parallel: セットアップファイルを並行して実行します。

typecheck ​

型チェックテスト環境を構成するためのオプション。

typecheck.enabled 1.0.0+ ​

  • 型: boolean
  • デフォルト: false
  • CLI: --typecheck, --typecheck.enabled

通常のテストと並行して型チェックを有効にします。

typecheck.only 1.0.0+ ​

  • 型: 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 0.30.0+ ​

  • 型: { 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 0.31.0+ ​

  • 型: number
  • デフォルト: 0
  • CLI: --bail=<value>

指定された数のテストが失敗した場合に、テストの実行を停止します。

これは、100% 成功するビルドのみを目的とし、テスト失敗時に可能な限り早くテストを停止させたい CI ビルドには適さない場合があります。bail オプションを使用すると、失敗が発生した場合にそれ以上のテストの実行を防ぐことで、CI の実行を高速化できます。

retry 0.32.3+ ​

  • 型: number
  • デフォルト: 0
  • CLI: --retry=<value>

テストが失敗した場合に、指定された回数だけテストを再試行します。

onConsoleLog* ​

  • 型: (log: string, type: 'stdout' | 'stderr') => boolean | void

テストでの console.log のカスタムハンドラー。false を返した場合、Vitest はログをコンソールに出力しません。

サードパーティライブラリからのログをフィルタリングするのに役立ちます。

ts
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* 1.0.0+ ​

  • 型: (error: Error, frame: ParsedStack) => boolean | void

エラーを処理するときに、各スタックトレースの各フレームにフィルタリング関数を適用します。最初の引数 error は、標準の Error と同じプロパティを持つオブジェクトですが、実際にはインスタンスではありません。

サードパーティライブラリからのスタックトレースフレームを除外するのに役立ちます。

ts
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 0.34.5+ ​

  • 型: string
  • CLI: --diff=<value>

差分インターフェースの生成に使用される差分構成ファイルへのパス。差分の表示をカスタマイズする場合に役立ちます。

ts
import type { DiffOptions } from 'vitest';
import c from 'picocolors';

export default {
  aIndicator: c.bold('--'),
  bIndicator: c.bold('++'),
  omitAnnotationLines: true,
} satisfies DiffOptions;
ts
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
  • デフォルト: false

フェイクタイマーに、それぞれのハンドラーに委譲して「ネイティブ」(つまり、フェイクではない)タイマーをクリアするように指示します。これらはデフォルトではクリアされないため、フェイクタイマーセッションを開始する前にタイマーが存在していると、予期しない動作が発生する可能性があります。

workspace* 1.1.0+ ​

  • 型: string
  • CLI: --workspace=./file.js
  • デフォルト: 設定ファイルまたはルートに近い vitest.{workspace,projects}.{js,ts,json}

ルート を基準とした ワークスペース 構成ファイルへのパス。

isolate 1.1.0+ ​

  • 型: boolean
  • デフォルト: true
  • CLI: --no-isolate, --isolate=false

分離された環境でテストを実行します。このオプションは、vmThreads および vmForks プールには影響しません。

コードに副作用がない場合(通常、node 環境のプロジェクトに当てはまります)、このオプションを無効にするとパフォーマンスが向上する可能性があります。

TIP

poolOptions プロパティを使用して、特定のプールの分離を無効にできます。

includeTaskLocation 1.4.0+ ​

  • 型: boolean
  • デフォルト: false

Vitest API がレポーターでタスクを受信する際に、location プロパティを含めるかどうか。これによりパフォーマンスが若干低下する可能性があります。

location プロパティには、元のファイルの test または describe の位置に対応する column および line の値が含まれます。

TIP

このオプションは、これに依存するカスタムコードを使用しない場合は効果がありません。

snapshotEnvironment 1.6.0+ ​

  • 型: string

カスタムスナップショット環境の実装へのパス。これは、Node.js API をサポートしない環境でテストを実行する際に役立ちます。このオプションは、ブラウザランナーには影響しません。

このオブジェクトは SnapshotEnvironment の形状を持ち、スナップショットファイルを解決して読み書きするために使用されます。

ts
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 オプションを使用してください。

Pager
前のページVitestの設定ファイル管理

MITライセンス の下で公開されています。

Copyright (c) 2021-Present Vitest Team

https://v1.vitest.dev/config/

MITライセンス の下で公開されています。

Copyright (c) 2021-Present Vitest Team