From b41fd20741c5c50ea7cd95bd21b5c08b4e504295 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 19 Feb 2026 08:53:50 +0000 Subject: [PATCH] test(agents): share assistant error message test fixture --- ...lpers.formatassistanterrortext.e2e.test.ts | 30 ++++------------ .../run/payloads.e2e.test.ts | 32 ++++------------- .../assistant-message-fixtures.ts | 34 +++++++++++++++++++ 3 files changed, 47 insertions(+), 49 deletions(-) create mode 100644 src/agents/test-helpers/assistant-message-fixtures.ts diff --git a/src/agents/pi-embedded-helpers.formatassistanterrortext.e2e.test.ts b/src/agents/pi-embedded-helpers.formatassistanterrortext.e2e.test.ts index cb70c9df54..1087d1b79a 100644 --- a/src/agents/pi-embedded-helpers.formatassistanterrortext.e2e.test.ts +++ b/src/agents/pi-embedded-helpers.formatassistanterrortext.e2e.test.ts @@ -6,32 +6,14 @@ import { formatAssistantErrorText, formatRawAssistantErrorForUi, } from "./pi-embedded-helpers.js"; +import { makeAssistantMessageFixture } from "./test-helpers/assistant-message-fixtures.js"; describe("formatAssistantErrorText", () => { - const makeAssistantError = (errorMessage: string): AssistantMessage => ({ - role: "assistant", - api: "openai-responses", - provider: "openai", - model: "test-model", - usage: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - totalTokens: 0, - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - total: 0, - }, - }, - stopReason: "error", - errorMessage, - content: [{ type: "text", text: errorMessage }], - timestamp: 0, - }); + const makeAssistantError = (errorMessage: string): AssistantMessage => + makeAssistantMessageFixture({ + errorMessage, + content: [{ type: "text", text: errorMessage }], + }); it("returns a friendly message for context overflow", () => { const msg = makeAssistantError("request_too_large"); diff --git a/src/agents/pi-embedded-runner/run/payloads.e2e.test.ts b/src/agents/pi-embedded-runner/run/payloads.e2e.test.ts index 06c617663b..70e41de83e 100644 --- a/src/agents/pi-embedded-runner/run/payloads.e2e.test.ts +++ b/src/agents/pi-embedded-runner/run/payloads.e2e.test.ts @@ -1,6 +1,7 @@ import type { AssistantMessage } from "@mariozechner/pi-ai"; import { describe, expect, it } from "vitest"; import { formatBillingErrorMessage } from "../../pi-embedded-helpers.js"; +import { makeAssistantMessageFixture } from "../../test-helpers/assistant-message-fixtures.js"; import { buildEmbeddedRunPayloads } from "./payloads.js"; describe("buildEmbeddedRunPayloads", () => { @@ -15,31 +16,12 @@ describe("buildEmbeddedRunPayloads", () => { }, "request_id": "req_011CX7DwS7tSvggaNHmefwWg" }`; - const makeAssistant = (overrides: Partial): AssistantMessage => ({ - role: "assistant", - api: "openai-responses", - provider: "openai", - model: "test-model", - usage: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - totalTokens: 0, - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - total: 0, - }, - }, - timestamp: 0, - stopReason: "error", - errorMessage: errorJson, - content: [{ type: "text", text: errorJson }], - ...overrides, - }); + const makeAssistant = (overrides: Partial): AssistantMessage => + makeAssistantMessageFixture({ + errorMessage: errorJson, + content: [{ type: "text", text: errorJson }], + ...overrides, + }); type BuildPayloadParams = Parameters[0]; const buildPayloads = (overrides: Partial = {}) => diff --git a/src/agents/test-helpers/assistant-message-fixtures.ts b/src/agents/test-helpers/assistant-message-fixtures.ts new file mode 100644 index 0000000000..edf26770b7 --- /dev/null +++ b/src/agents/test-helpers/assistant-message-fixtures.ts @@ -0,0 +1,34 @@ +import type { AssistantMessage } from "@mariozechner/pi-ai"; + +const ZERO_USAGE: AssistantMessage["usage"] = { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + totalTokens: 0, + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + total: 0, + }, +}; + +export function makeAssistantMessageFixture( + overrides: Partial = {}, +): AssistantMessage { + const errorText = typeof overrides.errorMessage === "string" ? overrides.errorMessage : "error"; + return { + role: "assistant", + api: "openai-responses", + provider: "openai", + model: "test-model", + usage: ZERO_USAGE, + timestamp: 0, + stopReason: "error", + errorMessage: errorText, + content: [{ type: "text", text: errorText }], + ...overrides, + }; +}