Настройка Vitest
Конфигурация
vitest будет использовать ваш корневой vite.config.ts, если он существует, для согласования плагинов и настроек с вашим Vite-приложением. Если вам нужна отдельная конфигурация для тестирования, или ваше основное приложение не использует Vite, вы можете сделать следующее:
- Создать
vitest.config.ts. Он будет иметь более высокий приоритет и заменит конфигурацию изvite.config.ts. - Передать параметр
--configв командной строке (CLI), например:vitest --config ./path/to/vitest.config.ts. - Использовать
process.env.VITESTили свойствоmodeвdefineConfig(оно будет установлено вtest/benchmark, если не переопределено), чтобы условно применять разные конфигурации вvite.config.ts.
Чтобы настроить сам vitest, добавьте свойство test в вашу конфигурацию Vite. Если вы импортируете defineConfig непосредственно из vite, добавьте ссылку на типы Vitest с помощью triple slash command в начале файла конфигурации.
При использовании defineConfig из vite, используйте следующий код:
/// <reference types="vitest" />
import { defineConfig } from 'vite';
export default defineConfig({
test: {
// ...
},
});При использовании defineConfig из vitest/config, используйте следующий код:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
// ...
},
});Вы можете получить параметры Vitest по умолчанию и расширить их, если это необходимо:
import { configDefaults, defineConfig } from 'vitest/config';
export default defineConfig({
test: {
exclude: [...configDefaults.exclude, 'packages/template/*'],
},
});Если вы используете отдельный файл vitest.config.js, вы можете расширить конфигурацию Vite, импортировав ее из другого файла, если это потребуется:
import { defineConfig, mergeConfig } from 'vitest/config';
import viteConfig from './vite.config';
export default mergeConfig(
viteConfig,
defineConfig({
test: {
exclude: ['packages/template/*'],
},
})
);WARNING
mergeConfig helper доступен в Vitest начиная с версии v0.30.0. Вы можете импортировать его непосредственно из vite, если используете более раннюю версию.
Если ваша конфигурация Vite определена как функция, используйте следующий код:
import { defineConfig, mergeConfig } from 'vitest/config';
import viteConfig from './vite.config';
export default defineConfig(configEnv =>
mergeConfig(
viteConfig(configEnv),
defineConfig({
test: {
exclude: ['packages/template/*'],
},
})
)
);Опции
TIP
Помимо перечисленных ниже, можно использовать любые параметры конфигурации Vite, описанные в документации. Например, define для определения глобальных переменных или resolve.alias для определения псевдонимов.
TIP
Все параметры конфигурации, которые не поддерживаются внутри проекта workspace, отмечены значком *.
include
- Тип:
string[] - По умолчанию:
['**/*.{test,spec}.?(c|m)[jt]s?(x)']
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.*']
Glob-паттерн, определяющий файлы, которые будут исключены из тестового запуска.
includeSource
- Тип:
string[] - По умолчанию:
[]
Glob-паттерны для включения файлов тестов в исходном коде.
Если это определено, Vitest запустит все соответствующие файлы, содержащие import.meta.vitest.
server
- Тип:
{ sourcemap?, deps?, ... } - Версия: С Vitest 0.34.0
Настройки сервера Vite-Node.
server.sourcemap
- Тип:
'inline' | boolean - По умолчанию:
'inline'
Включить встроенные sourcemap в модули.
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 будет обрабатывать указанные модули как встроенные (inline). Это может быть полезно для обработки пакетов, которые поставляют .js в формате ESM (который Node не может обработать).
Если true, каждая зависимость будет встроена. Все зависимости, указанные в ssr.noExternal, будут встроены по умолчанию.
server.deps.fallbackCJS
- Тип
boolean - По умолчанию:
false
Если зависимость является ESM-пакетом, Vitest попытается определить соответствующую CJS-версию, исходя из пути к файлу. Это может быть полезно, если зависимость имеет неправильный файл ESM.
Это может вызвать несоответствия, если пакет имеет разную логику в режимах ESM и CJS.
server.deps.cacheDir
- Тип
string - По умолчанию:
'node_modules/.vite'
Каталог для хранения файлов кэша.
deps
- Тип:
{ optimizer?, registerNodeLoader?, ... }
Управление разрешением зависимостей.
deps.optimizer
- Тип:
{ ssr?, web? } - Версия: С Vitest 0.34.0
- См. также: 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 - По умолчанию:
true, если используется >= Vite 4.3.2,falseв противном случае
Включить оптимизацию зависимостей.
WARNING
Эта возможность доступна только в Vite 4.3.2 и новее.
deps.web
- Тип:
{ transformAssets?, ... } - Версия: С Vite 0.34.2
Опции, которые используются для внешних файлов, когда режим преобразования установлен в web. По умолчанию jsdom и happy-dom используют режим web, в то время как среды node и edge используют режим преобразования ssr, поэтому эти опции не повлияют на файлы внутри этих сред.
Обычно файлы внутри node_modules externalized, но эти опции также влияют на файлы в server.deps.external.
deps.web.transformAssets
- Тип:
boolean - По умолчанию:
true
Следует ли Vitest обрабатывать файлы ресурсов (.png, .svg, .jpg и т. д.) и разрешать их так же, как это делает Vite в браузере.
Этот модуль будет иметь экспорт по умолчанию, равный пути к ресурсу, если не указан запрос.
WARNING
В настоящее время эта опция работает только с пулом experimentalVmThreads.
deps.web.transformCss
- Тип:
boolean - По умолчанию:
true
Следует ли Vitest обрабатывать CSS-файлы (.css, .scss, .sass и т. д.) и разрешать их так же, как это делает Vite в браузере.
Если файлы CSS отключены с помощью опций css, эта опция просто предотвратит ошибки ERR_UNKNOWN_FILE_EXTENSION.
WARNING
В настоящее время эта опция работает только с пулом experimentalVmThreads.
deps.web.transformGlobPattern
- Тип:
RegExp | RegExp[] - По умолчанию:
[]
Регулярное выражение для сопоставления внешних файлов, которые необходимо преобразовать.
По умолчанию файлы внутри node_modules externalized и не преобразуются, если это не CSS или ресурс, и соответствующая опция не отключена.
WARNING
В настоящее время эта опция работает только с пулом experimentalVmThreads.
deps.registerNodeLoader*
- Тип:
boolean - По умолчанию:
false
Использовать экспериментальный загрузчик Node для разрешения импортов в externalized файлах, применяя алгоритм разрешения Vite.
Если отключено, ваш alias и <plugin>.resolveId не повлияют на импорты внутри externalized пакетов (по умолчанию, node_modules).
deps.interopDefault
- Тип:
boolean - По умолчанию:
true
Интерпретировать default экспорт CJS-модуля как именованные экспорты. Некоторые зависимости поставляются только в формате CJS и не содержат именованных экспортов, которые Node.js может статически анализировать при использовании синтаксиса import вместо require. При импорте таких зависимостей в среде Node с использованием named exports вы увидите эту ошибку:
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 считает, что вы используете bundler, чтобы обойти это, и не завершится неудачей, но вы можете отключить это поведение вручную, если ваш код не обрабатывается.
deps.moduleDirectories
- Тип:
string[] - По умолчанию:
['node_modules']
Список каталогов, которые Vitest должен рассматривать как каталоги модулей. Эта опция конфигурации определяет поведение vi.mock: когда не предоставлена фабрика и путь того, что вы имитируете, соответствует одному из значений moduleDirectories, Vitest попытается разрешить mock, ища папку __mocks__ в root проекта.
Эта опция также повлияет на то, следует ли рассматривать файл как модуль при externalizing зависимостей. По умолчанию 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.
alias
- Тип:
Record<string, string> | Array<{ find: string | RegExp, replacement: string, customResolver?: ResolverFunction | ResolverObject }>
Определите пользовательские псевдонимы в процессе выполнения тестов. Они будут объединены с псевдонимами из resolve.alias.
globals
- Тип:
boolean - По умолчанию:
false - CLI:
--globals,--globals=false
По умолчанию vitest не предоставляет глобальные API, чтобы обеспечить явное указание зависимостей. Если вы предпочитаете использовать API глобально, как в Jest, вы можете передать опцию --globals в CLI или добавить globals: true в конфигурации.
// vite.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.
// vite.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 functions можно использовать среду 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 с флагом --threads=false тесты будут выполняться в следующем порядке сред: node, jsdom, happy-dom, edge-runtime, custom environments (пользовательские среды). Это означает, что тесты с одинаковой средой группируются вместе и выполняются последовательно.
Начиная с версии 0.23.0, можно определить пользовательскую среду. При использовании пользовательской среды Vitest попытается загрузить пакет vitest-environment-${name}. Этот пакет должен экспортировать объект типа Environment:
import type { Environment } from 'vitest';
export default <Environment>{
name: 'custom',
transformMode: 'ssr',
setup() {
// custom setup
return {
teardown() {
// called after all tests with this env have been run
},
};
},
};Vitest также предоставляет builtinEnvironments через точку входа vitest/environments, что позволяет расширять существующие среды. Подробнее о расширении сред можно прочитать в руководстве.
environmentOptions
- Тип:
Record<'jsdom' | string, unknown> - По умолчанию:
{}
Параметры, передаваемые в метод setup текущей среды. По умолчанию можно настроить только параметры JSDOM, если она используется в качестве тестовой среды.
environmentMatchGlobs
- Тип:
[string, EnvironmentName][] - По умолчанию:
[]
Автоматически назначает среду на основе glob-паттернов. Используется первое совпадение.
Пример:
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
- Тип:
[string, 'threads' | 'child_process' | 'experimentalVmThreads'][] - По умолчанию:
[] - Версия: С Vitest 0.29.4
Автоматически назначает пул для выполнения тестов на основе glob-паттернов. Используется первое совпадение.
Пример:
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 `--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
Обновляет файлы моментальных снимков (snapshots). Обновляет все измененные снимки и удаляет устаревшие.
watch*
- Тип:
boolean - По умолчанию:
true - CLI:
-w,--watch,--watch=false
Включает режим отслеживания изменений.
root
- Тип:
string - CLI:
-r <path>,--root=<path>
Корневой каталог проекта.
reporters*
- Тип:
Reporter | Reporter[] - По умолчанию:
'default' - CLI:
--reporter=<name>,--reporter=<name1> --reporter=<name2>
Пользовательские репортеры для вывода результатов. Репортеры могут быть экземпляром Reporter или строкой, указывающей на один из встроенных репортеров:
'default'- сворачивает успешно пройденные наборы тестов (suites)'basic'- предоставляет репортер, похожий на репортер по умолчанию в CI'verbose'- отображает полное дерево задач'dot'- отображает каждую задачу в виде точки'junit'- JUnit XML репортер (можно настроить имя тегаtestsuitesс помощью переменной окруженияVITEST_JUNIT_SUITE_NAMEи атрибутclassnameс помощьюVITEST_JUNIT_CLASSNAME)'json'- предоставляет простой JSON-отчет'html'- выводит HTML-отчет на основе@vitest/ui'hanging-process'- отображает список зависших процессов, если Vitest не может безопасно завершить процесс. Включайте только в том случае, если Vitest постоянно не может завершить процесс, так как это может быть ресурсоемкой операцией.- путь к пользовательскому репортеру (например,
'./path/to/reporter.ts','@scope/reporter')
outputFile*
- Тип:
string | Record<string, string> - CLI:
--outputFile=<path>,--outputFile.json=./path
Записывает результаты тестов в файл, если указана опция --reporter=json, --reporter=html или --reporter=junit. При использовании нескольких репортеров можно указать отдельные выходные файлы, предоставив объект вместо строки.
experimentalVmThreads
- Тип:
boolean - CLI:
--experimentalVmThreads,--experimental-vm-threads - Версия: С Vitest 0.34.0
Запускает тесты, используя VM context (внутри изолированной среды) в пуле worker-ов.
Это ускоряет тесты, но VM-модуль нестабилен при запуске ESM code. Ваши тесты могут leak memory (протекать память). Чтобы этого избежать, рассмотрите возможность ручного редактирования значения experimentalVmWorkerMemoryLimit.
WARNING
Запуск кода в песочнице имеет некоторые преимущества (более быстрые тесты), но также сопряжен с рядом недостатков.
- Глобальные переменные внутри нативных модулей, такие как (
fs,pathи т. д.), отличаются от глобальных переменных, присутствующих в вашей тестовой среде. В результате, любая ошибка, сгенерированная этими нативными модулями, будет ссылаться на другой конструктор Error, отличный от того, что используется в вашем коде:
try {
fs.writeFileSync('/doesnt exist');
} catch (err) {
console.log(err instanceof Error); // false
}- Импорт ES-модулей кэшируется на неопределенный срок, что приводит к утечкам памяти, если у вас много контекстов (тестовых файлов). В Node.js нет API, который очищает этот кеш.
- Доступ к глобальным переменным takes longer (занимает больше времени) в среде песочницы.
Пожалуйста, учитывайте эти проблемы при использовании этой опции. Команда Vitest не может исправить ни одну из этих проблем.
experimentalVmWorkerMemoryLimit
- Тип:
string | number - CLI:
--experimentalVmWorkerMemoryLimit,--experimental-vm-worker-memory-limit - По умолчанию:
1 / CPU Cores(1 / Количество доступных ядер CPU) - Версия: С Vitest 0.34.0
Указывает предел памяти для worker-потоков перед их перезапуском. Это значение сильно зависит от вашей среды, поэтому рекомендуется указать его вручную, а не полагаться на значение по умолчанию.
Эта опция влияет только на worker-потоки, которые запускают тесты в VM context.
TIP
Реализация основана на workerIdleMemoryLimit из Jest.
Предел можно указать несколькими способами, при этом Math.floor используется для преобразования значения в целое число:
<= 1- Значение интерпретируется как процент от системной памяти. Например, 0.5 устанавливает предел памяти worker-потока в половину от общего объема системной памяти.\> 1- Значение интерпретируется как фиксированное значение в байтах. Из-за предыдущего правила, если вам нужно значение в 1 байт (что маловероятно), вы можете использовать 1.1.С единицами измерения:
50%- Как и выше, процент от общего объема системной памяти100KB,65MBи т. д. - С единицами измерения для обозначения фиксированного предела памяти.K/KB- Килобайты (x1000)KiB- Кибибайты (x1024)M/MB- МегабайтыMiB- МебибайтыG/GB- ГигабайтыGiB- Гибибайты
WARNING
Ограничение памяти на основе процентов does not work on Linux CircleCI из-за неверного сообщения об объеме системной памяти.
threads
- Тип:
boolean - По умолчанию:
true - CLI:
--threads,--threads=false
Включает многопоточность с использованием tinypool (легковесный форк Piscina). До Vitest 0.29.0 Vitest все еще запускал тесты внутри worker thread, даже если эта опция была отключена. Начиная с 0.29.0, если эта опция отключена, Vitest использует child_process для создания процесса для запуска тестов, что означает, что вы можете использовать process.chdir и другие API, которые были недоступны внутри worker-потоков. Если вы хотите вернуться к предыдущему поведению, используйте опцию --single-thread вместо этого.
Отключение этой опции приводит к тому, что все тесты будут запускаться внутри нескольких дочерних процессов.
singleThread
- Тип:
boolean - По умолчанию:
false - Версия: С Vitest 0.29.0
Запускает все тесты с одинаковой средой в одном worker-потоке. Это отключает встроенную изоляцию модулей (ваш исходный код или inlined код все равно будет переоцениваться для каждого теста), но может повысить производительность тестов. До Vitest 0.29.0 это было эквивалентно использованию --no-threads.
WARNING
Несмотря на то, что эта опция заставит тесты выполняться один за другим, она отличается от --runInBand в Jest. Vitest использует worker-потоки не только для параллельного запуска тестов, но и для обеспечения изоляции. Отключая эту опцию, ваши тесты будут выполняться последовательно, но в одном и том же глобальном контексте, поэтому вы должны обеспечить изоляцию самостоятельно.
Это может вызвать различные проблемы, если вы полагаетесь на глобальное состояние (как это часто делают frontend-фреймворки) или если ваш код предполагает, что среда определяется отдельно для каждого теста. Но это может ускорить выполнение тестов (до 3 раз), если они не полагаются на глобальное состояние или могут легко обойтись без него.
maxThreads*
- Тип:
number - По умолчанию: количество доступных ядер CPU
Максимальное количество потоков. Также можно использовать переменную окружения VITEST_MAX_THREADS.
minThreads*
- Тип:
number - По умолчанию: количество доступных ядер CPU
Минимальное количество потоков. Также можно использовать переменную окружения VITEST_MIN_THREADS.
useAtomics*
- Тип:
boolean - По умолчанию:
false - Версия: С Vitest 0.28.3
Использовать Atomics для синхронизации потоков.
Это может повысить производительность в некоторых случаях, но может вызвать segfault в старых версиях Node.
testTimeout
- Тип:
number - По умолчанию:
5000 - CLI:
--test-timeout=5000
Таймаут теста по умолчанию в миллисекундах.
hookTimeout
- Тип:
number - По умолчанию:
10000
Таймаут хука по умолчанию в миллисекундах.
teardownTimeout*
- Тип:
number - По умолчанию:
10000
Таймаут по умолчанию для ожидания завершения работы Vitest в миллисекундах.
silent*
- Тип:
boolean - По умолчанию:
false - CLI:
--silent,--silent=false
Отключает вывод в консоль из тестов.
setupFiles
- Тип:
string | string[]
Путь к файлам настройки. Они будут запущены перед каждым тестовым файлом.
INFO
Изменение файлов настройки приведет к перезапуску всех тестов.
Вы можете использовать process.env.VITEST_POOL_ID (строка, представляющая собой целое число) внутри файлов настройки, чтобы различать потоки (всегда будет '1', если запущено с threads: false).
TIP
Обратите внимание, что если вы запускаете тесты с опцией --threads=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 (example).
INFO
Можно использовать несколько глобальных файлов настройки. Функции setup и teardown выполняются последовательно, а teardown - в обратном порядке.
WARNING
Имейте в виду, что глобальная настройка выполняется в другой глобальной области видимости, поэтому ваши тесты не имеют доступа к переменным, определенным здесь.
watchExclude*
- Тип:
string[] - По умолчанию:
['**/node_modules/**', '**/dist/**']
Glob-паттерн путей к файлам, которые будут исключены из отслеживания изменений (watch rerun).
forceRerunTriggers*
- Тип:
string[] - По умолчанию:
['**/package.json/**', '**/vitest.config.*/**', '**/vite.config.*/**']
Glob-паттерн путей к файлам, изменение которых приведет к перезапуску всего набора тестов. В сочетании с аргументом --changed, весь набор тестов будет запущен, если триггер будет найден в git diff.
Полезно, если вы тестируете вызов команд CLI, потому что Vite не может построить граф модулей:
test('execute a script', async () => {
// Vitest cannot rerun this test, if content of `dist/index.js` changes
await execa('node', ['dist/index.js']);
});TIP
Убедитесь, что ваши файлы не исключены из watchExclude.
isolate
- Тип:
boolean - По умолчанию:
true - CLI:
--isolate,--isolate=false
Изолирует окружение для каждого тестового файла. Не работает, если отключена опция --threads.
Эта опция не влияет на experimentalVmThreads.
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'] - Доступно для провайдеров:
'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}.?(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-шаблонов.
coverage.all
- Тип:
boolean - По умолчанию:
false - Доступно для провайдеров:
'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
Очищает отчет о покрытии при повторном запуске тестов в режиме наблюдения (watch mode).
coverage.reportsDirectory
- Тип:
string - По умолчанию:
'./coverage' - Доступно для провайдеров:
'v8' | 'istanbul' - CLI:
--coverage.reportsDirectory=<path>
Директория, в которую записываются отчеты о покрытии.
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 0.31.0, вы можете просматривать отчет о покрытии кода в Vitest UI. Подробнее см. Vitest UI Coverage.
coverage.reportOnFailure
- Тип:
boolean - По умолчанию:
false(начиная с Vitest0.34.0) - Доступно для провайдеров:
'v8' | 'istanbul' - CLI:
--coverage.reportOnFailure,--coverage.reportOnFailure=false - Версия: Начиная с Vitest 0.31.2
Генерирует отчет о покрытии, даже если тесты завершились с ошибками.
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.perFile
- Тип:
boolean - По умолчанию:
false - Доступно для провайдеров:
'v8' | 'istanbul' - CLI:
--coverage.perFile,--coverage.perFile=false
Проверяет пороговые значения покрытия для каждого файла отдельно. Фактические пороговые значения задаются опциями lines (строки), functions (функции), branches (ветви) и statements (операторы).
coverage.thresholdAutoUpdate
- Тип:
boolean - По умолчанию:
false - Доступно для провайдеров:
'v8' | 'istanbul' - CLI:
--coverage.thresholdAutoUpdate=<boolean>
Автоматически обновляет пороговые значения lines (строки), functions (функции), branches (ветви) и statements (операторы) в файле конфигурации, если текущее покрытие превышает установленные пороговые значения. Эта опция помогает поддерживать актуальность пороговых значений при улучшении покрытия кода.
coverage.lines
- Тип:
number - Доступно для провайдеров:
'v8' | 'istanbul' - CLI:
--coverage.lines=<number>
Пороговое значение для покрытия строк кода (в процентах). Подробнее см. документацию istanbul.
coverage.functions
- Тип:
number - Доступно для провайдеров:
'v8' | 'istanbul' - CLI:
--coverage.functions=<number>
Пороговое значение для покрытия функций (в процентах). Подробнее см. документацию istanbul.
coverage.branches
- Тип:
number - Доступно для провайдеров:
'v8' | 'istanbul' - CLI:
--coverage.branches=<number>
Пороговое значение для покрытия ветвей (в процентах). Подробнее см. документацию istanbul.
coverage.statements
- Тип:
number - Доступно для провайдеров:
'v8' | 'istanbul' - CLI:
--coverage.statements=<number>
Пороговое значение для покрытия операторов (в процентах). Подробнее см. документацию istanbul.
coverage.100
- Тип:
boolean - По умолчанию:
false - Доступно для провайдеров:
'v8' | 'istanbul' - CLI:
--coverage.100,--coverage.100=false
Сокращение для --coverage.lines 100 --coverage.functions 100 --coverage.branches 100 --coverage.statements 100.
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'
Водяные знаки (watermarks) для строк, ветвей, операторов и функций. Используются для визуализации уровней покрытия. Подробнее см. документацию istanbul.
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 - По умолчанию:
false - CLI:
--open,--open=false
Открывает Vitest UI (находится в разработке).
api
- Тип:
boolean | number - По умолчанию:
false - CLI:
--api,--api.port,--api.host,--api.strictPort
Запускает сервер API на указанном порту. Если установлено значение true, используется порт по умолчанию 51204.
browser
- Тип:
{ enabled?, name?, provider?, headless?, api?, slowHijackESM? } - По умолчанию:
{ enabled: false, headless: process.env.CI, api: 63315 } - Версия: Начиная с Vitest 0.29.4
- CLI:
--browser,--browser=<name>,--browser.name=chrome --browser.headless
Запускает тесты Vitest в веб-браузере. По умолчанию используется WebdriverIO для запуска тестов, но это можно изменить с помощью опции browser.provider.
NOTE
Подробнее о тестировании в реальном браузере читайте на странице руководства.
WARNING
Это экспериментальная функция. Возможны несовместимые изменения, не соответствующие правилам semver. Рекомендуется зафиксировать версию Vitest при использовании этой функции.
browser.enabled
- Тип:
boolean - По умолчанию:
false - CLI:
--browser,--browser.enabled=false
Включает запуск всех тестов в браузере по умолчанию. Может быть переопределено с помощью опции poolMatchGlobs.
browser.name
- Тип:
string - CLI:
--browser=safari
Запускает все тесты в указанном браузере. Доступные значения зависят от используемого провайдера:
webdriverio:firefox,chrome,edge,safariplaywright:firefox,webkit,chromium- custom: любая строка, передаваемая пользовательскому провайдеру
browser.headless
- Тип:
boolean - По умолчанию:
process.env.CI - CLI:
--browser.headless,--brower.headless=false
Запускает браузер в "безголовом" режиме (headless mode). Если Vitest запускается в CI (Continuous Integration - системе непрерывной интеграции), эта опция включена по умолчанию.
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 и иметь следующую структуру:
export interface BrowserProvider {
name: string;
getSupportedBrowsers(): readonly string[];
initialize(ctx: Vitest, options: { browser: string }): Awaitable<void>;
openPage(url: string): Awaitable<void>;
close(): Awaitable<void>;
}WARNING
Это расширенный API, предназначенный для авторов библиотек. Если вам нужно просто запустить тесты в браузере, используйте опцию browser.
browser.slowHijackESM
- Тип:
boolean - По умолчанию:
true - Версия: С Vitest 0.31.0
При запуске тестов в Node.js Vitest может использовать собственное разрешение модулей, чтобы упростить имитацию модулей с помощью синтаксиса vi.mock. Однако, эмуляция разрешения ES-модулей в браузере является сложной задачей, поэтому требуется преобразование исходных файлов перед их использованием в браузере.
Эта опция не влияет на тесты, выполняемые в Node.js.
Опция включена по умолчанию при запуске в браузере. Если вы не используете vi.spyOn для перехвата ES-модулей и не используете vi.mock, вы можете отключить её для небольшого повышения производительности.
clearMocks
- Тип:
boolean - По умолчанию:
false
Вызовет .mockClear() для всех шпионов перед каждым тестом. Это очистит историю mock-объектов, но не сбросит их реализацию к исходному значению.
mockReset
- Тип:
boolean - По умолчанию:
false
Вызовет .mockReset() для всех шпионов перед каждым тестом. Это очистит историю mock-объектов и сбросит их реализацию к пустой функции, которая будет возвращать undefined.
restoreMocks
- Тип:
boolean - По умолчанию:
false
Вызовет .mockRestore() для всех шпионов перед каждым тестом. Это очистит историю mock-объектов и сбросит их реализацию к исходной реализации.
unstubEnvs
- Тип:
boolean - По умолчанию:
false - Версия: С Vitest 0.26.0
Вызовет vi.unstubAllEnvs перед каждым тестом.
unstubGlobals
- Тип:
boolean - По умолчанию:
false - Версия: С Vitest 0.26.0
Вызовет vi.unstubAllGlobals перед каждым тестом.
testTransformMode
- Тип:
{ web?, ssr? } - Версия: С Vitest 0.34.0
Определяет метод преобразования для модулей, импортируемых в тестах и соответствующих glob-шаблону. По умолчанию, зависит от окружения. Например, тесты с окружением JSDOM будут обрабатывать все файлы с флагом ssr: false, а тесты с окружением Node будут обрабатывать все модули с ssr: true.
testTransformMode.ssr
- Тип:
string[] - По умолчанию:
[]
Использовать конвейер SSR-преобразования (Server-Side Rendering) для модулей, соответствующих указанным шаблонам.
Vite плагины будут получать флаг ssr: true при обработке этих файлов.
testTransformMode.web
- Тип:
string[] - По умолчанию:
[]
Сначала выполнить стандартное преобразование (для браузера), затем SSR-перезапись для запуска кода в Node.
Vite плагины будут получать флаг ssr: false при обработке этих файлов.
snapshotFormat*
- Тип:
PrettyFormatOptions
Параметры форматирования для тестирования снимками (snapshots). Эти параметры передаются в pretty-format.
resolveSnapshotPath*
- Тип:
(testPath: string, snapExtension: string) => string - По умолчанию: сохраняет файлы snapshot в директории
__snapshots__
Переопределяет путь к файлу snapshot по умолчанию. Например, чтобы хранить snapshot рядом с файлами тестов:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
resolveSnapshotPath: (testPath, snapExtension) => testPath + snapExtension,
},
});allowOnly
- Тип:
boolean - По умолчанию:
false - 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 будут возвращать proxy-объект, чтобы не влиять на runtime.
css.include
- Тип:
RegExp | RegExp[] - По умолчанию:
[]
RegExp шаблон для файлов, которые должны возвращать фактический CSS и будут обработаны конвейером Vite.
TIP
Чтобы обработать все CSS файлы, используйте /.+/.
css.exclude
- Тип:
RegExp | RegExp[] - По умолчанию:
[]
RegExp шаблон для файлов, которые будут возвращать пустой CSS файл.
css.modules
- Тип:
{ classNameStrategy? } - По умолчанию:
{}
css.modules.classNameStrategy
- Тип:
'stable' | 'scoped' | 'non-scoped' - По умолчанию:
'stable'
При обработке CSS-файлов можно настроить, должны ли быть имена классов в CSS Modules ограничены областью видимости (scoped). Вы можете выбрать один из вариантов:
stable: имена классов будут сгенерированы как_${name}_${hashedFilename}, что означает, что сгенерированный класс останется прежним, если содержимое CSS изменится, но изменится, если имя файла будет изменено или файл будет перемещен в другую папку. Этот параметр полезен, если вы используете функцию создания снимков.scoped: имена классов будут сгенерированы как обычно, с учетом методаcss.modules.generateScopeName, если он у вас есть и обработка CSS включена. По умолчанию, filename будет сгенерирован как_${name}_${hash}, где hash включает filename и содержимое файла.non-scoped: имена классов не будут хешированы.
WARNING
По умолчанию, Vitest экспортирует proxy-объект, обходя обработку CSS Modules. Если вы полагаетесь на CSS свойства в ваших классах, вы должны включить обработку CSS, используя опцию include.
maxConcurrency
- Тип:
number - По умолчанию:
5
Максимальное количество тестов, которые могут выполняться одновременно, отмеченных как test.concurrent (параллельные тесты).
Тесты, превышающие этот лимит, будут поставлены в очередь для запуска, когда появится доступный слот.
cache*
- Тип:
false | { dir? }
Опции для настройки политики кэширования Vitest. В данный момент Vitest хранит кэш для результатов тестов, чтобы сначала запускать более длительные и неудачные тесты.
cache.dir
- Тип:
string - По умолчанию:
node_modules/.vitest
Путь к директории кэша.
sequence
- Тип:
{ sequencer?, shuffle?, seed?, hooks?, setupFiles? }
Опции для определения порядка выполнения тестов.
Вы можете предоставить опции sequence в CLI с помощью точечной нотации:
npx vitest --sequence.shuffle --sequence.seed=1000sequence.sequencer*
- Тип:
TestSequencerConstructor - По умолчанию:
BaseSequencer
Пользовательский класс, определяющий методы для шардинга и сортировки. Вы можете расширить BaseSequencer из vitest/node, если вам нужно только переопределить один из методов sort и shard, но оба должны существовать.
Шардинг происходит перед сортировкой, и только если предоставлена опция --shard.
sequence.shuffle
- Тип:
boolean - По умолчанию:
false - CLI:
--sequence.shuffle,--sequence.shuffle=false
Если вы хотите, чтобы тесты запускались в случайном порядке, вы можете включить это с помощью этой опции или аргумента CLI --sequence.shuffle.
Выполнение тестов в случайном порядке снижает производительность из-за потери оптимизации кэширования, но может помочь в обнаружении тестов, случайно зависящих от предыдущих запусков.
sequence.concurrent
- Тип:
boolean - По умолчанию:
false - CLI:
--sequence.concurrent,--sequence.concurrent=false - Версия: С Vitest 0.32.2
Если вы хотите, чтобы тесты запускались параллельно, вы можете включить это с помощью этой опции или аргумента CLI --sequence.concurrent.
sequence.seed*
- Тип:
number - По умолчанию:
Date.now() - CLI:
--sequence.seed=1000
Устанавливает начальное значение (seed) для рандомизации, если тесты выполняются в случайном порядке.
sequence.hooks
- Тип:
'stack' | 'list' | 'parallel' - По умолчанию:
'parallel' - CLI:
--sequence.hooks=<value>
Изменяет порядок выполнения хуков тестов.
stackупорядочит хуки "after" в обратном порядке, хуки "before" будут выполняться в том порядке, в котором они были определеныlistупорядочит все хуки в том порядке, в котором они определеныparallelбудет запускать хуки в одной группе параллельно (хуки в родительских наборах тестов по-прежнему будут выполняться перед хуками текущего набора)
sequence.setupFiles
- Тип:
'list' | 'parallel' - По умолчанию:
'parallel' - CLI:
--sequence.setupFiles=<value> - Версия: С Vitest 0.29.3
Изменяет порядок выполнения файлов настройки.
listбудет запускать файлы настройки в том порядке, в котором они определеныparallelбудет запускать файлы настройки параллельно
typecheck
Опции для настройки тестового окружения typechecking.
typecheck.checker
- Тип:
'tsc' | 'vue-tsc' | string - По умолчанию:
tsc
Какие инструменты использовать для проверки типов. Vitest запустит процесс с определенными параметрами для облегчения разбора, в зависимости от типа. Проверщик типов должен реализовывать тот же формат вывода, что и tsc.
Вам необходимо установить пакет, чтобы использовать typechecker:
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
Порог для медленных тестов (время в миллисекундах, после которого тест считается медленным и сообщается об этом в результатах).
chaiConfig
- Тип:
{ includeStack?, showDiff?, truncateThreshold? } - По умолчанию:
{ includeStack: false, showDiff: true, truncateThreshold: 40 } - Версия: С Vitest 0.30.0
Эквивалентно Chai config.
chaiConfig.includeStack
- Тип:
boolean - По умолчанию:
false
Влияет на то, включен ли stack trace в сообщение об ошибке Assertion. Значение по умолчанию false подавляет stack trace в сообщении об ошибке.
chaiConfig.showDiff
- Тип:
boolean - По умолчанию:
true
Влияет на то, должен ли флаг showDiff быть включен в выбрасываемые AssertionErrors. false всегда будет false; true будет true, когда проверка запросила отображение diff.
chaiConfig.truncateThreshold
- Тип:
number - По умолчанию:
40
Порог усечения (устанавливает максимальную длину для фактических и ожидаемых значений в ошибках проверок). Если этот порог превышен, например, для больших структур данных, значение заменяется чем-то вроде [ Array(3) ] или { Object (prop1, prop2) }. Установите его в 0, если вы хотите полностью отключить усечение.
Эта опция конфигурации влияет на усечение значений в заголовках параметризованных тестов (test.each) и внутри сообщения об ошибке проверки.
bail
- Тип:
number - По умолчанию:
0 - CLI:
--bail=<value> - Версия: С Vitest 0.31.0
Остановить выполнение тестов, когда заданное количество тестов завершилось с ошибкой (досрочное завершение).
По умолчанию Vitest будет запускать все ваши тестовые случаи, даже если некоторые из них завершатся с ошибкой. Это может быть нежелательно для CI сборок, где вы заинтересованы только в 100% успешных сборках и хотели бы остановить выполнение тестов как можно раньше, когда происходят сбои тестов. Опция bail позволяет ускорить CI-запуски, предотвращая выполнение дополнительных тестов после возникновения сбоев.
retry
- Тип:
number - По умолчанию:
0 - CLI:
--retry=<value> - Версия: С Vitest 0.32.3
Повторить тест указанное количество раз в случае неудачи (количество повторных попыток).
onConsoleLog
- Тип:
(log: string, type: 'stdout' | 'stderr') => false | void
Пользовательский обработчик для console.log в тестах. Если вы вернете false, Vitest не будет выводить лог в консоль.
Может быть полезно для фильтрации логов от сторонних библиотек.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
onConsoleLog(log: string, type: 'stdout' | 'stderr'): boolean | void {
if (log === 'message from third party library' && type === 'stdout')
return false;
},
},
});diff
- Тип:
string - CLI:
--diff=<value> - Версия: С Vitest 0.34.5
Путь к файлу конфигурации 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',
},
});