Skip to content
Vitest 1
Main Navigation РуководствоAPIКонфигурацияПродвинутый
3.2.0
2.1.9
1.6.1
0.34.6

Русский

English
简体中文
繁體中文
Español
Français
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Русский

English
简体中文
繁體中文
Español
Français
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Внешний вид

Sidebar Navigation

Настройка конфигурационного файла Vitest

Настройка Vitest

Содержание страницы

Настройка Vitest ​

Чтобы создать файл конфигурации Vitest, следуйте инструкциям. Прежде чем продолжить, убедитесь, что вы понимаете, как работает разрешение конфигурации Vitest.

WARNING

Все перечисленные здесь параметры находятся в свойстве test внутри конфигурации:

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

TIP

В дополнение к следующим параметрам, вы также можете использовать любой параметр конфигурации из Vite. Например, define для определения глобальных переменных или resolve.alias для определения псевдонимов.

Все параметры конфигурации, которые не поддерживаются внутри конфигурации рабочей области, отмечены значком *.

include ​

  • Тип: string[]
  • По умолчанию: ['**/*.{test,spec}.?(c|m)[jt]s?(x)']
  • CLI: vitest [...include], vitest **/*.test.js

Список 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 в браузере.

Этот модуль будет иметь экспорт по умолчанию, равный пути к ресурсу, если не указан запрос.

WARNING

На данный момент эта опция работает только с пулами vmThreads и vmForks.

deps.web.transformCss ​

  • Тип: boolean
  • По умолчанию: true

Должен ли Vitest обрабатывать файлы CSS (.css, .scss, .sass и т. д.) и разрешать их, как это делает Vite в браузере.

Если файлы CSS отключены с помощью опций css, эта опция просто заглушит ошибки ERR_UNKNOWN_FILE_EXTENSION.

WARNING

На данный момент эта опция работает только с пулами vmThreads и vmForks.

deps.web.transformGlobPattern ​

  • Тип: RegExp | RegExp[]
  • По умолчанию: []

Шаблон регулярного выражения для сопоставления внешних файлов, которые должны быть преобразованы.

По умолчанию файлы внутри node_modules являются externalized и не преобразуются, если это не CSS или ресурс, и соответствующая опция не отключена.

WARNING

На данный момент эта опция работает только с пулами vmThreads и vmForks.

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, включите его вместе с любыми другими параметрами:

ts
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 позже.

Например:

sh
# save main branch's result
git checkout main
vitest bench --outputJson main.json

# change a branch and compare against main
git checkout feature
vitest bench --compare main.json

benchmark.compare 1.6.0+ ​

  • Тип: string | undefined
  • По умолчанию: undefined

Путь к файлу предыдущего результата benchmark для сравнения с текущими запусками.

alias ​

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

Определите пользовательские псевдонимы при запуске внутри тестов. Они будут объединены с псевдонимами из resolve.alias.

WARNING

Vitest использует примитивы Vite SSR для запуска тестов, которые имеют определенные недостатки.

  1. Псевдонимы влияют только на модули, импортированные непосредственно с помощью ключевого слова import встроенным модулем (весь исходный код встроен по умолчанию).
  2. Vitest не поддерживает псевдонимы для вызовов require.
  3. Если вы создаете псевдоним для внешней зависимости (например, react -> preact), рассмотрите возможность создания псевдонима для фактических пакетов в node_modules, чтобы обеспечить корректную работу с externalized зависимостями. И Yarn, и pnpm поддерживают создание псевдонимов через префикс npm:.

globals ​

  • Тип: boolean
  • По умолчанию: false
  • CLI: --globals, --globals=false

По умолчанию vitest не предоставляет глобальные API для большей явности. Если вы предпочитаете использовать API глобально, как Jest, вы можете передать опцию --globals в CLI или добавить globals: true в конфигурацию.

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

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

Чтобы TypeScript работал с глобальными API, добавьте vitest/globals в поле types в вашем tsconfig.json.

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

Если вы уже используете unplugin-auto-import в своем проекте, вы также можете использовать его напрямую для автоматического импорта этих API.

ts
// vitest.config.ts
import { defineConfig } from 'vitest/config';
import AutoImport from 'unplugin-auto-import/vite';

export default defineConfig({
  plugins: [
    AutoImport({
      imports: ['vitest'],
      dts: true, // generate TypeScript declaration
    }),
  ],
});

environment ​

  • Тип: 'node' | 'jsdom' | 'happy-dom' | 'edge-runtime' | string
  • По умолчанию: 'node'
  • CLI: --environment=<env>

Окружение, используемое для выполнения тестов. По умолчанию Vitest использует окружение Node.js. Для тестирования веб-приложений можно использовать окружения, имитирующие браузер, например, jsdom или happy-dom. Для тестирования edge-функций можно использовать окружение edge-runtime.

Вы можете указать другое окружение для всех тестов в файле, добавив docblock-комментарий @vitest-environment или обычный комментарий в начало файла:

Docblock стиль:

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

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

Стиль комментария:

js
// @vitest-environment happy-dom

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

Для совместимости с Jest также поддерживается @jest-environment:

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

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

При запуске Vitest с флагом --isolate=false тесты будут выполняться в следующем порядке: node, jsdom, happy-dom, edge-runtime, custom environments (пользовательские окружения). Это означает, что тесты с одинаковым окружением группируются и выполняются последовательно.

Начиная с версии 0.23.0, можно определять пользовательские окружения (custom environment). При использовании пользовательского окружения Vitest попытается загрузить пакет vitest-environment-${name}. Этот пакет должен экспортировать объект типа Environment:

ts
import type { Environment } from 'vitest';

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

Vitest также предоставляет builtinEnvironments через точку входа vitest/environments, если вы хотите расширить существующие окружения. Подробнее о расширении окружений можно прочитать в нашем руководстве.

TIP

Начиная с Vitest 1.3.0, окружение jsdom предоставляет глобальную переменную jsdom, равную текущему экземпляру JSDOM. Чтобы TypeScript распознавал ее, добавьте vitest/jsdom в свой tsconfig.json при использовании этого окружения:

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

environmentOptions ​

  • Тип: Record<'jsdom' | string, unknown>
  • По умолчанию: {}

Параметры, передаваемые в метод setup текущего environment. По умолчанию можно настраивать только параметры JSDOM, если он используется в качестве тестового окружения.

environmentMatchGlobs ​

  • Тип: [string, EnvironmentName][]
  • По умолчанию: []

Автоматическое назначение окружения на основе glob-паттернов. Используется первое совпадение.

Пример:

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

export default defineConfig({
  test: {
    environmentMatchGlobs: [
      // все тесты в tests/dom будут запущены в jsdom
      ['tests/dom/**', 'jsdom'],
      // все тесты в tests/ с .edge.test.ts будут запущены в edge-runtime
      ['**/*.edge.test.ts', 'edge-runtime'],
      // ...
    ],
  },
});

