コンテンツへスキップ

Vitestの設定

Vitestの設定ファイルを作成するには、ガイドに従ってください。先に進む前に、Vitestの設定解決の仕組みを理解していることを確認してください。

警告

ここにリストされているすべてのオプションは、設定内のtestプロパティにあります。

ts
export default defineConfig({
  test: {
    exclude: [],
  },
})

ヒント

以下のオプションに加えて、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 "**/除外ファイル"

テストファイルから除外する必要があるグロブパターンのリスト。

警告

このオプションはカバレッジに影響しません。カバレッジレポートから特定のファイルを削除する必要がある場合は、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にバイパスすることを意味します。外部化された依存関係はViteのトランスフォーマーおよびリゾルバーには適用されないため、リロード時にHMRをサポートしません。デフォルトでは、node_modules内のすべてのパッケージが外部化されます。

これらのオプションは、node_modulesに記述されているパッケージ名、またはdeps.moduleDirectories内で指定されたパッケージ名をサポートします。たとえば、packages/some-name内にあるパッケージ@company/some-nameは、some-nameとして指定し、packagesdeps.moduleDirectoriesに含める必要があります。基本的に、Vitestは常に実際のパッケージ名ではなく、ファイルパスをチェックします。

正規表現を使用する場合、Vitestはパッケージ名ではなくファイルパスに対して呼び出します。

server.deps.inline

  • 型: (string | RegExp)[] | true
  • デフォルト: []

Viteはインラインモジュールを処理します。これは、ESM形式(Nodeが処理できない)で.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+

依存関係の最適化を有効にします。テストが多い場合は、パフォーマンスが向上する可能性があります。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.optimizerinclude/excludeオプションを再定義すると、テストの実行時にoptimizeDepsが拡張されます。Vitestは、excludeにリストされている場合、includeから同じオプションを自動的に削除します。

ヒント

コードは実際にはcacheDirまたはtest.cache.dirディレクトリにあるため、デバッグ用にnode_modulesコードを編集することはできません。console.logステートメントでデバッグする場合は、直接編集するか、deps.optimizer?.[mode].forceオプションを使用して強制的にリバンドルしてください。

deps.optimizer.{mode}.enabled

  • 型: boolean
  • デフォルト: Vitest 1.3.0以降はfalse

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

警告

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

deps.web 0.34.2+

  • 型: { transformAssets?, ... }

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

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

deps.web.transformAssets

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

Vitestはアセット(.png、.svg、.jpgなど)ファイルを処理し、ブラウザでViteが行うようにそれらを解決する必要がありますか。

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

警告

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

deps.web.transformCss

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

VitestがCSS(.css, .scss, .sassなど)ファイルを処理し、Viteがブラウザで行うように解決するかどうか。

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

警告

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

deps.web.transformGlobPattern

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

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

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

警告

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

deps.interopDefault

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

CJSモジュールのデフォルトを名前付きエクスポートとして解釈します。一部の依存関係はCJSモジュールのみをバンドルしており、require の代わりに import 構文を使用してパッケージがインポートされるときに、Node.jsが静的に解析できる名前付きエクスポートを使用しません。名前付きエクスポートを使用してNode環境でそのような依存関係をインポートすると、次のエラーが表示されます。

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はプロジェクトのルートにある __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
# save main branch's result
git checkout main
vitest bench --outputJson main.json

# change a branch and compare against main
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 からのエイリアスとマージされます。

警告

Vitestは、特定の落とし穴があるVite SSRプリミティブを使用してテストを実行します。

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

globals

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

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

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

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

グローバルAPIでTypeScriptを動作させるには、tsconfig.jsontypes フィールドに 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-runtime 環境を使用できます。

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

ドックブロックスタイル

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

test('use jsdom in this test file', () => {
  const element = document.createElement('div')
  expect(element).not.toBeNull()
})

コメントスタイル

js
// @vitest-environment happy-dom

test('use happy-dom in this test file', () => {
  const element = document.createElement('div')
  expect(element).not.toBeNull()
})

