test: stabilize full-suite flakes

This commit is contained in:
Peter Steinberger
2026-04-23 18:47:25 +01:00
parent d0303e2a97
commit 310b1eea4a
7 changed files with 72 additions and 15 deletions

View File

@@ -189,11 +189,15 @@ function runVitestSpec(spec) {
if (spec.includeFilePath && spec.includePatterns) {
writeVitestIncludeFile(spec.includeFilePath, spec.includePatterns);
}
let noOutputTimedOut = false;
return new Promise((resolve, reject) => {
const { child, teardown } = spawnWatchedVitestProcess({
pnpmArgs: spec.pnpmArgs,
env: spec.env,
label: spec.config,
onNoOutputTimeout: () => {
noOutputTimedOut = true;
},
spawnParams: {
cwd: process.cwd(),
...resolveVitestSpawnParams(spec.env),
@@ -203,7 +207,7 @@ function runVitestSpec(spec) {
child.on("exit", (code, signal) => {
teardown();
cleanupVitestRunSpec(spec);
resolve({ code: code ?? 1, signal });
resolve({ code: code ?? (signal ? 143 : 1), noOutputTimedOut, signal });
});
child.on("error", (error) => {
@@ -231,8 +235,21 @@ function applyDefaultParallelVitestWorkerBudget(specs, env) {
async function runLoggedVitestSpec(spec) {
console.error(`[test] starting ${spec.config}`);
const startedAt = performance.now();
const result = await runVitestSpec(spec);
let result = await runVitestSpec(spec);
if (result.noOutputTimedOut && !spec.watchMode) {
console.error(`[test] retrying ${spec.config} after no-output timeout`);
result = await runVitestSpec(spec);
}
const durationMs = performance.now() - startedAt;
if (result.noOutputTimedOut && result.signal) {
console.error(`[test] ${spec.config} exceeded no-output timeout`);
return {
...result,
code: result.code || 143,
signal: null,
timing: null,
};
}
if (result.signal) {
console.error(`[test] ${spec.config} exited by signal ${result.signal}`);
releaseLockOnce();