Skip to content

Commit 3220386

Browse files
committed
optimize vitest for parallel execution in non-coverage mode
1 parent 5a103f0 commit 3220386

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

.config/vitest.config.mts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
import { defineConfig } from 'vitest/config'
22

3+
// Check if coverage is enabled via CLI flags or environment.
4+
const isCoverageEnabled =
5+
process.env['COVERAGE'] === 'true' ||
6+
process.env['npm_lifecycle_event']?.includes('coverage') ||
7+
process.argv.some(arg => arg.includes('coverage'))
8+
39
export default defineConfig({
410
resolve: {
511
preserveSymlinks: false,
@@ -13,6 +19,22 @@ export default defineConfig({
1319
'src/**/*.test.{js,ts,mjs,cjs,mts}',
1420
],
1521
reporters: ['default'],
22+
// Improve memory usage by running tests sequentially in CI.
23+
pool: 'forks',
24+
poolOptions: {
25+
forks: {
26+
// Use single fork for coverage to reduce memory, parallel otherwise.
27+
singleFork: isCoverageEnabled,
28+
maxForks: isCoverageEnabled ? 1 : undefined,
29+
// Isolate tests to prevent memory leaks between test files.
30+
isolate: true,
31+
},
32+
threads: {
33+
// Use single thread for coverage to reduce memory, parallel otherwise.
34+
singleThread: isCoverageEnabled,
35+
maxThreads: isCoverageEnabled ? 1 : undefined,
36+
},
37+
},
1638
testTimeout: 60_000,
1739
hookTimeout: 60_000,
1840
coverage: {

0 commit comments

Comments
 (0)