Jestとの互換性のために、@jest-environment もあります。

js
/**
 * @jest-environment jsdom
 */

test('use jsdom in this test file', () => {
  const element = document.createElement('div')
  expect(element).not.toBeNull()
})

--isolate=false フラグを指定してVitestを実行している場合、テストは次の順序で実行されます:nodejsdomhappy-domedge-runtimeカスタム環境。つまり、同じ環境のすべてのテストはグループ化されますが、引き続き順番に実行されます。

0.23.0以降では、カスタム環境も定義できます。組み込み以外の環境を使用する場合、Vitestはパッケージ vitest-environment-${name} のロードを試みます。そのパッケージは Environment の形式のオブジェクトをエクスポートする必要があります。

ts
import type { Environment } from 'vitest'

export default <Environment>{
  name: 'custom',
  transformMode: 'ssr',
  setup() {
    // custom setup
    return {
      teardown() {
        // called after all tests with this env have been run
      }
    }
  }
}

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

ヒント

Vitest 1.3.0以降、jsdom環境は、現在の JSDOM インスタンスと等しい jsdom グローバル変数を公開します。TypeScriptにそれを認識させたい場合は、この環境を使用するときに tsconfig.jsonvitest/jsdom を追加できます。

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

environmentOptions

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

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

environmentMatchGlobs

  • 型: [string, EnvironmentName][]
  • デフォルト: []

グロブに基づいて環境を自動的に割り当てます。最初の一致が使用されます。

ts
import { defineConfig } from 'vitest/config'

export default defineConfig({
  test: {
    environmentMatchGlobs: [
      // all tests in tests/dom will run in jsdom
      ['tests/dom/**', 'jsdom'],
      // all tests in tests/ with .edge.test.ts will run in 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: [
      // all tests in "worker-specific" directory will run inside a worker as if you enabled `--pool=threads` for them,
      ['**/tests/worker-specific/**', 'threads'],
      // run all tests in "browser" directory in an actual browser
      ['**/tests/browser/**', 'browser'],
      // all other tests will run based on "browser.enabled" and "threads" options, if you didn't specify other globs
      // ...
    ]
  }
})

update *

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

スナップショットファイルを更新します。これにより、変更されたすべてのスナップショットが更新され、古いスナップショットが削除されます。

watch *

  • 型: boolean
  • デフォルト: !process.env.CI
  • CLI: -w, --watch, --watch=false

ウォッチモードを有効にします。

root

  • 型: string
  • CLI: -r <パス>, --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 * 1.0.0+

  • 型: 'threads' | 'forks' | 'vmThreads' | 'vmForks'
  • デフォルト: 'threads'
  • CLI: --pool=threads

テストの実行に使用されるプール。

threads *

tinypoolPiscinaの軽量フォーク)を使用してマルチスレッドを有効にします。スレッドを使用する場合、process.chdir()などのプロセス関連APIを使用することはできません。Prisma、bcryptcanvasなどのネイティブ言語で記述された一部のライブラリは、複数のスレッドで実行すると問題が発生し、セグメンテーション違反が発生します。このような場合は、代わりにforksプールを使用することをお勧めします。

forks *

threadsプールと同様ですが、tinypoolを介してworker_threadsの代わりにchild_processを使用します。テストとメインプロセス間の通信は、threadsプールほど高速ではありません。process.chdir()などのプロセス関連APIは、forksプールで使用できます。

vmThreads *

VMコンテキスト(サンドボックス化された環境内)を使用して、threadsプールでテストを実行します。

これによりテストの実行が高速になりますが、ESMコードを実行するとVMモジュールが不安定になります。テストはメモリリークします。これを解決するには、poolOptions.vmThreads.memoryLimitの値を手動で編集することを検討してください。

警告

