ci(test): raise node heap for CI vitest

This commit is contained in:
Peter Steinberger
2026-02-15 05:06:58 +00:00
parent 935ca39945
commit 3faf5ada2e

View File

@@ -165,6 +165,20 @@ const WARNING_SUPPRESSION_FLAGS = [
"--disable-warning=MaxListenersExceededWarning",
];
const DEFAULT_CI_MAX_OLD_SPACE_SIZE_MB = 4096;
const maxOldSpaceSizeMb = (() => {
// CI can hit Node heap limits (especially on large suites). Allow override, default to 4GB.
const raw = process.env.OPENCLAW_TEST_MAX_OLD_SPACE_SIZE_MB ?? "";
const parsed = Number.parseInt(raw, 10);
if (Number.isFinite(parsed) && parsed > 0) {
return parsed;
}
if (isCI && !isWindows) {
return DEFAULT_CI_MAX_OLD_SPACE_SIZE_MB;
}
return null;
})();
function resolveReportDir() {
const raw = process.env.OPENCLAW_VITEST_REPORT_DIR?.trim();
if (!raw) {
@@ -224,11 +238,18 @@ const runOnce = (entry, extraArgs = []) =>
(acc, flag) => (acc.includes(flag) ? acc : `${acc} ${flag}`.trim()),
nodeOptions,
);
const heapFlag =
maxOldSpaceSizeMb && !nextNodeOptions.includes("--max-old-space-size=")
? `--max-old-space-size=${maxOldSpaceSizeMb}`
: null;
const resolvedNodeOptions = heapFlag
? `${nextNodeOptions} ${heapFlag}`.trim()
: nextNodeOptions;
let child;
try {
child = spawn(pnpm, args, {
stdio: "inherit",
env: { ...process.env, VITEST_GROUP: entry.name, NODE_OPTIONS: nextNodeOptions },
env: { ...process.env, VITEST_GROUP: entry.name, NODE_OPTIONS: resolvedNodeOptions },
shell: isWindows,
});
} catch (err) {