Настройка Vitest
Чтобы создать файл конфигурации Vitest, следуйте инструкциям. Прежде чем продолжить, убедитесь, что вы понимаете, как работает разрешение конфигурации Vitest.
WARNING
Все перечисленные здесь параметры находятся в свойстве test внутри конфигурации:
export default defineConfig({
test: {
exclude: [],
},
});TIP
В дополнение к следующим параметрам, вы также можете использовать любой параметр конфигурации из Vite. Например, define для определения глобальных переменных или resolve.alias для определения псевдонимов.
Все параметры конфигурации, которые не поддерживаются внутри конфигурации рабочей области, отмечены значком *.
include
- Тип:
string[] - По умолчанию:
['**/*.{test,spec}.?(c|m)[jt]s?(x)'] - CLI:
vitest [...include],vitest **/*.test.js
Список glob-шаблонов, соответствующих вашим тестовым файлам.
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"
Список glob-шаблонов, которые следует исключить из поиска тестовых файлов.
WARNING
Этот параметр не влияет на покрытие кода. Если вам нужно исключить определенные файлы из отчета о покрытии, используйте coverage.exclude.
Это единственный параметр, который не переопределяет вашу конфигурацию, если вы передаете его через флаг CLI. Все glob-шаблоны, добавленные с помощью флага --exclude, будут добавлены к массиву exclude в конфигурации.
includeSource
- Тип:
string[] - По умолчанию:
[]
Включает glob-шаблоны для тестовых файлов, расположенных внутри исходного кода.
Когда этот параметр определен, 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\//]
Externalize означает, что Vite пропустит обработку пакета и передаст его в нативный Node. Externalized зависимости не будут обрабатываться преобразователями и разрешителями Vite, поэтому они не поддерживают HMR при перезагрузке. По умолчанию все пакеты внутри node_modules являются externalized.
Эти параметры поддерживают имена пакетов, как они указаны в node_modules или в deps.moduleDirectories. Например, пакет @company/some-name, расположенный внутри packages/some-name, должен быть указан как some-name, а packages должен быть включен в deps.moduleDirectories. По сути, Vitest всегда проверяет путь к файлу, а не фактическое имя пакета.
Если используется регулярное выражение, Vitest применяет его к пути к файлу, а не к имени пакета.
server.deps.inline
- Тип:
(string | RegExp)[] | true - По умолчанию:
[]
Vite будет обрабатывать модули, указанные как встроенные. Это может быть полезно для обработки пакетов, которые поставляются с .js в формате ESM (который Node не может обработать).
Если 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? } - См. также: Dep Optimization Options (Параметры оптимизации зависимостей)
Включить оптимизацию зависимостей. Если у вас много тестов, это может улучшить их производительность. До Vitest 0.34.0 это называлось deps.experimentalOptimizer.
Когда Vitest обнаруживает внешнюю библиотеку, указанную в include, она будет объединена в один файл с помощью esbuild и импортирована как единый модуль. Это обеспечивает несколько преимуществ:
- Импорт пакетов, содержащих большое количество импортов, является ресурсоемким. Объединив их в один файл, мы можем сэкономить много времени.
- Импорт библиотек UI является дорогостоящим, потому что они не предназначены для запуска внутри Node.js.
- Ваша конфигурация
aliasтеперь применяется к объединенным пакетам. - Код в ваших тестах выполняется ближе к тому, как он выполняется в браузере.
Имейте в виду, что только пакеты в опции deps.optimizer?.[mode].include объединяются (некоторые плагины заполняют это автоматически, например, Svelte). Вы можете прочитать больше о доступных опциях в документации Vite (Vitest не поддерживает опции disable и noDiscovery). По умолчанию Vitest использует optimizer.web для сред jsdom и happy-dom, и optimizer.ssr для сред node и edge, но это можно настроить с помощью transformMode.
Эти опции также наследуют вашу конфигурацию optimizeDeps (для web Vitest расширит optimizeDeps, для ssr - ssr.optimizeDeps). Если вы переопределите опцию include/exclude в deps.optimizer, она расширит ваш optimizeDeps при запуске тестов. Vitest автоматически удаляет те же опции из include, если они указаны в exclude.
TIP
Вы не сможете редактировать свой код в node_modules для отладки, так как код фактически находится в вашем каталоге cacheDir или test.cache.dir. Если вы хотите отлаживать с помощью операторов console.log, отредактируйте его напрямую или принудительно пересоберите с помощью опции deps.optimizer?.[mode].force.
deps.optimizer.{mode}.enabled
- Тип:
boolean - По умолчанию:
falseначиная с Vitest 1.3.0
Включить оптимизацию зависимостей.
WARNING
Эта опция работает только с Vite 4.3.2 и выше.
deps.web 0.34.2+
- Тип:
{ transformAssets?, ... }
Параметры, которые применяются к внешним файлам, когда режим преобразования установлен в web. По умолчанию jsdom и happy-dom используют режим web, в то время как среды node и edge используют режим преобразования ssr, поэтому эти параметры не повлияют на файлы внутри этих сред.
Обычно файлы внутри node_modules являются externalized, но эти параметры также влияют на файлы в server.deps.external.
deps.web.transformAssets
- Тип:
boolean - По умолчанию:
true
Следует ли Vitest обрабатывать файлы ресурсов (.png, .svg, .jpg и т. д.) и разрешать их так же, как это делает Vite в браузере.
Этот модуль будет иметь экспорт по умолчанию, равный пути к ресурсу, если не указан запрос.
deps.web.transformCss
- Тип:
boolean - По умолчанию:
true
Должен ли Vitest обрабатывать файлы CSS (.css, .scss, .sass и т. д.) и разрешать их, как это делает Vite в браузере.
Если файлы CSS отключены с помощью опций css, эта опция просто заглушит ошибки ERR_UNKNOWN_FILE_EXTENSION.
deps.web.transformGlobPattern
- Тип:
RegExp | RegExp[] - По умолчанию:
[]
Шаблон регулярного выражения для сопоставления внешних файлов, которые должны быть преобразованы.
По умолчанию файлы внутри node_modules являются externalized и не преобразуются, если это не CSS или ресурс, и соответствующая опция не отключена.
deps.interopDefault
- Тип:
boolean - По умолчанию:
true
Интерпретировать default экспорт модуля CJS как именованные экспорты. Некоторые зависимости объединяют только модули CJS и не используют именованные экспорты, которые Node.js может статически анализировать, когда пакет импортируется с использованием синтаксиса import вместо require. При импорте таких зависимостей в среде 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 импортирует внешние модули с помощью нативного Node.js, пропуская шаг преобразования Vite.
Установка этого параметра переопределит значение по умолчанию. Если вы хотите по-прежнему искать пакеты в node_modules, включите его вместе с любыми другими параметрами:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
deps: {
moduleDirectories: ['node_modules', path.resolve('../../packages')],
},
},
});runner
- Тип:
VitestRunnerConstructor - По умолчанию:
nodeпри запуске тестов илиbenchmarkпри запуске бенчмарков
Путь к пользовательскому тестовому runner. Это расширенная функция, и ее следует использовать с пользовательскими runner библиотек. Вы можете прочитать больше об этом в документации.
benchmark
- Тип:
{ include?, exclude?, ... }
Параметры, используемые при запуске vitest bench.
benchmark.include
- Тип:
string[] - По умолчанию:
['**/*.{bench,benchmark}.?(c|m)[jt]s?(x)']
Включить glob-шаблоны для файлов тестов benchmark.
benchmark.exclude
- Тип:
string[] - По умолчанию:
['node_modules', 'dist', '.idea', '.git', '.cache']
Исключить glob-шаблоны для файлов тестов benchmark.
benchmark.includeSource
- Тип:
string[] - По умолчанию:
[]
Включить glob-шаблоны для файлов тестов benchmark внутри исходного кода. Эта опция аналогична includeSource.
Когда этот параметр определен, Vitest будет запускать все соответствующие файлы, содержащие import.meta.vitest.
benchmark.reporters
- Тип:
Arrayable<BenchmarkBuiltinReporters | Reporter> - По умолчанию:
'default'
Пользовательский репортер для вывода. Может содержать одно или несколько встроенных имен отчетов, экземпляров репортеров и/или путей к пользовательским репортерам.
benchmark.outputFile
- Тип:
string | Record<string, string>
Записать результаты benchmark в файл, когда также указана опция --reporter=json. Предоставляя объект вместо строки, вы можете определить отдельные выходы при использовании нескольких репортеров.
Чтобы предоставить объект через команду CLI, используйте следующий синтаксис: --outputFile.json=./path --outputFile.junit=./other-path.
benchmark.outputJson 1.6.0+
- Тип:
string | undefined - По умолчанию:
undefined
Путь к файлу для хранения результата benchmark, который можно использовать для опции --compare позже.
Например:
# 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.jsonbenchmark.compare 1.6.0+
- Тип:
string | undefined - По умолчанию:
undefined
Путь к файлу предыдущего результата benchmark для сравнения с текущими запусками.
alias
- Тип:
Record<string, string> | Array<{ find: string | RegExp, replacement: string, customResolver?: ResolverFunction | ResolverObject }>
Определите пользовательские псевдонимы при запуске внутри тестов. Они будут объединены с псевдонимами из resolve.alias.
WARNING
Vitest использует примитивы Vite SSR для запуска тестов, которые имеют определенные недостатки.
- Псевдонимы влияют только на модули, импортированные непосредственно с помощью ключевого слова
importвстроенным модулем (весь исходный код встроен по умолчанию). - Vitest не поддерживает псевдонимы для вызовов
require. - Если вы создаете псевдоним для внешней зависимости (например,
react->preact), рассмотрите возможность создания псевдонима для фактических пакетов вnode_modules, чтобы обеспечить корректную работу с externalized зависимостями. И Yarn, и pnpm поддерживают создание псевдонимов через префиксnpm:.
globals
- Тип:
boolean - По умолчанию:
false - CLI:
--globals,--globals=false
По умолчанию vitest не предоставляет глобальные API для большей явности. Если вы предпочитаете использовать API глобально, как Jest, вы можете передать опцию --globals в CLI или добавить globals: true в конфигурацию.
// vitest.config.ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
globals: true,
},
});Чтобы TypeScript работал с глобальными API, добавьте vitest/globals в поле types в вашем tsconfig.json.
// tsconfig.json
{
"compilerOptions": {
"types": ["vitest/globals"]
}
}Если вы уже используете unplugin-auto-import в своем проекте, вы также можете использовать его напрямую для автоматического импорта этих API.
// vitest.config.ts
import { defineConfig } from 'vitest/config';
import AutoImport from 'unplugin-auto-import/vite';
export default defineConfig({
plugins: [
AutoImport({
imports: ['vitest'],
dts: true, // generate TypeScript declaration
}),
],
});environment
- Тип:
'node' | 'jsdom' | 'happy-dom' | 'edge-runtime' | string - По умолчанию:
'node' - CLI:
--environment=<env>
Окружение, используемое для выполнения тестов. По умолчанию Vitest использует окружение Node.js. Для тестирования веб-приложений можно использовать окружения, имитирующие браузер, например, jsdom или happy-dom. Для тестирования edge-функций можно использовать окружение edge-runtime.
Вы можете указать другое окружение для всех тестов в файле, добавив docblock-комментарий @vitest-environment или обычный комментарий в начало файла:
Docblock стиль:
/**
* @vitest-environment jsdom
*/
test('use jsdom in this test file', () => {
const element = document.createElement('div');
expect(element).not.toBeNull();
});Стиль комментария:
// @vitest-environment happy-dom
test('use happy-dom in this test file', () => {
const element = document.createElement('div');
expect(element).not.toBeNull();
});Для совместимости с Jest также поддерживается @jest-environment:
/**
* @jest-environment jsdom
*/
test('use jsdom in this test file', () => {
const element = document.createElement('div');
expect(element).not.toBeNull();
});При запуске Vitest с флагом --isolate=false тесты будут выполняться в следующем порядке: node, jsdom, happy-dom, edge-runtime, custom environments (пользовательские окружения). Это означает, что тесты с одинаковым окружением группируются и выполняются последовательно.
Начиная с версии 0.23.0, можно определять пользовательские окружения (custom environment). При использовании пользовательского окружения Vitest попытается загрузить пакет vitest-environment-${name}. Этот пакет должен экспортировать объект типа Environment:
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 также предоставляет builtinEnvironments через точку входа vitest/environments, если вы хотите расширить существующие окружения. Подробнее о расширении окружений можно прочитать в нашем руководстве.
TIP
Начиная с Vitest 1.3.0, окружение jsdom предоставляет глобальную переменную jsdom, равную текущему экземпляру JSDOM. Чтобы TypeScript распознавал ее, добавьте vitest/jsdom в свой tsconfig.json при использовании этого окружения:
{
"compilerOptions": {
"types": ["vitest/jsdom"]
}
}environmentOptions
- Тип:
Record<'jsdom' | string, unknown> - По умолчанию:
{}
Параметры, передаваемые в метод setup текущего environment. По умолчанию можно настраивать только параметры JSDOM, если он используется в качестве тестового окружения.
environmentMatchGlobs
- Тип:
[string, EnvironmentName][] - По умолчанию:
[]
Автоматическое назначение окружения на основе glob-паттернов. Используется первое совпадение.
Пример:
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'][] - По умолчанию:
[]
Автоматическое назначение пула для выполнения тестов на основе glob-паттернов. Используется первое совпадение.
Пример:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
poolMatchGlobs: [
// все тесты в каталоге "worker-specific" будут выполняться внутри worker-а, как если бы вы включили для них `--pool=threads`
['**/tests/worker-specific/**', 'threads'],
// запустить все тесты в каталоге "browser" в реальном браузере
['**/tests/browser/**', 'browser'],
// все остальные тесты будут выполняться на основе параметров "browser.enabled" и "threads", если вы не указали другие glob-паттерны
// ...
],
},
});update*
- Тип:
boolean - По умолчанию:
false - CLI:
-u,--update,--update=false
Обновление snapshot-файлов. Обновляет все измененные snapshot-ы и удаляет устаревшие.
watch*
- Тип:
boolean - По умолчанию:
!process.env.CI - CLI:
-w,--watch,--watch=false
Включение режима наблюдения (watch mode).
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). При использовании потоков нельзя использовать API, связанные с процессами, такие как process.chdir(). Некоторые библиотеки, написанные на низкоуровневых языках, такие как Prisma, bcrypt и canvas, могут вызывать проблемы при запуске в нескольких потоках и приводить к segfault-ам. В этих случаях рекомендуется использовать пул forks.
forks*
Аналогичен пулу threads, но использует child_process вместо worker_threads через tinypool. Связь между тестами и основным процессом не такая быстрая, как с пулом threads. API, связанные с процессами, такие как process.chdir(), доступны в пуле forks.
vmThreads*
Запуск тестов с использованием VM context (внутри изолированной среды) в пуле threads.
Это ускоряет выполнение тестов, но модуль VM нестабилен при запуске ESM code. Ваши тесты могут вызывать утечки памяти - для борьбы с этим рассмотрите возможность ручного редактирования значения poolOptions.vmThreads.memoryLimit.
WARNING
Запуск кода в песочнице (sandbox) имеет некоторые преимущества (более быстрые тесты), но также сопряжен с рядом недостатков.
- Глобальные переменные внутри низкоуровневых модулей, такие как (
fs,pathи т. д.), отличаются от глобальных переменных, присутствующих в вашей тестовой среде. В результате любая ошибка, выдаваемая этими низкоуровневыми модулями, будет ссылаться на другой конструктор Error по сравнению с тем, который используется в вашем коде:
try {
fs.writeFileSync('/doesnt exist');
} catch (err) {
console.log(err instanceof Error); // false
}- Импорт ES-модулей кэширует их на неопределенный срок, что приводит к утечкам памяти, если у вас много контекстов (файлов тестов). В Node.js нет API, который очищает этот кэш.
- Доступ к глобальным переменным занимает больше времени в среде песочницы.
Пожалуйста, учитывайте эти проблемы при использовании этой опции. Команда Vitest не может исправить ни одну из проблем на нашей стороне.
vmForks*
Аналогичен пулу vmThreads, но использует child_process вместо worker_threads через tinypool. Связь между тестами и основным процессом не такая быстрая, как с пулом vmThreads. API, связанные с процессами, такие как process.chdir(), доступны в пуле vmForks. Пожалуйста, имейте в виду, что этот пул имеет те же недостатки, что и vmThreads.
poolOptions* 1.0.0+
- Тип:
Record<'threads' | 'forks' | 'vmThreads' | 'vmForks', {}> - По умолчанию:
{}
poolOptions.threads
Параметры для пула threads.
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
Запуск всех тестов с одинаковым окружением в одном рабочем потоке. Это отключит встроенную изоляцию модулей (ваш исходный код или встроенный код все равно будет переоцениваться для каждого теста), но может повысить производительность тестов.
WARNING
Несмотря на то, что эта опция заставит тесты выполняться один за другим, она отличается от --runInBand в Jest. Vitest использует workers не только для параллельного запуска тестов, но и для обеспечения изоляции. Отключив эту опцию, ваши тесты будут выполняться последовательно, но в одном и том же глобальном контексте, поэтому вы должны обеспечить изоляцию самостоятельно.
Это может вызвать различные проблемы, если вы полагаетесь на глобальное состояние (фреймворки frontend обычно это делают) или ваш код предполагает, что окружение определено отдельно для каждого теста. Но это может ускорить выполнение тестов (до 3 раз быстрее), которые не зависят от глобального состояния или могут легко обойтись без него.
poolOptions.threads.useAtomics*
- Тип:
boolean - По умолчанию:
false
Использовать Atomics для синхронизации потоков.
Это может повысить производительность в некоторых случаях, но может вызвать segfault в более старых версиях Node.
poolOptions.threads.isolate
- Тип:
boolean - По умолчанию:
true
Изолировать окружение для каждого файла теста.
poolOptions.threads.execArgv*
- Тип:
string[] - По умолчанию:
[]
Передать дополнительные аргументы в node в потоках. См. Command-line API | Node.js для получения дополнительной информации.
WARNING
Будьте осторожны при использовании, так как некоторые параметры могут привести к сбою worker-а, например, --prof, --title. См. https://github.com/nodejs/node/issues/41103.
poolOptions.forks
Параметры для пула forks.
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
Запуск всех тестов с одинаковым окружением в одном дочернем процессе. Это отключит встроенную изоляцию модулей (ваш исходный код или встроенный код все равно будет переоцениваться для каждого теста), но может повысить производительность тестов.
WARNING
Несмотря на то, что эта опция заставит тесты выполняться один за другим, она отличается от --runInBand в Jest. Vitest использует дочерние процессы не только для параллельного запуска тестов, но и для обеспечения изоляции. Отключив эту опцию, ваши тесты будут выполняться последовательно, но в одном и том же глобальном контексте, поэтому вы должны обеспечить изоляцию самостоятельно.
Это может вызвать различные проблемы, если вы полагаетесь на глобальное состояние (фреймворки frontend обычно это делают) или ваш код предполагает, что окружение определено отдельно для каждого теста. Но это может ускорить выполнение тестов (до 3 раз быстрее), которые не зависят от глобального состояния или могут легко обойтись без него.
poolOptions.forks.execArgv*
- Тип:
string[] - По умолчанию:
[]
Передать дополнительные аргументы в процесс node в дочерних процессах. См. Command-line API | Node.js для получения дополнительной информации.
WARNING
Будьте осторожны при использовании, так как некоторые параметры могут привести к сбою worker-а, например, --prof, --title. См. https://github.com/nodejs/node/issues/41103.
poolOptions.vmThreads
Параметры для пула vmThreads.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
poolOptions: {
vmThreads: {
// VM threads 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 Cores
Указывает предел памяти для worker-ов перед их перезапуском. Это значение сильно зависит от вашей среды, поэтому лучше указать его вручную, чем полагаться на значение по умолчанию.
TIP
Реализация основана на workerIdleMemoryLimit в Jest.
Лимит можно указать несколькими различными способами, и независимо от результата используется Math.floor, чтобы превратить его в целочисленное значение:
<= 1- Предполагается, что значение является процентом от системной памяти. Таким образом, 0,5 устанавливает предел памяти worker-а в половину от общего объема системной памяти.\> 1- Предполагается, что это фиксированное значение в байтах. Из-за предыдущего правила, если вам нужно значение в 1 байт (я не знаю, зачем), вы можете использовать 1,1.С единицами измерения
50%- Как и выше, процент от общего объема системной памяти.100КБ,65МБи т. д. - С единицами измерения для обозначения фиксированного предела памяти.K/KB- Килобайты (x1000)KiB- Кибибайты (x1024)M/MB- МегабайтыMiB- МебибайтыG/GB- ГигабайтыGiB- Гибибайты
WARNING
Ограничение памяти на основе процентов не работает на Linux CircleCI workers из-за неправильного сообщения о системной памяти.
poolOptions.vmThreads.useAtomics*
- Тип:
boolean - По умолчанию:
false
Использовать Atomics для синхронизации потоков.
Это может повысить производительность в некоторых случаях, но может вызвать segfault в более старых версиях Node.
poolOptions.vmThreads.execArgv*
- Тип:
string[] - По умолчанию:
[]
Передать дополнительные аргументы в процесс node в контексте VM. См. Command-line API | Node.js для получения дополнительной информации.
WARNING
Будьте осторожны при использовании, так как некоторые параметры могут привести к сбою worker-а, например, --prof, --title. См. https://github.com/nodejs/node/issues/41103.
poolOptions.vmForks
Параметры для пула vmForks.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
poolOptions: {
vmForks: {
// VM forks 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 Cores
Указывает предел памяти для worker-ов перед их перезапуском. Это значение сильно зависит от вашей среды, поэтому лучше указать его вручную, чем полагаться на значение по умолчанию. Метод расчета значения описан в poolOptions.vmThreads.memoryLimit
poolOptions.vmForks.execArgv*
- Тип:
string[] - По умолчанию:
[]
Передать дополнительные аргументы в процесс node в контексте VM. См. Command-line API | Node.js для получения дополнительной информации.
WARNING
Будьте осторожны при использовании, так как некоторые параметры могут привести к сбою worker-а, например, --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.
TIP
Этот параметр не влияет на тесты, выполняемые в одном файле. Для параллельного запуска тестов внутри файла используйте параметр concurrent в describe или через конфигурацию.
maxWorkers 1.1.0+
- Тип:
number
Максимальное количество рабочих процессов, используемых для запуска тестов. Параметры poolOptions.{threads,vmThreads}.maxThreads/poolOptions.forks.maxForks имеют более высокий приоритет.
minWorkers 1.1.0+
- Тип:
number
Минимальное количество рабочих процессов, используемых для запуска тестов. Параметры poolOptions.{threads,vmThreads}.minThreads/poolOptions.forks.maxForks имеют более высокий приоритет.
testTimeout
- Тип:
number - По умолчанию:
5000 - CLI:
--test-timeout=5000,--testTimeout=5000
Время ожидания (timeout) для одного теста в миллисекундах.
hookTimeout
- Тип:
number - По умолчанию:
10000 - CLI:
--hook-timeout=10000,--hookTimeout=10000
Время ожидания (timeout) для хука (hook) в миллисекундах.
teardownTimeout*
- Тип:
number - По умолчанию:
10000 - CLI:
--teardown-timeout=5000,--teardownTimeout=5000
Время ожидания (timeout) для завершения работы Vitest в миллисекундах.
silent*
- Тип:
boolean - По умолчанию:
false - CLI:
--silent,--silent=false
Отключает вывод в консоль из тестов.
setupFiles
- Тип:
string | string[]
Путь к файлам настройки (setup files). Эти файлы будут выполняться перед каждым тестовым файлом.
INFO
Изменение файлов настройки приведет к повторному запуску всех тестов.
Вы можете использовать process.env.VITEST_POOL_ID (строка, представляющая целое число) для идентификации потока, в котором выполняется файл настройки.
TIP
Обратите внимание: если вы используете флаг --isolate=false, этот файл настройки будет запущен в той же глобальной области видимости несколько раз. Это означает, что перед каждым тестом вы будете получать доступ к одному и тому же глобальному объекту, поэтому убедитесь, что вы не выполняете одни и те же действия несколько раз.
Пример:
import { config } from '@some-testing-lib';
if (!globalThis.defined) {
config.plugins = [myCoolPlugin];
computeHeavyThing();
globalThis.defined = true;
}
// Хуки сбрасываются перед каждым набором тестов
afterEach(() => {
cleanup();
});
globalThis.resetBeforeEachTest = true;globalSetup
- Тип:
string | string[]
Путь к глобальным файлам настройки, относительно корня проекта.
Глобальный файл настройки может экспортировать функции с именами setup и teardown или функцию default, которая возвращает функцию teardown (пример).
INFO
Можно использовать несколько глобальных файлов настройки. Функции setup и teardown выполняются последовательно, а teardown - в обратном порядке.
WARNING
Начиная с Vitest 1.0.0-beta, глобальная настройка запускается только в том случае, если есть хотя бы один запущенный тест. Это означает, что глобальная настройка может начать выполняться в режиме наблюдения (watch mode) после изменения тестового файла (тестовый файл будет ждать завершения глобальной настройки перед запуском).
Имейте в виду, что глобальная настройка выполняется в другой глобальной среде, поэтому ваши тесты не имеют доступа к переменным, определенным в ней. Однако, начиная с версии 1.0.0, вы можете передавать сериализуемые данные в тесты с помощью метода provide:
export default function setup({ provide }) {
provide('wsPort', 3000);
}import type { GlobalSetupContext } from 'vitest/node';
export default function setup({ provide }: GlobalSetupContext) {
provide('wsPort', 3000);
}
// Вы также можете расширить тип `ProvidedContext`,
// чтобы иметь типобезопасный доступ к методам `provide/inject`:
declare module 'vitest' {
export interface ProvidedContext {
wsPort: number;
}
}import { inject } from 'vitest';
inject('wsPort') === 3000;watchExclude*
- Тип:
string[] - По умолчанию:
['**/node_modules/**', '**/dist/**'] - Устаревший (Deprecated): используйте
server.watch.ignored
Glob-паттерн для путей к файлам, которые следует игнорировать при повторном запуске тестов в режиме наблюдения.
forceRerunTriggers*
- Тип:
string[] - По умолчанию:
['**/package.json/**', '**/vitest.config.*/**', '**/vite.config.*/**']
Glob-паттерн для путей к файлам, изменение которых приведет к повторному запуску всего набора тестов. В сочетании с аргументом --changed будет запущен весь набор тестов, если триггер будет найден в git diff.
Полезно, если вы тестируете вызов команд CLI, потому что Vite не может построить граф модулей:
test('execute a script', async () => {
// Vitest не может перезапустить этот тест, если содержимое `dist/index.js` изменится
await execa('node', ['dist/index.js']);
});TIP
Убедитесь, что ваши файлы не исключены с помощью watchExclude.
coverage*
Вы можете использовать v8, istanbul или пользовательское решение для покрытия для сбора информации о покрытии кода тестами.
Вы можете передать параметры покрытия в CLI с помощью точечной нотации:
npx vitest --coverage.enabled --coverage.provider=istanbul --coverage.allWARNING
Если вы используете параметры покрытия с точечной нотацией, не забудьте указать --coverage.enabled. Не используйте один параметр --coverage в этом случае.
coverage.provider
- Тип:
'v8' | 'istanbul' | 'custom' - По умолчанию:
'v8' - CLI:
--coverage.provider=<provider>
Указывает провайдера (инструмент) для сбора покрытия кода.
coverage.enabled
- Тип:
boolean - По умолчанию:
false - Доступно для провайдеров:
'v8' | 'istanbul' - CLI:
--coverage.enabled,--coverage.enabled=false
Включает сбор покрытия кода. Может быть переопределен с помощью опции CLI --coverage.
coverage.include
- Тип:
string[] - По умолчанию:
['**'] - Доступно для провайдеров:
'v8' | 'istanbul' - CLI:
--coverage.include=<path>,--coverage.include=<path1> --coverage.include=<path2>
Список файлов, которые должны быть включены в отчет о покрытии, в виде glob-паттернов.
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[] - По умолчанию:
[
'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>
Список файлов, которые должны быть исключены из отчета о покрытии, в виде glob-паттернов.
Этот параметр переопределяет все параметры по умолчанию. Расширьте параметры по умолчанию при добавлении новых шаблонов для игнорирования:
import { coverageConfigDefaults, defineConfig } from 'vitest/config';
export default defineConfig({
test: {
coverage: {
exclude: ['**/custom-pattern/**', ...coverageConfigDefaults.exclude],
},
},
});coverage.all
- Тип:
boolean - По умолчанию:
true(начиная с Vitest1.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>
WARNING
Vitest удалит этот каталог перед запуском тестов, если включена опция coverage.clean (значение по умолчанию).
Каталог для записи отчетов о покрытии.
Чтобы просмотреть отчет о покрытии в выходных данных 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 для получения подробной информации о параметрах, специфичных для репортера.
Репортер может быть представлен в трех различных формах:
- Одиночный репортер:
{ reporter: 'html' } - Несколько репортеров без опций:
{ reporter: ['html', 'json'] } - Один или несколько репортеров с опциями: ts
{ reporter: [ ['lcov', { projectRoot: './src' }], ['json', { file: 'coverage.json' }], ['text'], ]; }
Начиная с Vitest 1.2.0, вы также можете передавать пользовательские репортеры покрытия. См. Руководство - Пользовательский репортер покрытия для получения дополнительной информации.
{
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 для получения более подробной информации.
coverage.reportOnFailure 0.31.2+
- Тип:
boolean - По умолчанию:
false(начиная с Vitest0.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>
Автоматически обновлять значения порогов lines, functions, branches и statements в файле конфигурации, когда текущее покрытие превышает установленные пороги. Этот параметр помогает поддерживать актуальность порогов при улучшении покрытия кода.
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'
Устанавливает пороги покрытия для файлов, соответствующих указанному glob-паттерну.
{
coverage: {
thresholds: {
// Пороги для всех файлов
functions: 95,
branches: 70,
// Пороги для соответствия glob-паттерну
'src/utils/**.ts': {
statements: 95,
functions: 90,
branches: 85,
lines: 80,
},
// Для файлов, соответствующих этому шаблону, будут установлены только пороги строк.
// Глобальные пороги не наследуются.
'**/math.ts': {
lines: 100,
}
}
}
}coverage.ignoreEmptyLines
- Тип:
boolean - По умолчанию:
false - Доступно для провайдеров:
'v8' - CLI:
--coverage.ignoreEmptyLines=<boolean>
Игнорировать пустые строки, комментарии и другой неисполняемый код, например, типы Typescript.
Этот параметр работает только в том случае, если используемый компилятор удаляет комментарии и другой неисполняемый код из транспилированного кода. По умолчанию Vite использует ESBuild, который удаляет комментарии и типы Typescript из файлов .ts, .tsx и .jsx.
Если вы хотите применить ESBuild и к другим файлам, определите их в параметрах esbuild:
import { defineConfig } from 'vitest/config';
export default defineConfig({
esbuild: {
// Transpile all files with ESBuild to remove comments from code coverage.
// Required for `test.coverage.ignoreEmptyLines` to work:
include: ['**/*.js', '**/*.jsx', '**/*.mjs', '**/*.ts', '**/*.tsx'],
},
test: {
coverage: {
provider: 'v8',
ignoreEmptyLines: true,
},
},
});coverage.ignoreClassMethods
- Тип:
string[] - По умолчанию:
[] - Доступно для провайдеров:
'istanbul' - CLI:
--coverage.ignoreClassMethods=<method>
Установите массив имен методов класса, которые следует игнорировать при подсчете покрытия. См. документацию istanbul для получения дополнительной информации.
coverage.watermarks
- Тип:
{
statements?: [number, number],
functions?: [number, number],
branches?: [number, number],
lines?: [number, number]
}- По умолчанию:
{
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
Водяные знаки (watermarks) для операторов, строк, ветвей и функций. См. документацию 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, остальные будут пропущены.
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 (в разработке).
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.
ПРИМЕЧАНИЕ
Подробнее о тестировании в реальном браузере можно прочитать в руководстве.
WARNING
Это экспериментальная функция. Возможны несовместимые изменения, поэтому рекомендуется зафиксировать версию Vitest при ее использовании.
browser.enabled
- Тип:
boolean - По умолчанию:
false - CLI:
--browser,--browser.enabled=false
Включает запуск тестов в браузере. Может быть переопределено с помощью опции poolMatchGlobs.
browser.name
- Тип:
string - CLI:
--browser=safari
Указывает браузер для запуска тестов. Доступные значения зависят от провайдера:
webdriverio:firefox,chrome,edge,safariplaywright:firefox,webkit,chromiumcustom: любая строка, которая будет передана пользовательскому провайдеру.
browser.headless
- Тип:
boolean - По умолчанию:
process.env.CI - CLI:
--browser.headless,--browser.headless=false
Запускает браузер в режиме headless (без графического интерфейса). Включается по умолчанию при запуске Vitest в CI.
browser.isolate
- Тип:
boolean - По умолчанию:
true - CLI:
--browser.isolate,--browser.isolate=false
Запускает каждый тест в отдельном iframe.
browser.fileParallelism 1.3.0+
- Тип:
boolean - По умолчанию: то же, что и
fileParallelism - CLI:
--browser.fileParallelism=false
Создает все тестовые iframe одновременно для параллельного выполнения тестов.
Это делает невозможным использование интерактивных API (например, кликов или наведения курсора), поскольку на экране одновременно отображается несколько iframe. Однако, если ваши тесты не используют эти 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. Пользовательские провайдеры должны быть экспортированы как default и иметь следующую структуру:
export interface BrowserProvider {
name: string;
getSupportedBrowsers: () => readonly string[];
initialize: (
ctx: Vitest,
options: { browser: string; options?: BrowserProviderOptions }
) => Awaitable<void>;
openPage: (url: string) => Awaitable<void>;
close: () => Awaitable<void>;
}WARNING
Это продвинутый API для разработчиков библиотек. Если вам просто нужно запустить тесты в браузере, используйте опцию browser.
browser.providerOptions 1.0.0+
- Тип:
BrowserProviderOptions
Параметры, передаваемые провайдеру при вызове provider.initialize.
export default defineConfig({
test: {
browser: {
providerOptions: {
launch: {
devtools: true,
},
},
},
},
});TIP
Для лучшей типобезопасности при использовании встроенных провайдеров добавьте один из этих типов (для используемого вами провайдера) в поле compilerOptions.types вашего tsconfig:
{
"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.
Если вы используете шпионаж за ES-модулями с помощью vi.spyOn, включите эту экспериментальную функцию, чтобы разрешить шпионаж за экспортом модулей.
browser.indexScripts 1.6.0+
- Тип:
BrowserScript[] - По умолчанию:
[]
Пользовательские скрипты, которые будут внедрены в индексный HTML-документ перед инициализацией тестовых iframe. Этот HTML-документ только настраивает iframe, не импортируя код.
Скрипты src и content будут обработаны плагинами Vite. Скрипт должен быть предоставлен в следующей форме:
export interface BrowserScript {
/**
* Если предоставлен "content" и тип "module", это будет его идентификатор.
*
* Если вы используете TypeScript, вы можете добавить расширение `.ts` здесь, например.
* @default `injected-${index}.js`
*/
id?: string;
/**
* JavaScript-контент для внедрения. Эта строка будет обработана плагинами Vite, если указан тип 'module'.
*
* Вы можете использовать `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? }
Определяет способ преобразования модулей, импортируемых в тестах, соответствующих glob-шаблону. По умолчанию зависит от среды. Например, тесты со средой 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 используйте API expect.addSnapshotSerializer или опцию snapshotSerializers.
snapshotSerializers* 1.3.0+
- Тип:
string[] - По умолчанию:
[]
Список путей к модулям сериализаторов снимков. Используется для добавления пользовательских сериализаторов снимков. См. Пользовательский сериализатор для получения дополнительной информации.
resolveSnapshotPath*
- Тип:
(testPath: string, snapExtension: string) => string - По умолчанию: сохраняет файлы снимков в каталоге
__snapshots__
Переопределяет путь по умолчанию для сохранения снимков. Например, чтобы сохранить снимки рядом с тестовыми файлами:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
resolveSnapshotPath: (testPath, snapExtension) => testPath + snapExtension,
},
});allowOnly
- Тип:
boolean - По умолчанию:
!process.env.CI - CLI:
--allowOnly,--allowOnly=false
Разрешает запуск тестов и наборов, помеченных как only.
dangerouslyIgnoreUnhandledErrors*
- Тип:
boolean - По умолчанию:
false - CLI:
--dangerouslyIgnoreUnhandledErrors--dangerouslyIgnoreUnhandledErrors=false
Игнорирует необработанные ошибки. Опасно, используйте с осторожностью!
passWithNoTests*
- Тип:
boolean - По умолчанию:
false - CLI:
--passWithNoTests,--passWithNoTests=false
Vitest не будет выдавать ошибку, если не найдено ни одного теста.
logHeapUsage
- Тип:
boolean - По умолчанию:
false - CLI:
--logHeapUsage,--logHeapUsage=false
Выводит информацию об использовании кучи после каждого теста. Полезно для отладки утечек памяти.
css
- Тип:
boolean | { include?, exclude?, modules? }
Настраивает обработку CSS. При исключении CSS-файлы заменяются пустыми строками, чтобы избежать дальнейшей обработки. CSS Modules возвращают прокси, чтобы не влиять на время выполнения.
css.include
- Тип:
RegExp | RegExp[] - По умолчанию:
[]
Регулярное выражение для файлов, которые должны возвращать реальный CSS и будут обработаны конвейером Vite.
TIP
Чтобы обработать все CSS-файлы, используйте /.+/.
css.exclude
- Тип:
RegExp | RegExp[] - По умолчанию:
[]
Регулярное выражение для файлов, которые будут возвращать пустой CSS.
css.modules
- Тип:
{ classNameStrategy? } - По умолчанию:
{}
css.modules.classNameStrategy
- Тип:
'stable' | 'scoped' | 'non-scoped' - По умолчанию:
'stable'
Настраивает область видимости имен классов в CSS-модулях. Доступные варианты:
stable: имена классов генерируются как_${name}_${hashedFilename}. Сгенерированный класс останется прежним, если содержимое CSS изменится, но изменится, если имя файла будет изменено или файл будет перемещен в другую папку. Этот параметр полезен при использовании функции снимков.scoped: имена классов генерируются как обычно, с учетом методаcss.modules.generateScopeName, если он определен и обработка CSS включена. По умолчанию имя файла генерируется как_${name}_${hash}, где хеш включает имя и содержимое файла.non-scoped: имена классов не будут хешированы.
WARNING
По умолчанию Vitest использует прокси, что позволяет обойти обработку CSS Modules. Если вы используете CSS-свойства в классах, необходимо включить обработку CSS с помощью опции include.
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, используя точечную нотацию:
npx vitest --sequence.shuffle --sequence.seed=1000sequence.sequencer*
- Тип:
TestSequencerConstructor - По умолчанию:
BaseSequencer
Пользовательский класс, определяющий методы для сегментирования (шардинга) и сортировки тестов. Вы можете расширить BaseSequencer из vitest/node, если вам нужно переопределить только один из методов sort или shard, но оба метода должны быть реализованы.
Сегментирование выполняется до сортировки и только в том случае, если указана опция --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
Устанавливает начальное значение (seed) для генератора случайных чисел, используемого при рандомизации порядка выполнения тестов.
sequence.hooks
- Тип:
'stack' | 'list' | 'parallel' - По умолчанию:
'parallel' - CLI:
--sequence.hooks=<value>
Изменяет порядок выполнения хуков (hooks).
stack: хуки "after" выполняются в обратном порядке определения, хуки "before" выполняются в порядке определения.list: все хуки выполняются в порядке определения.parallel: хуки в одной группе выполняются параллельно (хуки в родительских наборах тестов по-прежнему выполняются перед хуками текущего набора).
TIP
Эта опция не влияет на onTestFinished. Этот хук всегда вызывается в обратном порядке.
sequence.setupFiles 0.29.3+
- Тип:
'list' | 'parallel' - По умолчанию:
'parallel' - CLI:
--sequence.setupFiles=<value>
Изменяет порядок выполнения файлов настройки (setup files).
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 запускает процесс с определенными параметрами для упрощения разбора, в зависимости от выбранного типа. Checker должен выдавать вывод в том же формате, что и tsc.
Для использования средства проверки типов необходимо установить соответствующий пакет:
tscтребует пакетtypescriptvue-tscтребует пакетvue-tsc
Вы также можете указать путь к пользовательскому исполняемому файлу или имени команды, которая выдает вывод, аналогичный tsc --noEmit --pretty false.
typecheck.include
- Тип:
string[] - По умолчанию:
['**/*.{test,spec}-d.?(c|m)[jt]s?(x)']
Glob-паттерн для файлов, которые следует рассматривать как файлы тестов типов.
typecheck.exclude
- Тип:
string[] - По умолчанию:
['**/node_modules/**', '**/dist/**', '**/cypress/**', '**/.{idea,git,cache,output,temp}/**']
Glob-паттерн для файлов, которые не следует рассматривать как файлы тестов типов.
typecheck.allowJs
- Тип:
boolean - По умолчанию:
false
Проверять JS-файлы, содержащие комментарий @ts-check. Если эта опция включена в 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.
chaiConfig.includeStack
- Тип:
boolean - По умолчанию:
false
Определяет, будет ли трассировка стека включена в сообщение об ошибке Assertion. Значение false по умолчанию подавляет трассировку стека в сообщении об ошибке.
chaiConfig.showDiff
- Тип:
boolean - По умолчанию:
true
Определяет, следует ли включать флаг showDiff в генерируемые AssertionErrors. Значение false всегда будет false; true будет true, когда утверждение запросило отображение diff.
chaiConfig.truncateThreshold
- Тип:
number - По умолчанию:
40
Устанавливает пороговое значение длины для фактических и ожидаемых значений в ошибках утверждений. Если этот порог превышен (например, для больших структур данных), значение заменяется чем-то вроде [ Array(3) ] или { Object (prop1, prop2) }. Установите значение 0, чтобы полностью отключить усечение.
Эта опция конфигурации влияет на усечение значений в заголовках test.each и внутри сообщения об ошибке утверждения.
bail 0.31.0+
- Тип:
number - По умолчанию:
0 - CLI:
--bail=<value>
Прекращает выполнение тестов после указанного количества неудачных тестов.
По умолчанию Vitest запускает все тестовые случаи, даже если некоторые из них завершаются неудачно. Это может быть нежелательно для CI-сборок, где важна только 100% успешная сборка и желательно остановить выполнение тестов как можно раньше при возникновении сбоев. Опция bail позволяет ускорить CI-запуски, предотвращая запуск большего количества тестов при возникновении сбоев.
retry 0.32.3+
- Тип:
number - По умолчанию:
0 - CLI:
--retry=<value>
Повторяет тест указанное количество раз, если он завершился неудачно.
onConsoleLog*
- Тип:
(log: string, type: 'stdout' | 'stderr') => boolean | void
Пользовательский обработчик для console.log в тестах. Если функция возвращает false, Vitest не будет выводить лог в консоль.
Может быть полезно для фильтрации логов из сторонних библиотек.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
onConsoleLog(log: string, type: 'stdout' | 'stderr'): boolean | void {
return !(log === 'message from third party library' && type === 'stdout');
},
},
});onStackTrace* 1.0.0+
- Тип:
(error: Error, frame: ParsedStack) => boolean | void
Применяет функцию фильтрации к каждому кадру каждой трассировки стека при обработке ошибок. Первый аргумент, error, является объектом с теми же свойствами, что и стандартный Error, но это не фактический экземпляр.
Может быть полезно для фильтрации кадров трассировки стека из сторонних библиотек.
import type { ParsedStack } from 'vitest';
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
onStackTrace(error: Error, { file }: ParsedStack): boolean | void {
// Если мы столкнулись с ReferenceError, показать весь стек.
if (error.name === 'ReferenceError') return;
// Отклонить все кадры из сторонних библиотек.
if (file.includes('node_modules')) return false;
},
},
});diff 0.34.5+
- Тип:
string - CLI:
--diff=<value>
Путь к файлу конфигурации diff, который будет использоваться для создания интерфейса diff. Полезно, если требуется настроить отображение diff.
import type { DiffOptions } from 'vitest';
import c from 'picocolors';
export default {
aIndicator: c.bold('--'),
bIndicator: c.bold('++'),
omitAnnotationLines: true,
} satisfies DiffOptions;import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
diff: './vitest.diff.ts',
},
});diff.truncateThreshold
- Тип:
number - По умолчанию:
0
Максимальная длина отображаемого результата diff. Различия, превышающие этот порог, будут усечены. Усечение не применяется при значении по умолчанию 0.
diff.truncateAnnotation
- Тип:
string - По умолчанию:
'... Diff result is truncated'
Аннотация, которая выводится в конце результата diff, если он был усечен.
diff.truncateAnnotationColor
- Тип:
DiffOptionsColor = (arg: string) => string - По умолчанию:
noColor = (string: string): string => string
Цвет аннотации усечения. По умолчанию выводится без цвета.
fakeTimers
- Тип:
FakeTimerInstallOpts
Опции, которые Vitest передаст в @sinon/fake-timers при использовании vi.useFakeTimers().
fakeTimers.now
- Тип:
number | Date - По умолчанию:
Date.now()
Устанавливает фейковые таймеры с указанной Unix epoch (эпохой).
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'].
Мокирование nextTick не поддерживается при запуске Vitest внутри node:child_process с использованием --pool=forks. NodeJS использует process.nextTick внутри node:child_process и зависает, когда он смокирован. Мокирование nextTick поддерживается при запуске Vitest с --pool=threads.
fakeTimers.loopLimit
- Тип:
number - По умолчанию:
10_000
Максимальное количество таймеров, которые будут запущены при вызове vi.runAllTimers().
fakeTimers.shouldAdvanceTime
- Тип:
boolean - По умолчанию:
false
Указывает @sinonjs/fake-timers автоматически увеличивать поддельное время на основе сдвига реального системного времени (например, смокированное время будет увеличено на 20 мс на каждые 20 мс изменения в реальном системном времени).
fakeTimers.advanceTimeDelta
- Тип:
number - По умолчанию:
20
Актуально только при использовании с shouldAdvanceTime: true. Увеличивает поддельное время на advanceTimeDelta мс на каждые advanceTimeDelta мс изменения в реальном системном времени.
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
Определяет, следует ли включать свойство location, когда Vitest API получает задачи в репортерах. Если у вас много тестов, это может вызвать небольшую регрессию производительности.
Свойство location содержит значения column и line, которые соответствуют позиции test или describe в исходном файле.
TIP
Эта опция не имеет эффекта, если вы не используете пользовательский код, который зависит от этого.
snapshotEnvironment 1.6.0+
- Тип:
string
Путь к пользовательской реализации окружения для работы со снимками (snapshot environment). Это полезно, если вы запускаете тесты в среде, которая не поддерживает Node.js API. Эта опция не оказывает никакого эффекта на браузерный раннер.
Этот объект должен иметь форму SnapshotEnvironment и использоваться для разрешения и чтения/записи файлов снимков:
export interface SnapshotEnvironment {
getVersion: () => string;
getHeader: () => string;
resolvePath: (filepath: string) => Promise<string>;
resolveRawPath: (testPath: string, rawPath: string) => Promise<string>;
saveSnapshotFile: (filepath: string, snapshot: string) => Promise<void>;
readSnapshotFile: (filepath: string) => Promise<string | null>;
removeSnapshotFile: (filepath: string) => Promise<void>;
}Вы можете расширить VitestSnapshotEnvironment по умолчанию из точки входа vitest/snapshot, если вам нужно переопределить только часть API.
WARNING
Это низкоуровневая опция, предназначенная для использования в тех редких случаях, когда недоступны стандартные API Node.js.
Если вам просто нужно настроить функцию работы со снимками, используйте опции snapshotFormat или resolveSnapshotPath.