サンドボックスでコードを実行することにはいくつかの利点(テストの高速化)がありますが、多くの欠点もあります。

  • fspathなど)のようなネイティブモジュール内のグローバル変数は、テスト環境に存在するグローバル変数とは異なります。その結果、これらのネイティブモジュールによってスローされるエラーは、コードで使用されるエラーコンストラクターとは異なるエラーコンストラクターを参照します。
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 related options here
      }
    }
  }
})
poolOptions.threads.maxThreads *
  • 型: number
  • デフォルト: 利用可能なCPU数

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

poolOptions.threads.minThreads *
  • 型: number
  • デフォルト: 利用可能なCPU数

最小スレッド数。VITEST_MIN_THREADS環境変数も使用できます。

poolOptions.threads.singleThread
  • 型: boolean
  • デフォルト: false

単一のワーカースレッド内の同じ環境ですべてのテストを実行します。これにより、組み込みのモジュール分離が無効になります(ソースコードまたはインラインコードは、各テストで再評価されます)が、テストのパフォーマンスを向上させることができます。

警告

このオプションはテストを順番に実行させますが、Jestの--runInBandとは異なります。Vitestは、テストを並行して実行するだけでなく、分離を提供するためにもワーカーを使用します。このオプションを無効にすると、テストは順番に実行されますが、同じグローバルコンテキストで実行されるため、自分で分離を提供する必要があります。

グローバル状態(フロントエンドフレームワークは通常そうします)に依存している場合、またはコードが各テストで別々に定義される環境に依存している場合は、あらゆる種類の問題が発生する可能性があります。しかし、グローバル状態に依存しないテストや、それを簡単に回避できるテストでは、速度が大幅に向上する可能性があります(最大3倍速くなります)。

poolOptions.threads.useAtomics *
  • 型: boolean
  • デフォルト: false

Atomicsを使用してスレッドを同期します。

これにより、場合によってはパフォーマンスが向上する可能性がありますが、古いNodeバージョンではセグメンテーション違反が発生する可能性があります。

poolOptions.threads.isolate
  • 型: boolean
  • デフォルト: true

各テストファイルの環境を分離します。

poolOptions.threads.execArgv *
  • 型: string[]
  • デフォルト: []

スレッドでnodeに追加の引数を渡します。詳細については、コマンドラインAPI | Node.jsを参照してください。

警告

一部のオプションはワーカーをクラッシュさせる可能性があるため、使用には注意してください。例:--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 related options here
      }
    }
  }
})
poolOptions.forks.maxForks *
  • 型: number
  • デフォルト: 利用可能なCPU数

最大フォーク数。

poolOptions.forks.minForks *
  • 型: number
  • デフォルト: 利用可能なCPU数

最小フォーク数。

poolOptions.forks.isolate
  • 型: boolean
  • デフォルト: true

各テストファイルの環境を分離します。

poolOptions.forks.singleFork
  • 型: boolean
  • デフォルト: false

単一の子プロセス内の同じ環境ですべてのテストを実行します。これにより、組み込みのモジュール分離が無効になります(ソースコードまたはインラインコードは、各テストで再評価されます)が、テストのパフォーマンスを向上させることができます。

警告

このオプションはテストを順番に実行させますが、Jestの--runInBandとは異なります。Vitestは、テストを並行して実行するだけでなく、分離を提供するためにも子プロセスを使用します。このオプションを無効にすると、テストは順番に実行されますが、同じグローバルコンテキストで実行されるため、自分で分離を提供する必要があります。

グローバル状態(フロントエンドフレームワークは通常そうします)に依存している場合、またはコードが各テストで別々に定義される環境に依存している場合は、あらゆる種類の問題が発生する可能性があります。しかし、グローバル状態に依存しないテストや、それを簡単に回避できるテストでは、速度が大幅に向上する可能性があります(最大3倍速くなります)。

poolOptions.forks.execArgv *
  • 型: string[]
  • デフォルト: []

子プロセス内のnodeプロセスに追加の引数を渡します。詳細については、コマンドラインAPI | Node.jsを参照してください。

警告

一部のオプションはワーカーをクラッシュさせる可能性があるため、使用には注意してください。例:--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 related options here
      }
    }
  }
})
poolOptions.vmThreads.maxThreads *
  • 型: number
  • デフォルト: 利用可能なCPU数

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

