test: print failed test lane output tails

This commit is contained in:
Peter Steinberger 2026-03-23 19:34:48 -07:00
parent 7f373823b0
commit 8f9799307b
No known key found for this signature in database
2 changed files with 21 additions and 0 deletions

View File

@ -22,6 +22,20 @@ export function hasFatalTestRunOutput(output) {
return fatalOutputPatterns.some((pattern) => pattern.test(output));
}
export function formatCapturedOutputTail(output, maxLines = 60, maxChars = 6000) {
const trimmed = output.trim();
if (!trimmed) {
return "";
}
const lines = trimmed.split(/\r?\n/u);
const tailLines = lines.slice(-maxLines);
const tail = tailLines.join("\n");
if (tail.length <= maxChars) {
return tail;
}
return tail.slice(-maxChars);
}
export function resolveTestRunExitCode({ code, signal, output, fatalSeen = false, childError }) {
if (typeof code === "number" && code !== 0) {
return code;

View File

@ -11,6 +11,7 @@ import {
} from "./test-parallel-memory.mjs";
import {
appendCapturedOutput,
formatCapturedOutputTail,
hasFatalTestRunOutput,
resolveTestRunExitCode,
} from "./test-parallel-utils.mjs";
@ -1296,6 +1297,12 @@ const runOnce = (entry, extraArgs = []) =>
children.delete(child);
const resolvedCode = resolveTestRunExitCode({ code, signal, output, fatalSeen, childError });
logMemoryTraceSummary();
if (resolvedCode !== 0) {
const failureTail = formatCapturedOutputTail(output);
if (failureTail) {
console.error(`[test-parallel] failure tail ${entry.name}\n${failureTail}`);
}
}
console.log(
`[test-parallel] done ${entry.name} code=${String(resolvedCode)} elapsed=${formatElapsedMs(Date.now() - startedAt)}`,
);