poolMatchGlobs 0.29.4+ ​

  • Тип: [string, 'threads' | 'forks' | 'vmThreads' | 'vmForks' | 'typescript'][]
  • По умолчанию: []

Автоматическое назначение пула для выполнения тестов на основе glob-паттернов. Используется первое совпадение.

Пример:

ts
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 по сравнению с тем, который используется в вашем коде:
ts
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.

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

export default defineConfig({
  test: {
    poolOptions: {
      threads: {
        // Threads related options here
      },
    },
  },
});
poolOptions.threads.maxThreads* ​
  • Тип: number
  • По умолчанию: доступное количество CPU

Максимальное количество потоков. Вы также можете использовать переменную окружения VITEST_MAX_THREADS.

poolOptions.threads.minThreads* ​
  • Тип: number
  • По умолчанию: доступное количество CPU

Минимальное количество потоков. Вы также можете использовать переменную окружения VITEST_MIN_THREADS.

poolOptions.threads.singleThread ​
  • Тип: boolean
  • По умолчанию: false

Запуск всех тестов с одинаковым окружением в одном рабочем потоке. Это отключит встроенную изоляцию модулей (ваш исходный код или встроенный код все равно будет переоцениваться для каждого теста), но может повысить производительность тестов.

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.

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

export default defineConfig({
  test: {
    poolOptions: {
      forks: {
        // Forks related options here
      },
    },
  },
});
poolOptions.forks.maxForks* ​
  • Тип: number
  • По умолчанию: доступное количество CPU

Максимальное количество форков.

poolOptions.forks.minForks* ​
  • Тип: number
  • По умолчанию: доступное количество CPU

Минимальное количество форков.

poolOptions.forks.isolate ​
  • Тип: boolean
  • По умолчанию: true

Изолировать окружение для каждого файла теста.