poolOptions.vmThreads.minThreads *
  • 型: number
  • デフォルト: 利用可能なCPU数

最小スレッド数。VITEST_MIN_THREADS環境変数も使用できます。

poolOptions.vmThreads.memoryLimit *
  • 型: string | number
  • デフォルト: 1 / CPUコア数

ワーカーがリサイクルされる前に、ワーカーのメモリ制限を指定します。この値は環境に大きく依存するため、デフォルトに依存するのではなく、手動で指定することをお勧めします。

ヒント

実装は、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 - ギビバイト
poolOptions.vmThreads.useAtomics *
  • 型: boolean
  • デフォルト: false

Atomicsを使用してスレッドを同期します。

これにより、場合によってはパフォーマンスが向上する可能性がありますが、古いNodeバージョンではセグメンテーション違反が発生する可能性があります。

poolOptions.vmThreads.execArgv *
  • 型: string[]
  • デフォルト: []

VMコンテキストでnodeプロセスに追加の引数を渡します。詳しくはコマンドラインAPI | Node.jsをご覧ください。

警告

一部のオプションはワーカーをクラッシュさせる可能性があるため、使用には注意してください。例:--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 related options here
      }
    }
  }
})
poolOptions.vmForks.maxForks *
  • 型: number
  • デフォルト: 利用可能なCPU数

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

poolOptions.vmForks.minForks *
  • 型: number
  • デフォルト: 利用可能なCPU数

最小スレッド数。VITEST_MIN_FORKS環境変数も使用できます。

poolOptions.vmForks.memoryLimit *
  • 型: string | number
  • デフォルト: 1 / CPUコア数

ワーカーがリサイクルされる前のメモリ制限を指定します。この値は環境に大きく依存するため、デフォルトに頼るのではなく手動で指定することをお勧めします。値の計算方法については、poolOptions.vmThreads.memoryLimitで説明されています。

poolOptions.vmForks.execArgv *
  • 型: string[]
  • デフォルト: []

VMコンテキストでnodeプロセスに追加の引数を渡します。詳しくはコマンドラインAPI | Node.jsをご覧ください。

警告

一部のオプションはワーカーをクラッシュさせる可能性があるため、使用には注意してください。例:--prof、--title。 https://github.com/nodejs/node/issues/41103を参照してください。

fileParallelism 1.1.0+

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

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

ヒント

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

maxWorkers 1.1.0+

  • 型: number

テストを実行する最大ワーカー数。poolOptions.{threads,vmThreads}.maxThreads/poolOptions.forks.maxForksが優先されます。

minWorkers 1.1.0+

  • 型: number

テストを実行する最小ワーカー数。poolOptions.{threads,vmThreads}.minThreads/poolOptions.forks.minForksが優先されます。

testTimeout

  • 型: number
  • デフォルト: 5000
  • CLI: --test-timeout=5000, --testTimeout=5000

テストのデフォルトタイムアウト(ミリ秒単位)

hookTimeout

  • 型: number
  • デフォルト: 10000
  • CLI: --hook-timeout=10000, --hookTimeout=10000

フックのデフォルトタイムアウト(ミリ秒単位)

teardownTimeout *

  • 型: number
  • デフォルト: 10000
  • CLI: --teardown-timeout=5000, --teardownTimeout=5000

Vitestがシャットダウンするときにクローズを待つデフォルトタイムアウト(ミリ秒単位)

silent *

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

テストからのコンソール出力を抑制します

setupFiles

  • 型: string | string[]

セットアップファイルへのパス。各テストファイルの前に実行されます。

情報

セットアップファイルを変更すると、すべてのテストが再実行されます。

スレッドを区別するために、内部でprocess.env.VITEST_POOL_ID(整数のような文字列)を使用できます。

ヒント

なお、--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

  • 型: string | string[]

プロジェクトルートからの相対的なグローバルセットアップファイルへのパス。

