diff --git a/scripts/lib/ci-node-test-plan.mjs b/scripts/lib/ci-node-test-plan.mjs index 22589b4f93be..898942faccc5 100644 --- a/scripts/lib/ci-node-test-plan.mjs +++ b/scripts/lib/ci-node-test-plan.mjs @@ -28,7 +28,9 @@ const GATEWAY_STARTUP_HEALTH_RUNTIME_ENV = { const MAX_BUNDLED_NODE_TEST_PATTERNS = 64; // PR-only bundles trade a little serial work for fewer ephemeral runner registrations. // Keep runner classes and subprocess isolation intact while bounding each combined job. -const COMPACT_NODE_TEST_JOB_SECONDS = 260; +// Fleet-loaded runners inflate measured hints by ~20-25%; a 220s packing cap +// keeps the slowest bin near the 5-minute PR wall-clock budget under load. +const COMPACT_NODE_TEST_JOB_SECONDS = 220; const COMPACT_NODE_TEST_JOB_GROUPS = 10; const COMPACT_TOOLING_NODE_TEST_GROUPS = 4; const COMPACT_WHOLE_NODE_TEST_TIMEOUT_MINUTES = 120; diff --git a/test/scripts/ci-node-test-plan.test.ts b/test/scripts/ci-node-test-plan.test.ts index 3aeab7e50089..c52fba7fb260 100644 --- a/test/scripts/ci-node-test-plan.test.ts +++ b/test/scripts/ci-node-test-plan.test.ts @@ -187,7 +187,7 @@ describe("scripts/lib/ci-node-test-plan.mjs", () => { }); expect(compact.length).toBeGreaterThanOrEqual(12); - expect(compact.length).toBeLessThanOrEqual(24); + expect(compact.length).toBeLessThanOrEqual(28); expect(compact.every((shard) => Array.isArray(shard.groups))).toBe(true); expect(compact.every((shard) => shard.groups.length <= 10)).toBe(true); expect(compact.some((shard) => shard.requiresDist)).toBe(true);