Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 17 additions & 10 deletions vitest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,24 @@ export default defineConfig({
},
exclude: ['node_modules', 'dist', '.idea', '.git', '.cache'],
// CI runners (GitHub Actions ubuntu-latest) têm 2 vCPU.
// Default `pool: 'threads'` com `maxThreads = numCPUs * 2 = 4` causa
// over-subscription severa em runners pequenos com 405+ test files,
// resultando em timeouts de 25+ minutos. `forks` com `maxForks: 2`
// alinha com a capacidade real do runner e mantém isolamento entre
// arquivos de teste, eliminando deadlocks por contention.
pool: 'forks',
//
// Histórico desse problema:
// 1. Default `pool: 'threads'` com `maxThreads = numCPUs * 2 = 4` causou
// over-subscription e timeout 25min em main e PRs.
// 2. Pivot 1 (PR #135): `pool: 'forks' + maxForks: 2` — não destravou,
// fork tem overhead alto demais (Node spawn por arquivo de teste).
Comment on lines +21 to +22
// 3. Pivot 2 (este PR): `pool: 'threads' + maxThreads: 2` — limita o
// paralelismo em 2 (alinha com 2 vCPU) sem o overhead de fork.
//
// Validação local (102s suite completa) confirmou que threads sem
// over-subscription é o caminho.
pool: 'threads',
poolOptions: {
forks: {
singleFork: false,
maxForks: 2,
minForks: 1,
threads: {
maxThreads: 2,
minThreads: 1,
// useAtomics melhora throughput de comunicação entre threads
useAtomics: true,
},
Comment on lines +28 to 35
},
// Timeout por teste: 15s é suficiente para qualquer caso legítimo.
Expand Down
Loading