グローバルセットアップファイルは、名前付き関数setupteardown、または破棄関数を返すdefault関数をエクスポートできます()。

情報

複数のグローバルセットアップファイルが可能です。セットアップと破棄は、破棄が逆順で順番に実行されます。

警告

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
// to have type safe access to `provide/inject` methods:
declare module 'vitest' {
  export interface ProvidedContext {
    wsPort: number
  }
}
ts
import { inject } from 'vitest'

inject('wsPort') === 3000

watchExclude *

  • 型: string[]
  • デフォルト: ['**/node_modules/**', '**/dist/**']
  • 非推奨 server.watch.ignoredを使用してください

ウォッチの再実行をトリガーしないように無視されるファイルパスのグロブパターン。

forceRerunTriggers *

  • : string[]
  • デフォルト: ['**/package.json/**', '**/vitest.config.*/**', '**/vite.config.*/**']

スイート全体の再実行をトリガーするファイルパスのグロブパターン。--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'])
})

ヒント

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

coverage *

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

ドット表記でCLIにカバレッジオプションを指定できます

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

警告

ドット表記でカバレッジオプションを使用する場合は、--coverage.enabledを指定することを忘れないでください。その場合は、単一の--coverageオプションを指定しないでください。

coverage.provider

  • 型: 'v8' | 'istanbul' | 'custom'
  • デフォルト: 'v8'
  • CLI: --coverage.provider=<provider>

カバレッジ収集に使用するツールをproviderで選択します。

coverage.enabled

  • 型: boolean
  • デフォルト: false
  • 利用可能なプロバイダー: 'v8' | 'istanbul'
  • CLI: --coverage.enabled, --coverage.enabled=false

カバレッジ収集を有効にします。--coverage CLIオプションを使用して上書きできます。

coverage.include

  • 型: string[]
  • デフォルト: ['**']
  • 利用可能なプロバイダー: 'v8' | 'istanbul'
  • CLI: --coverage.include=<path>, --coverage.include=<path1> --coverage.include=<path2>

グロブパターンとしてカバレッジに含まれるファイルのリスト

coverage.extension

  • 型: string | string[]
  • デフォルト: ['.js', '.cjs', '.mjs', '.ts', '.mts', '.cts', '.tsx', '.jsx', '.vue', '.svelte', '.marko']
  • 利用可能なプロバイダー: 'v8' | 'istanbul'
  • CLI: --coverage.extension=<extension>, --coverage.extension=<extension1> --coverage.extension=<extension2>

coverage.exclude

  • 型: string[]
  • デフォルト
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}',
]
  • 利用可能なプロバイダー: 'v8' | 'istanbul'
  • CLI: --coverage.exclude=<path>, --coverage.exclude=<path1> --coverage.exclude=<path2>

グロブパターンとしてカバレッジから除外されるファイルのリスト。

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

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

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

coverage.all

  • 型: boolean
  • デフォルト: true (Vitest 1.0.0以降)
  • 利用可能なプロバイダー: 'v8' | 'istanbul'
  • CLI: --coverage.all, --coverage.all=false

テストされていないものを含め、すべてのファイルをレポートに含めるかどうか。

coverage.clean

  • 型: boolean
  • デフォルト: true
  • 利用可能なプロバイダー: 'v8' | 'istanbul'
  • CLI: --coverage.clean, --coverage.clean=false

テスト実行前にカバレッジ結果をクリーンアップします

coverage.cleanOnRerun

  • 型: boolean
  • デフォルト: true
  • 利用可能なプロバイダー: 'v8' | 'istanbul'
  • CLI: --coverage.cleanOnRerun, --coverage.cleanOnRerun=false

ウォッチ再実行時にカバレッジレポートをクリーンアップします

coverage.reportsDirectory

  • 型: string
  • デフォルト: './coverage'
  • 利用可能なプロバイダー: 'v8' | 'istanbul'
  • CLI: --coverage.reportsDirectory=<path>

警告