poolOptions.forks.singleFork ​
  • Тип: boolean
  • По умолчанию: false

Запуск всех тестов с одинаковым окружением в одном дочернем процессе. Это отключит встроенную изоляцию модулей (ваш исходный код или встроенный код все равно будет переоцениваться для каждого теста), но может повысить производительность тестов.

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.

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

export default defineConfig({
  test: {
    poolOptions: {
      vmThreads: {
        // VM threads related options here
      },
    },
  },
});
poolOptions.vmThreads.maxThreads* ​
  • Тип: number
  • По умолчанию: доступное количество CPU

Максимальное количество потоков. Вы также можете использовать переменную окружения VITEST_MAX_THREADS.

poolOptions.vmThreads.minThreads* ​
  • Тип: number
  • По умолчанию: доступное количество CPU

Минимальное количество потоков. Вы также можете использовать переменную окружения VITEST_MIN_THREADS.

poolOptions.vmThreads.memoryLimit* ​
  • Тип: string | number
  • По умолчанию: 1 / CPU 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.

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

export default defineConfig({
  test: {
    poolOptions: {
      vmForks: {
        // VM forks related options here
      },
    },
  },
});
poolOptions.vmForks.maxForks* ​
  • Тип: number
  • По умолчанию: доступное количество CPU

Максимальное количество потоков. Вы также можете использовать переменную окружения VITEST_MAX_FORKS.

poolOptions.vmForks.minForks* ​
  • Тип: number
  • По умолчанию: доступное количество CPU

Минимальное количество потоков. Вы также можете использовать переменную окружения VITEST_MIN_FORKS.

poolOptions.vmForks.memoryLimit* ​
  • Тип: string | number
  • По умолчанию: 1 / CPU 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, этот файл настройки будет запущен в той же глобальной области видимости несколько раз. Это означает, что перед каждым тестом вы будете получать доступ к одному и тому же глобальному объекту, поэтому убедитесь, что вы не выполняете одни и те же действия несколько раз.

Пример:

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

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

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

// Вы также можете расширить тип `ProvidedContext`,
// чтобы иметь типобезопасный доступ к методам `provide/inject`:
declare module 'vitest' {
  export interface ProvidedContext {
    wsPort: number;
  }
}
ts
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 не может построить граф модулей:

ts
test('execute a script', async () => {
  // Vitest не может перезапустить этот тест, если содержимое `dist/index.js` изменится
  await execa('node', ['dist/index.js']);
});

TIP

Убедитесь, что ваши файлы не исключены с помощью watchExclude.

coverage* ​

Вы можете использовать v8, istanbul или пользовательское решение для покрытия для сбора информации о покрытии кода тестами.

Вы можете передать параметры покрытия в CLI с помощью точечной нотации:

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

WARNING

Если вы используете параметры покрытия с точечной нотацией, не забудьте указать --coverage.enabled. Не используйте один параметр --coverage в этом случае.

coverage.provider ​

  • Тип: '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[]
  • По умолчанию:
js
[
  'coverage/**',
  'dist/**',
  '**/[.]**',
  'packages/*/test?(s)/**',
  '**/*.d.ts',
  '**/virtual:*',
  '**/__x00__*',
  '**/\x00*',
  'cypress/**',
  'test?(s)/**',
  'test?(-*).?(c|m)[jt]s?(x)',
  '**/*{.,-}{test,spec}?(-d).?(c|m)[jt]s?(x)',
  '**/__tests__/**',
  '**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*',
  '**/vitest.{workspace,projects}.[jt]s?(on)',
  '**/.{eslint,mocha,prettier}rc.{?(c|m)js,yml}',
];
  • Доступно для провайдеров: 'v8' | 'istanbul'
  • CLI: --coverage.exclude=<path>, --coverage.exclude=<path1> --coverage.exclude=<path2>

Список файлов, которые должны быть исключены из отчета о покрытии, в виде glob-паттернов.

Этот параметр переопределяет все параметры по умолчанию. Расширьте параметры по умолчанию при добавлении новых шаблонов для игнорирования:

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

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

coverage.all ​

  • Тип: boolean
  • По умолчанию: true (начиная с Vitest 1.0.0)
  • Доступно для провайдеров: 'v8' | 'istanbul'
  • CLI: --coverage.all, --coverage.all=false

Включать ли все файлы, включая непроверенные, в отчет о покрытии.

