diff --git a/extensions/discord/src/monitor/message-handler.process.test-harness.ts b/extensions/discord/src/monitor/message-handler.process.test-harness.ts index 1b3ced43850c..a9470ee8c68d 100644 --- a/extensions/discord/src/monitor/message-handler.process.test-harness.ts +++ b/extensions/discord/src/monitor/message-handler.process.test-harness.ts @@ -158,6 +158,8 @@ export type DispatchInboundParams = { }) => Promise | void; onReasoningEnd?: () => Promise | void; onToolStart?: (payload: { + itemId?: string; + toolCallId?: string; name?: string; phase?: string; args?: Record; @@ -189,6 +191,7 @@ export type DispatchInboundParams = { }) => Promise | void; onApprovalEvent?: (payload: { phase?: string; command?: string }) => Promise | void; onCommandOutput?: (payload: { + toolCallId?: string; phase?: string; name?: string; title?: string; diff --git a/src/gateway/managed-image-actions.e2e.test.ts b/src/gateway/managed-image-actions.e2e.test.ts index 2ac27c0b6dc2..578a63a68e28 100644 --- a/src/gateway/managed-image-actions.e2e.test.ts +++ b/src/gateway/managed-image-actions.e2e.test.ts @@ -122,7 +122,7 @@ describe("managed image actions Gateway E2E", () => { height: 84, }); - const authenticated = await fetch(new URL(block.url, fullUrl), { + const authenticated = await fetch(new URL(String(block.url), fullUrl), { headers: { Authorization: `Bearer ${GATEWAY_TOKEN}` }, }); expect(authenticated.status).toBe(200); diff --git a/ui/src/pages/chat/components/chat-message.test.ts b/ui/src/pages/chat/components/chat-message.test.ts index c53098a44b4b..e97a3a6f5403 100644 --- a/ui/src/pages/chat/components/chat-message.test.ts +++ b/ui/src/pages/chat/components/chat-message.test.ts @@ -4574,7 +4574,12 @@ describe("grouped chat rendering", () => { }); vi.stubGlobal("ClipboardItem", ClipboardItemMock); vi.stubGlobal("navigator", { clipboard: { write } }); - const click = vi.spyOn(HTMLAnchorElement.prototype, "click").mockImplementation(() => {}); + const clickedDownloads: string[] = []; + const click = vi + .spyOn(HTMLAnchorElement.prototype, "click") + .mockImplementation(function (this: HTMLAnchorElement) { + clickedDownloads.push(this.download); + }); const toastHost = document.body.appendChild(document.createElement("openclaw-toast-host")); const container = document.body.appendChild(document.createElement("div")); renderAssistantMessage( @@ -4587,12 +4592,14 @@ describe("grouped chat rendering", () => { expectElement(container, 'button[aria-label="Download image"]', HTMLButtonElement).click(); await vi.waitFor(() => expect(click).toHaveBeenCalledOnce()); - expect(click.mock.instances[0]?.download).toBe("Ticketed image.png"); + expect(clickedDownloads[0]).toBe("Ticketed image.png"); expectElement(container, 'button[aria-label="Copy image"]', HTMLButtonElement).click(); await vi.waitFor(() => expect(copiedBlob?.type).toBe("image/png")); await vi.waitFor(() => expect(toastHost.textContent).toContain("Copied!")); - expect(fetchMock.mock.calls.filter(([url]) => url === ticketedUrl)).toHaveLength(1); + expect(fetchMock.mock.calls.filter((call: unknown[]) => call[0] === ticketedUrl)).toHaveLength( + 1, + ); expect(resolveArtifactDownload).toHaveBeenCalledTimes(2); toastHost.remove(); container.remove();