coverage.cleanが有効になっている場合(デフォルト値)、Vitestはこのディレクトリをテスト実行前に削除します。

カバレッジレポートを書き込むディレクトリ。

HTMLレポーターの出力でカバレッジレポートをプレビューするには、このオプションをhtmlレポートディレクトリのサブディレクトリ(例:./html/coverage)として設定する必要があります。

coverage.reporter

  • 型: string | string[] | [string, {}][]
  • デフォルト: ['text', 'html', 'clover', 'json']
  • 利用可能なプロバイダー: '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+

  • 型: boolean
  • デフォルト: false (Vitest 0.34.0以降)
  • 利用可能なプロバイダー: 'v8' | 'istanbul'
  • CLI: --coverage.reportOnFailure, --coverage.reportOnFailure=false

テストが失敗した場合でもカバレッジレポートを生成します。

coverage.allowExternal

  • 型: boolean
  • デフォルト: false
  • 利用可能なプロバイダー: 'v8' | 'istanbul'
  • CLI: --coverage.allowExternal, --coverage.allowExternal=false

プロジェクトのroot外のファイルのカバレッジを収集します。

coverage.skipFull

  • 型: boolean
  • デフォルト: false
  • 利用可能なプロバイダー: 'v8' | 'istanbul'
  • CLI: --coverage.skipFull, --coverage.skipFull=false

ステートメント、ブランチ、関数カバレッジが100%のファイルを表示しません。

coverage.thresholds

カバレッジ閾値のオプション

coverage.thresholds.lines
  • 型: number
  • 利用可能なプロバイダー: 'v8' | 'istanbul'
  • CLI: --coverage.thresholds.lines=<number>

行のグローバル閾値。詳細については、istanbulのドキュメントを参照してください。

coverage.thresholds.functions
  • 型: number
  • 利用可能なプロバイダー: 'v8' | 'istanbul'
  • CLI: --coverage.thresholds.functions=<number>

関数のグローバル閾値。詳細については、istanbulのドキュメントを参照してください。

coverage.thresholds.branches
  • 型: number
  • 利用可能なプロバイダー: 'v8' | 'istanbul'
  • CLI: --coverage.thresholds.branches=<number>

ブランチのグローバル閾値。詳細については、istanbulのドキュメントを参照してください。

coverage.thresholds.statements
  • 型: number
  • 利用可能なプロバイダー: 'v8' | 'istanbul'
  • CLI: --coverage.thresholds.statements=<number>

ステートメントのグローバル閾値。詳細については、istanbulのドキュメントを参照してください。

coverage.thresholds.perFile
  • 型: boolean
  • デフォルト: false
  • 利用可能なプロバイダー: 'v8' | 'istanbul'
  • CLI: --coverage.thresholds.perFile, --coverage.thresholds.perFile=false

ファイルごとの閾値をチェックします。

coverage.thresholds.autoUpdate
  • 型: boolean
  • デフォルト: false
  • 利用可能なプロバイダー: 'v8' | 'istanbul'
  • CLI: --coverage.thresholds.autoUpdate=<boolean>

現在のカバレッジが設定された閾値を超えている場合、linesfunctionsbranchesstatementsのすべての閾値を構成ファイルに更新します。このオプションは、カバレッジが向上した場合に閾値を維持するのに役立ちます。

coverage.thresholds.100
  • 型: boolean
  • デフォルト: false
  • 利用可能なプロバイダー: '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]
  • 型: { statements?: number functions?: number branches?: number lines?: number }
  • デフォルト: undefined
  • 利用可能なプロバイダー: 'v8' | 'istanbul'

グロブパターンに一致するファイルの閾値を設定します。

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

  • 型: boolean
  • デフォルト: false
  • プロバイダーで利用可能: 'v8'
  • CLI: --coverage.ignoreEmptyLines=<boolean>

空行、コメント、その他の非ランタイムコード(例:Typescript型)を無視します。

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

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

  • 型: string[]
  • デフォルト: []
  • プロバイダーで利用可能: 'istanbul'
  • CLI: --coverage.ignoreClassMethods=<method>