coverage.clean ​

  • Тип: boolean
  • По умолчанию: true
  • Доступно для провайдеров: 'v8' | 'istanbul'
  • CLI: --coverage.clean, --coverage.clean=false

Очищать ли результаты предыдущего покрытия перед запуском тестов.

coverage.cleanOnRerun ​

  • Тип: boolean
  • По умолчанию: true
  • Доступно для провайдеров: 'v8' | 'istanbul'
  • CLI: --coverage.cleanOnRerun, --coverage.cleanOnRerun=false

Очищать ли отчет о покрытии при повторном запуске тестов в режиме наблюдения.

coverage.reportsDirectory ​

  • Тип: string
  • По умолчанию: './coverage'
  • Доступно для провайдеров: 'v8' | 'istanbul'
  • CLI: --coverage.reportsDirectory=<path>

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, вы также можете передавать пользовательские репортеры покрытия. См. Руководство - Пользовательский репортер покрытия для получения дополнительной информации.

ts
{
  reporter: [
    // Specify reporter using name of the NPM package
    '@vitest/custom-coverage-reporter',
    ['@vitest/custom-coverage-reporter', { someOption: true }],

    // Specify reporter using local path
    '/absolute/path/to/custom-reporter.cjs',
    ['/absolute/path/to/custom-reporter.cjs', { someOption: true }],
  ];
}

Начиная с Vitest 0.31.0, вы можете просмотреть отчет о покрытии в Vitest UI: см. Vitest UI Coverage для получения более подробной информации.

coverage.reportOnFailure 0.31.2+ ​

  • Тип: boolean
  • По умолчанию: false (начиная с Vitest 0.34.0)
  • Доступно для провайдеров: 'v8' | 'istanbul'
  • CLI: --coverage.reportOnFailure, --coverage.reportOnFailure=false

Создавать отчет о покрытии, даже если тесты завершились с ошибками.

coverage.allowExternal ​

  • Тип: boolean
  • По умолчанию: false
  • Доступно для провайдеров: 'v8' | 'istanbul'
  • CLI: --coverage.allowExternal, --coverage.allowExternal=false

Собирать покрытие для файлов, находящихся вне корня проекта (root).

coverage.skipFull ​

  • Тип: boolean
  • По умолчанию: false
  • Доступно для провайдеров: 'v8' | 'istanbul'
  • CLI: --coverage.skipFull, --coverage.skipFull=false

Не показывать файлы со 100% покрытием операторов, ветвей и функций.

coverage.thresholds ​

Настройки порогов покрытия.

coverage.thresholds.lines ​
  • Тип: number
  • Доступно для провайдеров: 'v8' | 'istanbul'
  • CLI: --coverage.thresholds.lines=<number>

Глобальный порог для покрытия строк кода. См. документацию istanbul для получения дополнительной информации.

coverage.thresholds.functions ​
  • Тип: number
  • Доступно для провайдеров: 'v8' | 'istanbul'
  • CLI: --coverage.thresholds.functions=<number>

Глобальный порог для покрытия функций. См. документацию istanbul для получения дополнительной информации.

coverage.thresholds.branches ​
  • Тип: number
  • Доступно для провайдеров: 'v8' | 'istanbul'
  • CLI: --coverage.thresholds.branches=<number>

Глобальный порог для покрытия ветвей кода. См. документацию istanbul для получения дополнительной информации.

coverage.thresholds.statements ​
  • Тип: number
  • Доступно для провайдеров: 'v8' | 'istanbul'
  • CLI: --coverage.thresholds.statements=<number>

Глобальный порог для покрытия операторов кода. См. документацию istanbul для получения дополнительной информации.

coverage.thresholds.perFile ​
  • Тип: boolean
  • По умолчанию: false
  • Доступно для провайдеров: 'v8' | 'istanbul'
  • CLI: --coverage.thresholds.perFile, --coverage.thresholds.perFile=false

Проверять пороги покрытия для каждого файла отдельно.

coverage.thresholds.autoUpdate ​
  • Тип: boolean
  • По умолчанию: false
  • Доступно для провайдеров: 'v8' | 'istanbul'
  • CLI: --coverage.thresholds.autoUpdate=<boolean>

Автоматически обновлять значения порогов 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-паттерну.

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

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

