diff --git a/src/agents/pi-embedded-runner/run/payloads.errors.test.ts b/src/agents/pi-embedded-runner/run/payloads.errors.test.ts index 8fc65c4c42e..df2757f04a9 100644 --- a/src/agents/pi-embedded-runner/run/payloads.errors.test.ts +++ b/src/agents/pi-embedded-runner/run/payloads.errors.test.ts @@ -40,6 +40,18 @@ describe("buildEmbeddedRunPayloads", () => { expect(payloads[0]?.text).toBe(OVERLOADED_FALLBACK_TEXT); }; + function expectSinglePayloadSummary( + payloads: ReturnType, + expected: { text: string; isError?: boolean }, + ) { + expectSinglePayloadText(payloads, expected.text); + if (expected.isError === undefined) { + expect(payloads[0]?.isError).toBeUndefined(); + return; + } + expect(payloads[0]?.isError).toBe(expected.isError); + } + function expectNoPayloads(params: Parameters[0]) { const payloads = buildPayloads(params); expect(payloads).toHaveLength(0); @@ -100,9 +112,10 @@ describe("buildEmbeddedRunPayloads", () => { model: "claude-3-5-sonnet", }); - expect(payloads).toHaveLength(1); - expect(payloads[0]?.text).toBe(formatBillingErrorMessage("Anthropic", "claude-3-5-sonnet")); - expect(payloads[0]?.isError).toBe(true); + expectSinglePayloadSummary(payloads, { + text: formatBillingErrorMessage("Anthropic", "claude-3-5-sonnet"), + isError: true, + }); }); it("does not emit a synthetic billing error for successful turns with stale errorMessage", () => { @@ -242,9 +255,9 @@ describe("buildEmbeddedRunPayloads", () => { lastToolError: { toolName: "browser", error: "connection timeout" }, }); - expect(payloads).toHaveLength(1); - expect(payloads[0]?.isError).toBeUndefined(); - expect(payloads[0]?.text).toContain("recovered"); + expectSinglePayloadSummary(payloads, { + text: "Checked the page and recovered with final answer.", + }); }); it("suppresses recoverable tool errors containing 'required' for non-mutating tools", () => { @@ -335,8 +348,7 @@ describe("buildEmbeddedRunPayloads", () => { }, }); - expect(payloads).toHaveLength(1); - expect(payloads[0]?.text).toBe("Status loaded."); + expectSinglePayloadSummary(payloads, { text: "Status loaded." }); }); it("dedupes identical tool warning text already present in assistant output", () => { @@ -360,8 +372,7 @@ describe("buildEmbeddedRunPayloads", () => { }, }); - expect(payloads).toHaveLength(1); - expect(payloads[0]?.text).toBe(warningText); + expectSinglePayloadSummary(payloads, { text: warningText ?? "" }); }); it("includes non-recoverable tool error details when verbose mode is on", () => {