カバレッジから無視するクラスメソッド名の配列に設定します。詳細については、istanbulのドキュメントを参照してください。

coverage.watermarks

ts
{
  statements?: [number, number],
  functions?: [number, number],
  branches?: [number, number],
  lines?: [number, number]
}
  • デフォルト
ts
{
  statements: [50, 80],
  functions: [50, 80],
  branches: [50, 80],
  lines: [50, 80]
}
  • 利用可能なプロバイダー: 'v8' | 'istanbul'
  • CLI: --coverage.watermarks.statements=50,80, --coverage.watermarks.branches=50,80

ステートメント、行、ブランチ、関数のウォーターマーク。詳細については、istanbulのドキュメントを参照してください。

coverage.processingConcurrency

  • 型: boolean
  • デフォルト: Math.min(20, os.availableParallelism?.() ?? os.cpus().length)
  • 利用可能なプロバイダー: 'v8' | 'istanbul'
  • CLI: --coverage.processingConcurrency=<number>

カバレッジ結果を処理する際に使用される並行処理の制限。

coverage.customProviderModule

  • 型: string
  • プロバイダーで利用可能: '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'

// run
test('OnlyRunThis', () => {
  expect(true).toBe(true)
})

// skipped
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オプションで構成できます。

注意

実際のブラウザでのテストの詳細については、ガイドページを参照してください。

警告

これは実験的な機能です。破壊的な変更は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

ブラウザをheadlessモードで実行します。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に依存しない場合は、すべてを同時に実行する方がはるかに速くなる可能性があります。

ヒント

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

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

警告

これはライブラリ作成者向けの高度な API です。ブラウザでテストを実行する必要がある場合は、browser オプションを使用してください。

browser.providerOptions 1.0.0+

  • 型: BrowserProviderOptions

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

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

ヒント

組み込みプロバイダーを使用する際に型安全性を高めるには、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 を設定するだけで、実際にはコードをインポートしません。

スクリプトの srccontent は、Vite プラグインによって処理されます。スクリプトは、次の形式で提供する必要があります。

ts
export interface BrowserScript {
  /**
   * If "content" is provided and type is "module", this will be its identifier.
   *
   * If you are using TypeScript, you can add `.ts` extension here for example.
   * @default `injected-${index}.js`
   */
  id?: string
  /**
   * JavaScript content to be injected. This string is processed by Vite plugins if type is "module".
   *
   * You can use `id` to give Vite a hint about the file extension.
   */
  content?: string
  /**
   * Path to the script. This value is resolved by Vite so it can be a node module or a file path.
   */
  src?: string
  /**
   * If the script should be loaded asynchronously.
   */
  async?: boolean
  /**
   * Script type.
   * @default 'module'
   */
  type?: string
}

browser.testerScripts 1.6.0+

  • 型: BrowserScript[]
  • デフォルト: []

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

スクリプトの srccontent は、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 に渡されます。

ヒント

このオブジェクトの 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 モジュールは、ランタイムに影響を与えないようにプロキシを返します。

css.include

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

実際の CSS を返し、Vite パイプラインによって処理されるファイルの RegExp パターン。

ヒント

すべての CSS ファイルを処理するには、/.+/ を使用します。

css.exclude

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

空の CSS ファイルを返すファイルの RegExp パターン。

css.modules

  • : { classNameStrategy? }
  • デフォルト: {}

css.modules.classNameStrategy

  • : 'stable' | 'scoped' | 'non-scoped'
  • デフォルト: 'stable'

CSS ファイルを処理することにした場合は、CSS モジュール内のクラス名をスコープするかどうかを設定できます。次のオプションから選択できます。

  • stable: クラス名は _${name}_${hashedFilename} として生成されます。これは、CSS の内容が変更された場合でも生成されたクラスは同じままですが、ファイルの名前が変更された場合、またはファイルが別のフォルダーに移動された場合は変更されることを意味します。この設定は、スナップショット機能を使用する場合に役立ちます。
  • scoped: クラス名は通常どおりに生成され、css.modules.generateScopeName メソッドがある場合はそれを尊重し、CSS 処理が有効になります。デフォルトでは、ファイル名は _${name}_${hash} として生成されます。ここで、hash にはファイル名とファイルの内容が含まれます。
  • non-scoped: クラス名はハッシュ化されません。

