Параллелизм
Параллельное выполнение файлов
По умолчанию Vitest запускает тестовые файлы параллельно. В зависимости от указанного pool, Vitest использует различные механизмы для параллельного выполнения тестовых файлов:
forks(по умолчанию) иvmForksзапускают тесты в отдельных дочерних процессах.threadsиvmThreadsзапускают тесты в отдельных рабочих потоках.
Как "дочерние процессы", так и "рабочие потоки" называются воркерами. Вы можете настроить количество запущенных воркеров с помощью опций minWorkers и maxWorkers. Более тонкая настройка доступна через конфигурацию poolOptions.
При наличии большого количества тестов их параллельный запуск обычно ускоряет выполнение, но это также зависит от проекта, окружения и состояния изоляции. Чтобы отключить параллелизацию файлов, вы можете установить для fileParallelism значение false. Для получения дополнительной информации о возможных улучшениях производительности ознакомьтесь с Руководством по оптимизации производительности.
Параллелизм тестов
В отличие от тестовых файлов, Vitest запускает тесты последовательно. Это означает, что тесты в одном файле будут выполняться в порядке их определения.
Vitest поддерживает опцию concurrent для параллельного запуска тестов. Если эта опция установлена, Vitest объединяет параллельные тесты в одном тестовом файле (количество одновременно выполняемых тестов зависит от опции maxConcurrency) и запускает их с помощью Promise.all.
Vitest не выполняет интеллектуального анализа и не создает дополнительных воркеров для запуска этих тестов. Это означает, что производительность ваших тестов улучшится только в том случае, если вы активно используете асинхронные операции. Например, следующие тесты все равно будут запускаться один за другим, даже если указана опция concurrent, из-за их синхронной природы:
test.concurrent('the first test', () => {
expect(1).toBe(1);
});
test.concurrent('the second test', () => {
expect(2).toBe(2);
});Если вы хотите запустить все тесты параллельно, вы можете установить опцию sequence.concurrent в true.