export default defineConfig({
  esbuild: {
    // Transpile all files with ESBuild to remove comments from code coverage.
    // Required for `test.coverage.ignoreEmptyLines` to work:
    include: ['**/*.js', '**/*.jsx', '**/*.mjs', '**/*.ts', '**/*.tsx'],
  },
  test: {
    coverage: {
      provider: 'v8',
      ignoreEmptyLines: true,
    },
  },
});

coverage.ignoreClassMethods ​

  • Тип: string[]
  • По умолчанию: []
  • Доступно для провайдеров: 'istanbul'
  • CLI: --coverage.ignoreClassMethods=<method>

Установите массив имен методов класса, которые следует игнорировать при подсчете покрытия. См. документацию istanbul для получения дополнительной информации.

coverage.watermarks ​

  • Тип:
ts
{
  statements?: [number, number],
  functions?: [number, number],
  branches?: [number, number],
  lines?: [number, number]
}
  • По умолчанию:
ts
{
  statements: [50, 80],
  functions: [50, 80],
  branches: [50, 80],
  lines: [50, 80]
}
  • Доступно для провайдеров: 'v8' | 'istanbul'
  • CLI: --coverage.watermarks.statements=50,80, --coverage.watermarks.branches=50,80

Водяные знаки (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, остальные будут пропущены.

js
import { expect, test } from 'vitest';

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

// skipped
test('doNotRun', () => {
  expect(true).toBe(true);
});

open* ​

  • Тип: boolean
  • По умолчанию: !process.env.CI
  • CLI: --open, --open=false

Открывает пользовательский интерфейс Vitest (в разработке).

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, safari
  • playwright: firefox, webkit, chromium
  • custom: любая строка, которая будет передана пользовательскому провайдеру.

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 и иметь следующую структуру:

ts
export interface BrowserProvider {
  name: string;
  getSupportedBrowsers: () => readonly string[];
  initialize: (
    ctx: Vitest,
    options: { browser: string; options?: BrowserProviderOptions }
  ) => Awaitable<void>;
  openPage: (url: string) => Awaitable<void>;
  close: () => Awaitable<void>;
}

WARNING

Это продвинутый API для разработчиков библиотек. Если вам просто нужно запустить тесты в браузере, используйте опцию browser.

browser.providerOptions 1.0.0+ ​

  • Тип: BrowserProviderOptions

Параметры, передаваемые провайдеру при вызове provider.initialize.

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

TIP

Для лучшей типобезопасности при использовании встроенных провайдеров добавьте один из этих типов (для используемого вами провайдера) в поле compilerOptions.types вашего tsconfig:

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

browser.slowHijackESM 0.31.0+ ​

  • Тип: boolean
  • По умолчанию: false

При запуске тестов в Node.js Vitest использует собственное разрешение модулей для имитации модулей с помощью синтаксиса vi.mock. Воспроизведение разрешения ES-модулей в браузере сложнее и требует преобразования исходных файлов перед использованием.

Эта опция не влияет на тесты, выполняемые в Node.js.

Если вы используете шпионаж за ES-модулями с помощью vi.spyOn, включите эту экспериментальную функцию, чтобы разрешить шпионаж за экспортом модулей.

browser.indexScripts 1.6.0+ ​

  • Тип: BrowserScript[]
  • По умолчанию: []

Пользовательские скрипты, которые будут внедрены в индексный HTML-документ перед инициализацией тестовых iframe. Этот HTML-документ только настраивает iframe, не импортируя код.

Скрипты src и content будут обработаны плагинами Vite. Скрипт должен быть предоставлен в следующей форме:

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

Переопределяет путь по умолчанию для сохранения снимков. Например, чтобы сохранить снимки рядом с тестовыми файлами:

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

export default defineConfig({
  test: {
    resolveSnapshotPath: (testPath, snapExtension) => testPath + snapExtension,
  },
});

allowOnly ​

  • Тип: boolean
  • По умолчанию: !process.env.CI
  • CLI: --allowOnly, --allowOnly=false

Разрешает запуск тестов и наборов, помеченных как only.

dangerouslyIgnoreUnhandledErrors* ​

  • Тип: boolean
  • По умолчанию: false
  • CLI: --dangerouslyIgnoreUnhandledErrors --dangerouslyIgnoreUnhandledErrors=false

Игнорирует необработанные ошибки. Опасно, используйте с осторожностью!

passWithNoTests* ​

  • Тип: boolean
  • По умолчанию: false
  • CLI: --passWithNoTests, --passWithNoTests=false

Vitest не будет выдавать ошибку, если не найдено ни одного теста.

logHeapUsage ​

  • Тип: boolean
  • По умолчанию: false
  • CLI: --logHeapUsage, --logHeapUsage=false

Выводит информацию об использовании кучи после каждого теста. Полезно для отладки утечек памяти.

css ​

  • Тип: boolean | { include?, exclude?, modules? }

Настраивает обработку CSS. При исключении CSS-файлы заменяются пустыми строками, чтобы избежать дальнейшей обработки. CSS Modules возвращают прокси, чтобы не влиять на время выполнения.

css.include ​

  • Тип: RegExp | RegExp[]
  • По умолчанию: []

Регулярное выражение для файлов, которые должны возвращать реальный CSS и будут обработаны конвейером Vite.

TIP

Чтобы обработать все CSS-файлы, используйте /.+/.

css.exclude ​

  • Тип: RegExp | RegExp[]
  • По умолчанию: []

Регулярное выражение для файлов, которые будут возвращать пустой CSS.

css.modules ​

  • Тип: { classNameStrategy? }
  • По умолчанию: {}

css.modules.classNameStrategy ​

  • Тип: 'stable' | 'scoped' | 'non-scoped'
  • По умолчанию: 'stable'

Настраивает область видимости имен классов в CSS-модулях. Доступные варианты:

  • 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, используя точечную нотацию:

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

sequence.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 требует пакет typescript
  • vue-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 не будет выводить лог в консоль.

Может быть полезно для фильтрации логов из сторонних библиотек.

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

export default defineConfig({
  test: {
    onConsoleLog(log: string, type: 'stdout' | 'stderr'): boolean | void {
      return !(log === 'message from third party library' && type === 'stdout');
    },
  },
});

onStackTrace* 1.0.0+ ​

  • Тип: (error: Error, frame: ParsedStack) => boolean | void

Применяет функцию фильтрации к каждому кадру каждой трассировки стека при обработке ошибок. Первый аргумент, error, является объектом с теми же свойствами, что и стандартный Error, но это не фактический экземпляр.

Может быть полезно для фильтрации кадров трассировки стека из сторонних библиотек.

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

export default defineConfig({
  test: {
    onStackTrace(error: Error, { file }: ParsedStack): boolean | void {
      // Если мы столкнулись с ReferenceError, показать весь стек.
      if (error.name === 'ReferenceError') return;

      // Отклонить все кадры из сторонних библиотек.
      if (file.includes('node_modules')) return false;
    },
  },
});

diff 0.34.5+ ​

  • Тип: string
  • CLI: --diff=<value>

Путь к файлу конфигурации diff, который будет использоваться для создания интерфейса diff. Полезно, если требуется настроить отображение diff.

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

export default {
  aIndicator: c.bold('--'),
  bIndicator: c.bold('++'),
  omitAnnotationLines: true,
} satisfies DiffOptions;
ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    diff: './vitest.diff.ts',
  },
});