警告

デフォルトでは、Vitest はプロキシをエクスポートし、CSS モジュールの処理をバイパスします。クラスの 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? }

テストをどのようにソートするかについてのオプション。

ドット表記でCLIにシーケンスオプションを提供できます。

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

sequence.sequencer *

  • : TestSequencerConstructor
  • デフォルト: BaseSequencer

シャーディングとソートのためのメソッドを定義するカスタムクラス。 sortshardメソッドのいずれか一方のみを再定義する必要がある場合は、vitest/nodeからBaseSequencerを拡張できますが、両方とも存在する必要があります。

シャーディングはソートの前に実行され、--shardオプションが指定されている場合にのみ実行されます。

sequence.shuffle

  • : boolean | { files?, tests? }
  • デフォルト: false
  • CLI: --sequence.shuffle, --sequence.shuffle=false

ファイルとテストをランダムに実行したい場合は、このオプションまたはCLI引数--sequence.shuffleで有効にできます。

Vitestは通常、キャッシュを使用してテストをソートするため、実行時間の長いテストが早く開始され、テストの実行が高速になります。ファイルとテストがランダムな順序で実行されると、このパフォーマンスの向上は失われますが、以前の実行に偶然依存するテストを追跡するのに役立つ場合があります。

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は、単一のグループのフックを並行して実行します(親スイートのフックは、現在のスイートのフックの前に実行されます)

ヒント

このオプションは、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と同じ出力形式を実装する必要があります。

型チェッカーを使用するには、パッケージをインストールする必要があります。

  • 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がテストファイルの外でエラーを見つけた場合でも、失敗しないでください。これは、テスト以外のエラーをまったく表示しません。

デフォルトでは、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

スローされたAssertionErrorsにshowDiffフラグを含めるかどうかを制御します。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>

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

デフォルトでは、Vitestは一部のテストケースが失敗した場合でも、すべてのテストケースを実行します。これは、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 {
      // If we've encountered a ReferenceError, show the whole stack.
      if (error.name === 'ReferenceError')
        return

      // Reject all frames from third party libraries.
      if (file.includes('node_modules'))
        return false
    },
  },
})

diff 0.34.5+

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

diffインターフェースの生成に使用されるdiff設定へのパス。diff表示をカスタマイズしたい場合に便利です。

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

表示されるdiff結果の最大長。この閾値を超えるdiffは切り捨てられます。デフォルト値の0では切り捨ては行われません。

diff.truncateAnnotation

  • : string
  • デフォルト: '... Diff result is truncated'

diff結果が切り捨てられた場合に、その末尾に出力される注釈。

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を使用してVitestをnode:child_process内で実行している場合、nextTickのモックはサポートされていません。NodeJSは内部でnode:child_processprocess.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
  • デフォルト: configファイルまたはrootに近いvitest.{workspace,projects}.{js,ts,json}

ワークスペース設定ファイルへの、rootからの相対パス。

isolate 1.1.0+

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

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

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

ヒント

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

includeTaskLocation 1.4.0+

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

リポーターでVitest APIがタスクを受信したときに、locationプロパティを含めるかどうか。テストが多い場合、これによりパフォーマンスがわずかに低下する可能性があります。

locationプロパティには、元のファイル内のtestまたはdescribeの位置に対応するcolumnlineの値があります。

ヒント

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

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を拡張できます。

警告

これはローレベルのオプションであり、デフォルトのNode.js APIにアクセスできない高度なケースでのみ使用する必要があります。

スナップショット機能を設定するだけであれば、snapshotFormatまたはresolveSnapshotPathオプションを使用してください。

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