fix: stabilize ci and serial test gate

This commit is contained in:
Peter Steinberger
2026-03-30 00:41:57 +01:00
parent 0da610a8ec
commit 193f781fad
13 changed files with 464 additions and 189 deletions

View File

@@ -33,6 +33,7 @@ vi.mock("../progress.js", () => ({
describe("exec approval transport timeout (#12098)", () => {
let callGatewayCli: typeof import("./rpc.js").callGatewayCli;
const approvalTransportFloorMs = DEFAULT_EXEC_APPROVAL_TIMEOUT_MS + 10_000;
beforeAll(async () => {
({ callGatewayCli } = await import("./rpc.js"));
@@ -55,10 +56,10 @@ describe("exec approval transport timeout (#12098)", () => {
});
it("fix: overriding transportTimeoutMs gives the approval enough transport time", async () => {
const approvalTimeoutMs = 120_000;
const approvalTimeoutMs = DEFAULT_EXEC_APPROVAL_TIMEOUT_MS;
// Mirror the production code: parseTimeoutMs(opts.timeout) ?? 0
const transportTimeoutMs = Math.max(parseTimeoutMs("35000") ?? 0, approvalTimeoutMs + 10_000);
expect(transportTimeoutMs).toBe(130_000);
const transportTimeoutMs = Math.max(parseTimeoutMs("35000") ?? 0, approvalTransportFloorMs);
expect(transportTimeoutMs).toBe(approvalTransportFloorMs);
await callGatewayCli(
"exec.approval.request",
@@ -70,18 +71,18 @@ describe("exec approval transport timeout (#12098)", () => {
expect(callGatewaySpy).toHaveBeenCalledTimes(1);
const callOpts = callGatewaySpy.mock.calls[0][0];
expect(callOpts.timeoutMs).toBeGreaterThanOrEqual(approvalTimeoutMs);
expect(callOpts.timeoutMs).toBe(130_000);
expect(callOpts.timeoutMs).toBe(approvalTransportFloorMs);
});
it("fix: user-specified timeout larger than approval is preserved", async () => {
const approvalTimeoutMs = 120_000;
const approvalTimeoutMs = DEFAULT_EXEC_APPROVAL_TIMEOUT_MS;
const userTimeout = 200_000;
// Mirror the production code: parseTimeoutMs preserves valid large values
const transportTimeoutMs = Math.max(
parseTimeoutMs(String(userTimeout)) ?? 0,
approvalTimeoutMs + 10_000,
approvalTransportFloorMs,
);
expect(transportTimeoutMs).toBe(200_000);
expect(transportTimeoutMs).toBe(approvalTransportFloorMs);
await callGatewayCli(
"exec.approval.request",
@@ -91,15 +92,15 @@ describe("exec approval transport timeout (#12098)", () => {
);
const callOpts = callGatewaySpy.mock.calls[0][0];
expect(callOpts.timeoutMs).toBe(200_000);
expect(callOpts.timeoutMs).toBe(approvalTransportFloorMs);
});
it("fix: non-numeric timeout falls back to approval floor", async () => {
const approvalTimeoutMs = DEFAULT_EXEC_APPROVAL_TIMEOUT_MS;
// parseTimeoutMs returns undefined for garbage input, ?? 0 ensures
// Math.max picks the approval floor instead of producing NaN
const transportTimeoutMs = Math.max(parseTimeoutMs("foo") ?? 0, approvalTimeoutMs + 10_000);
expect(transportTimeoutMs).toBe(approvalTimeoutMs + 10_000);
const transportTimeoutMs = Math.max(parseTimeoutMs("foo") ?? 0, approvalTransportFloorMs);
expect(transportTimeoutMs).toBe(approvalTransportFloorMs);
await callGatewayCli(
"exec.approval.request",
@@ -109,6 +110,6 @@ describe("exec approval transport timeout (#12098)", () => {
);
const callOpts = callGatewaySpy.mock.calls[0][0];
expect(callOpts.timeoutMs).toBe(approvalTimeoutMs + 10_000);
expect(callOpts.timeoutMs).toBe(approvalTransportFloorMs);
});
});