From 808ce04cc11ef4288bc86928c265b06fee2ff852 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 12 May 2026 08:29:19 +0100 Subject: [PATCH] test: guard agent web mock calls --- src/agents/tools/music-generate-tool.test.ts | 4 ++-- src/agents/tools/web-fetch.cf-markdown.test.ts | 8 ++++++-- src/agents/tools/web-search.late-bind.test.ts | 4 ++-- src/agents/tools/web-search.signal.test.ts | 5 +++-- src/agents/tools/web-tools.fetch.test.ts | 4 ++-- 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/agents/tools/music-generate-tool.test.ts b/src/agents/tools/music-generate-tool.test.ts index 6d3e9d6fcd3e..ba1ef0e0c41c 100644 --- a/src/agents/tools/music-generate-tool.test.ts +++ b/src/agents/tools/music-generate-tool.test.ts @@ -810,7 +810,7 @@ describe("createMusicGenerateTool", () => { }); expect(webMedia.loadWebMedia).toHaveBeenCalledTimes(1); - const loadCall = vi.mocked(webMedia.loadWebMedia).mock.calls[0]; + const loadCall = vi.mocked(webMedia.loadWebMedia).mock.calls.at(0); expect(loadCall?.[0]).toBe("http://198.18.0.153/reference.png"); const loadOptions = loadCall?.[1] as { requestInit?: { signal?: unknown }; @@ -820,7 +820,7 @@ describe("createMusicGenerateTool", () => { expect(loadOptions.ssrfPolicy).toEqual({ allowRfc2544BenchmarkRange: true }); expect(generateMusicOptions().timeoutMs).toBe(180_000); expect(fetchTimeout.buildTimeoutAbortSignal).toHaveBeenCalledTimes(1); - expect(vi.mocked(fetchTimeout.buildTimeoutAbortSignal).mock.calls[0]?.[0]).toEqual({ + expect(vi.mocked(fetchTimeout.buildTimeoutAbortSignal).mock.calls.at(0)?.[0]).toEqual({ operation: "music-generate.reference-fetch", timeoutMs: 30_000, url: "http://198.18.0.153/reference.png", diff --git a/src/agents/tools/web-fetch.cf-markdown.test.ts b/src/agents/tools/web-fetch.cf-markdown.test.ts index 1ca18c533ec1..212fe772239e 100644 --- a/src/agents/tools/web-fetch.cf-markdown.test.ts +++ b/src/agents/tools/web-fetch.cf-markdown.test.ts @@ -57,7 +57,11 @@ describe("web_fetch Cloudflare Markdown for Agents", () => { await tool?.execute?.("call", { url: "https://example.com/page" }); expect(fetchSpy).toHaveBeenCalledTimes(1); - const [, init] = fetchSpy.mock.calls[0]; + const fetchCall = fetchSpy.mock.calls.at(0); + if (!fetchCall) { + throw new Error("expected fetch to be called"); + } + const [, init] = fetchCall; expect(init.headers.Accept).toBe("text/markdown, text/html;q=0.9, */*;q=0.1"); }); @@ -141,7 +145,7 @@ describe("web_fetch Cloudflare Markdown for Agents", () => { await tool?.execute?.("call", { url: "https://example.com/runtime-firecrawl-off" }); expect(fetchSpy).toHaveBeenCalledTimes(1); - expect(fetchSpy.mock.calls[0]?.[0]).toBe("https://example.com/runtime-firecrawl-off"); + expect(fetchSpy.mock.calls.at(0)?.[0]).toBe("https://example.com/runtime-firecrawl-off"); }); it("logs x-markdown-tokens when header is present", async () => { diff --git a/src/agents/tools/web-search.late-bind.test.ts b/src/agents/tools/web-search.late-bind.test.ts index eb958a0e93a0..ff3ec18c219f 100644 --- a/src/agents/tools/web-search.late-bind.test.ts +++ b/src/agents/tools/web-search.late-bind.test.ts @@ -38,11 +38,11 @@ type ProviderResolutionParams = { }; function firstRunWebSearchParams(): RunWebSearchParams | undefined { - return mocks.runWebSearch.mock.calls[0]?.[0] as RunWebSearchParams | undefined; + return mocks.runWebSearch.mock.calls.at(0)?.[0] as RunWebSearchParams | undefined; } function firstProviderResolutionParams(): ProviderResolutionParams | undefined { - return mocks.resolveManifestContractOwnerPluginId.mock.calls[0]?.[0] as + return mocks.resolveManifestContractOwnerPluginId.mock.calls.at(0)?.[0] as | ProviderResolutionParams | undefined; } diff --git a/src/agents/tools/web-search.signal.test.ts b/src/agents/tools/web-search.signal.test.ts index cb0aeb5f1bfe..91b7bb3cf1cf 100644 --- a/src/agents/tools/web-search.signal.test.ts +++ b/src/agents/tools/web-search.signal.test.ts @@ -26,7 +26,8 @@ describe("web_search signal plumbing", () => { await tool?.execute("call-search", { query: "openclaw" }, controller.signal); expect(mocks.runWebSearch).toHaveBeenCalledTimes(1); - expect(mocks.runWebSearch.mock.calls[0]?.[0]?.args).toEqual({ query: "openclaw" }); - expect(mocks.runWebSearch.mock.calls[0]?.[0]?.signal).toBe(controller.signal); + const params = mocks.runWebSearch.mock.calls.at(0)?.[0]; + expect(params?.args).toEqual({ query: "openclaw" }); + expect(params?.signal).toBe(controller.signal); }); }); diff --git a/src/agents/tools/web-tools.fetch.test.ts b/src/agents/tools/web-tools.fetch.test.ts index 6f8ac66182b4..f786482db1bc 100644 --- a/src/agents/tools/web-tools.fetch.test.ts +++ b/src/agents/tools/web-tools.fetch.test.ts @@ -344,7 +344,7 @@ describe("web_fetch extraction fallbacks", () => { await tool?.execute?.("call", { url: "https://example.com/proxy" }); - const requestInit = mockFetch.mock.calls[0]?.[1] as + const requestInit = mockFetch.mock.calls.at(0)?.[1] as | (RequestInit & { dispatcher?: unknown }) | undefined; const dispatcher = requestInit?.dispatcher; @@ -372,7 +372,7 @@ describe("web_fetch extraction fallbacks", () => { await tool?.execute?.("call", { url: "https://example.com/proxy" }); - const requestInit = mockFetch.mock.calls[0]?.[1] as + const requestInit = mockFetch.mock.calls.at(0)?.[1] as | (RequestInit & { dispatcher?: unknown }) | undefined; const dispatcher = requestInit?.dispatcher;