Skip to content

Commit 715f882

Browse files
committed
optimize vitest for parallel execution in non-coverage mode
1 parent cfb75e0 commit 715f882

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

.config/vitest.config.mts

Lines changed: 12 additions & 5 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
test: {
511
globals: false,
@@ -10,15 +16,16 @@ export default defineConfig({
1016
pool: 'forks',
1117
poolOptions: {
1218
forks: {
13-
singleFork: true,
14-
maxForks: 1,
19+
// Use single fork for coverage to reduce memory, parallel otherwise.
20+
singleFork: isCoverageEnabled,
21+
maxForks: isCoverageEnabled ? 1 : undefined,
1522
// Isolate tests to prevent memory leaks between test files.
1623
isolate: true,
1724
},
1825
threads: {
19-
singleThread: true,
20-
// Limit thread concurrency to prevent RegExp compiler exhaustion.
21-
maxThreads: 1,
26+
// Use single thread for coverage to reduce memory, parallel otherwise.
27+
singleThread: isCoverageEnabled,
28+
maxThreads: isCoverageEnabled ? 1 : undefined,
2229
},
2330
},
2431
testTimeout: 60_000,

0 commit comments

Comments
 (0)