diff.truncateThreshold ​

  • Тип: number
  • По умолчанию: 0

Максимальная длина отображаемого результата diff. Различия, превышающие этот порог, будут усечены. Усечение не применяется при значении по умолчанию 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 и использоваться для разрешения и чтения/записи файлов снимков:

ts
export interface SnapshotEnvironment {
  getVersion: () => string;
  getHeader: () => string;
  resolvePath: (filepath: string) => Promise<string>;
  resolveRawPath: (testPath: string, rawPath: string) => Promise<string>;
  saveSnapshotFile: (filepath: string, snapshot: string) => Promise<void>;
  readSnapshotFile: (filepath: string) => Promise<string | null>;
  removeSnapshotFile: (filepath: string) => Promise<void>;
}

Вы можете расширить VitestSnapshotEnvironment по умолчанию из точки входа vitest/snapshot, если вам нужно переопределить только часть API.

WARNING

Это низкоуровневая опция, предназначенная для использования в тех редких случаях, когда недоступны стандартные API Node.js.

Если вам просто нужно настроить функцию работы со снимками, используйте опции snapshotFormat или resolveSnapshotPath.

Pager
Предыдущая страницаНастройка конфигурационного файла Vitest

Выпущено на условиях лицензии MIT.

Авторские права (c) 2021-Present Vitest Team

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

Выпущено на условиях лицензии MIT.

Авторские права (c) 2021-Present Vitest Team