Skip to content
Vitest 0
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 UI

Режим браузера (экспериментальный)

In-source тестирование (Тестирование в исходном коде)

Контекст теста

Тестовая среда

Расширение проверок (matchers)

Интеграции с IDE

Отладка

Сравнения с другими тестовыми фреймворками

Руководство по миграции

Распространенные ошибки

API

Справочник по Test API

Mock-функции

Vi

expect

expectTypeOf

assertType

Конфигурация

Настройка Vitest

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

Настройка 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, используйте следующий код:

ts
/// <reference types="vitest" />
import { defineConfig } from 'vite';

export default defineConfig({
  test: {
    // ...
  },
});

При использовании defineConfig из vitest/config, используйте следующий код:

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

export default defineConfig({
  test: {
    // ...
  },
});

Вы можете получить параметры Vitest по умолчанию и расширить их, если это необходимо:

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

export default defineConfig({
  test: {
    exclude: [...configDefaults.exclude, 'packages/template/*'],
  },
});

Если вы используете отдельный файл vitest.config.js, вы можете расширить конфигурацию Vite, импортировав ее из другого файла, если это потребуется:

ts
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 определена как функция, используйте следующий код:

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

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.

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 в конфигурации.

ts
// vite.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
// 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:

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 с флагом --threads=false тесты будут выполняться в следующем порядке сред: node, jsdom, happy-dom, edge-runtime, custom environments (пользовательские среды). Это означает, что тесты с одинаковой средой группируются вместе и выполняются последовательно.

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

ts
import type { Environment } from 'vitest';

export default <Environment>{
  name: 'custom',
  transformMode: 'ssr',
  setup() {
    // 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-паттернов. Используется первое совпадение.

Пример:

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

export default defineConfig({
  test: {
    environmentMatchGlobs: [
      // all tests in tests/dom will run in jsdom
      ['tests/dom/**', 'jsdom'],
      // all tests in tests/ with .edge.test.ts will run in edge-runtime
      ['**/*.edge.test.ts', 'edge-runtime'],
      // ...
    ],
  },
});

poolMatchGlobs ​

  • Тип: [string, 'threads' | 'child_process' | 'experimentalVmThreads'][]
  • По умолчанию: []
  • Версия: С Vitest 0.29.4

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

Пример:

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

export default defineConfig({
  test: {
    poolMatchGlobs: [
      // all tests in "worker-specific" directory will run inside a worker as if you enabled `--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, отличный от того, что используется в вашем коде:
ts
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, этот файл настройки будет запущен в той же глобальной области видимости несколько раз. Это означает, что вы получаете доступ к одному и тому же глобальному объекту перед каждым тестом, поэтому убедитесь, что вы не выполняете одни и те же действия больше, чем необходимо.

Например, вы можете положиться на глобальную переменную.

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 (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 не может построить граф модулей:

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

TIP

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

isolate ​

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

Изолирует окружение для каждого тестового файла. Не работает, если отключена опция --threads.

Эта опция не влияет на experimentalVmThreads.

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']
  • Доступно для провайдеров: '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}.?(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 (начиная с Vitest 0.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 ​

  • Тип:
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'

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

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

ts
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 рядом с файлами тестов:

ts
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 с помощью точечной нотации:

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

sequence.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 требует пакет 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

Порог для медленных тестов (время в миллисекундах, после которого тест считается медленным и сообщается об этом в результатах).

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 не будет выводить лог в консоль.

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

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

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',
  },
});
Pager
Предыдущая страницаassertType

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

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

https://v0.vitest.dev/config/

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

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