From 66f94104c68c5ab602d6f196de0ac1a6bb27a1e2 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 23 Apr 2026 06:01:37 +0100 Subject: [PATCH] test: trim slow CI hotspot coverage --- .../src/monitor.webhook-security.test.ts | 12 +++++- .../pi-embedded-runner.splitsdktools.test.ts | 15 +++++++ .../run/attempt.tool-allowlist.test.ts | 39 ------------------- .../reply/followup-delivery.test.ts | 16 -------- 4 files changed, 25 insertions(+), 57 deletions(-) delete mode 100644 src/agents/pi-embedded-runner/run/attempt.tool-allowlist.test.ts diff --git a/extensions/feishu/src/monitor.webhook-security.test.ts b/extensions/feishu/src/monitor.webhook-security.test.ts index fbb0a780ef9..344897f1a14 100644 --- a/extensions/feishu/src/monitor.webhook-security.test.ts +++ b/extensions/feishu/src/monitor.webhook-security.test.ts @@ -28,6 +28,14 @@ vi.mock("@larksuiteoapi/node-sdk", () => ({ ), })); +vi.mock("./monitor.state.js", async (importOriginal) => { + const actual = await importOriginal(); + return { + ...actual, + FEISHU_WEBHOOK_BODY_TIMEOUT_MS: 50, + }; +}); + import type { RuntimeEnv } from "../runtime-api.js"; import { clearFeishuWebhookRateLimitStateForTest, @@ -197,10 +205,10 @@ describe("Feishu webhook security hardening", () => { }, monitorFeishuProvider, async (url) => { - const result = await waitForSlowBodyTimeoutResponse(url, 15_000); + const result = await waitForSlowBodyTimeoutResponse(url, 1_000); expect(result.body).toContain("408 Request Timeout"); expect(result.body).toContain("Request body timeout"); - expect(result.elapsedMs).toBeLessThan(12_000); + expect(result.elapsedMs).toBeLessThan(500); }, ); }); diff --git a/src/agents/pi-embedded-runner.splitsdktools.test.ts b/src/agents/pi-embedded-runner.splitsdktools.test.ts index b950405b03b..084ddc872b7 100644 --- a/src/agents/pi-embedded-runner.splitsdktools.test.ts +++ b/src/agents/pi-embedded-runner.splitsdktools.test.ts @@ -1,5 +1,9 @@ import { describe, expect, it } from "vitest"; import { splitSdkTools } from "./pi-embedded-runner.js"; +import { + collectRegisteredToolNames, + toSessionToolAllowlist, +} from "./pi-embedded-runner/tool-name-allowlist.js"; import { createStubTool } from "./test-helpers/pi-tool-stubs.js"; describe("splitSdkTools", () => { @@ -38,4 +42,15 @@ describe("splitSdkTools", () => { "browser", ]); }); + + it("keeps OpenClaw-managed custom tools in Pi's session allowlist", () => { + const { customTools } = splitSdkTools({ + tools: [createStubTool("read"), createStubTool("sessions_spawn")], + sandboxEnabled: true, + }); + const allowlist = toSessionToolAllowlist(collectRegisteredToolNames(customTools)); + + expect(customTools.map((tool) => tool.name)).toContain("sessions_spawn"); + expect(allowlist).toContain("sessions_spawn"); + }); }); diff --git a/src/agents/pi-embedded-runner/run/attempt.tool-allowlist.test.ts b/src/agents/pi-embedded-runner/run/attempt.tool-allowlist.test.ts deleted file mode 100644 index 2aa3d43ebd5..00000000000 --- a/src/agents/pi-embedded-runner/run/attempt.tool-allowlist.test.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { afterEach, beforeEach, describe, expect, it } from "vitest"; -import { - cleanupTempPaths, - createContextEngineAttemptRunner, - createContextEngineBootstrapAndAssemble, - getHoisted, - resetEmbeddedAttemptHarness, -} from "./attempt.spawn-workspace.test-support.js"; - -const hoisted = getHoisted(); - -describe("runEmbeddedAttempt tool allowlist", () => { - const tempPaths: string[] = []; - - beforeEach(() => { - resetEmbeddedAttemptHarness(); - }); - - afterEach(async () => { - await cleanupTempPaths(tempPaths); - }); - - it("passes OpenClaw-managed custom tool names to Pi's session allowlist", async () => { - await createContextEngineAttemptRunner({ - sessionKey: "agent:qa:repo-contract", - tempPaths, - contextEngine: createContextEngineBootstrapAndAssemble(), - }); - - const options = hoisted.createAgentSessionMock.mock.calls.at(-1)?.[0] as - | { - customTools?: Array<{ name?: string }>; - tools?: string[]; - } - | undefined; - expect(options?.customTools?.map((tool) => tool.name)).toContain("sessions_spawn"); - expect(options?.tools).toContain("sessions_spawn"); - }); -}); diff --git a/src/auto-reply/reply/followup-delivery.test.ts b/src/auto-reply/reply/followup-delivery.test.ts index fac1f4a21a9..290dba629c4 100644 --- a/src/auto-reply/reply/followup-delivery.test.ts +++ b/src/auto-reply/reply/followup-delivery.test.ts @@ -67,20 +67,4 @@ describe("resolveFollowupDeliveryPayloads", () => { }), ).toEqual([]); }); - - it("does not suppress replies when account differs", () => { - expect( - resolveFollowupDeliveryPayloads({ - cfg: baseConfig, - payloads: [{ text: "hello world!" }], - messageProvider: "heartbeat", - originatingChannel: "telegram", - originatingTo: "268300329", - originatingAccountId: "personal", - sentTargets: [ - { tool: "telegram", provider: "telegram", to: "268300329", accountId: "work" }, - ], - }), - ).toEqual([{ text: "hello world!" }]); - }); });