From 787bed49966bfbb1d6f9e22a874984ff9c50cc24 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 18 Jan 2026 03:40:23 +0000 Subject: [PATCH] test: stabilize doctor + pi-embedded suites --- ...-user-assistant-after-existing-transcript.test.ts | 12 ++++++++---- ...writes-models-json-into-provided-agentdir.test.ts | 12 ++++++++---- ...r.falls-back-legacy-sandbox-image-missing.test.ts | 1 + ...ing-allowfrom-channels-whatsapp-allowfrom.test.ts | 1 + ...-legacy-state-migrations-yes-mode-without.test.ts | 1 + ...ns-per-agent-sandbox-docker-browser-prune.test.ts | 1 + .../doctor.warns-state-directory-is-missing.test.ts | 1 + 7 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/agents/pi-embedded-runner.run-embedded-pi-agent.appends-new-user-assistant-after-existing-transcript.test.ts b/src/agents/pi-embedded-runner.run-embedded-pi-agent.appends-new-user-assistant-after-existing-transcript.test.ts index 3f7e5637a..cbd8d7619 100644 --- a/src/agents/pi-embedded-runner.run-embedded-pi-agent.appends-new-user-assistant-after-existing-transcript.test.ts +++ b/src/agents/pi-embedded-runner.run-embedded-pi-agent.appends-new-user-assistant-after-existing-transcript.test.ts @@ -1,7 +1,7 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import { describe, expect, it, vi } from "vitest"; +import { beforeEach, describe, expect, it, vi } from "vitest"; import type { ClawdbotConfig } from "../config/config.js"; import { ensureClawdbotModelsJson } from "./models-config.js"; @@ -85,9 +85,13 @@ vi.mock("@mariozechner/pi-ai", async () => { }; }); -vi.resetModules(); +let runEmbeddedPiAgent: typeof import("./pi-embedded-runner.js").runEmbeddedPiAgent; -const { runEmbeddedPiAgent } = await import("./pi-embedded-runner.js"); +beforeEach(async () => { + vi.useRealTimers(); + vi.resetModules(); + ({ runEmbeddedPiAgent } = await import("./pi-embedded-runner.js")); +}); const makeOpenAiConfig = (modelIds: string[]) => ({ @@ -213,7 +217,7 @@ describe("runEmbeddedPiAgent", () => { expect(seedAssistantIndex).toBeGreaterThan(seedUserIndex); expect(newUserIndex).toBeGreaterThan(seedAssistantIndex); expect(newAssistantIndex).toBeGreaterThan(newUserIndex); - }, 20_000); + }, 45_000); it("persists multi-turn user/assistant ordering across runs", async () => { const agentDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-agent-")); const workspaceDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-workspace-")); diff --git a/src/agents/pi-embedded-runner.run-embedded-pi-agent.writes-models-json-into-provided-agentdir.test.ts b/src/agents/pi-embedded-runner.run-embedded-pi-agent.writes-models-json-into-provided-agentdir.test.ts index 1c9574f22..e15d79d43 100644 --- a/src/agents/pi-embedded-runner.run-embedded-pi-agent.writes-models-json-into-provided-agentdir.test.ts +++ b/src/agents/pi-embedded-runner.run-embedded-pi-agent.writes-models-json-into-provided-agentdir.test.ts @@ -1,7 +1,7 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import { describe, expect, it, vi } from "vitest"; +import { beforeEach, describe, expect, it, vi } from "vitest"; import type { ClawdbotConfig } from "../config/config.js"; import { ensureClawdbotModelsJson } from "./models-config.js"; @@ -85,9 +85,13 @@ vi.mock("@mariozechner/pi-ai", async () => { }; }); -vi.resetModules(); +let runEmbeddedPiAgent: typeof import("./pi-embedded-runner.js").runEmbeddedPiAgent; -const { runEmbeddedPiAgent } = await import("./pi-embedded-runner.js"); +beforeEach(async () => { + vi.useRealTimers(); + vi.resetModules(); + ({ runEmbeddedPiAgent } = await import("./pi-embedded-runner.js")); +}); const makeOpenAiConfig = (modelIds: string[]) => ({ @@ -188,7 +192,7 @@ describe("runEmbeddedPiAgent", () => { await expect(fs.stat(path.join(agentDir, "models.json"))).resolves.toBeTruthy(); }); - it("persists the first user message before assistant output", { timeout: 15_000 }, async () => { + it("persists the first user message before assistant output", { timeout: 45_000 }, async () => { const agentDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-agent-")); const workspaceDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-workspace-")); const sessionFile = path.join(workspaceDir, "session.jsonl"); diff --git a/src/commands/doctor.falls-back-legacy-sandbox-image-missing.test.ts b/src/commands/doctor.falls-back-legacy-sandbox-image-missing.test.ts index 1c4d67f00..049ca35c6 100644 --- a/src/commands/doctor.falls-back-legacy-sandbox-image-missing.test.ts +++ b/src/commands/doctor.falls-back-legacy-sandbox-image-missing.test.ts @@ -248,6 +248,7 @@ vi.mock("../telegram/pairing-store.js", () => ({ vi.mock("../pairing/pairing-store.js", () => ({ readChannelAllowFromStore: vi.fn().mockResolvedValue([]), + upsertChannelPairingRequest: vi.fn().mockResolvedValue({ code: "", created: false }), })); vi.mock("../telegram/token.js", () => ({ diff --git a/src/commands/doctor.migrates-routing-allowfrom-channels-whatsapp-allowfrom.test.ts b/src/commands/doctor.migrates-routing-allowfrom-channels-whatsapp-allowfrom.test.ts index 46d0d2cb2..bc0c7747d 100644 --- a/src/commands/doctor.migrates-routing-allowfrom-channels-whatsapp-allowfrom.test.ts +++ b/src/commands/doctor.migrates-routing-allowfrom-channels-whatsapp-allowfrom.test.ts @@ -248,6 +248,7 @@ vi.mock("../telegram/pairing-store.js", () => ({ vi.mock("../pairing/pairing-store.js", () => ({ readChannelAllowFromStore: vi.fn().mockResolvedValue([]), + upsertChannelPairingRequest: vi.fn().mockResolvedValue({ code: "", created: false }), })); vi.mock("../telegram/token.js", () => ({ diff --git a/src/commands/doctor.runs-legacy-state-migrations-yes-mode-without.test.ts b/src/commands/doctor.runs-legacy-state-migrations-yes-mode-without.test.ts index c00121a6d..62df3b6c2 100644 --- a/src/commands/doctor.runs-legacy-state-migrations-yes-mode-without.test.ts +++ b/src/commands/doctor.runs-legacy-state-migrations-yes-mode-without.test.ts @@ -248,6 +248,7 @@ vi.mock("../telegram/pairing-store.js", () => ({ vi.mock("../pairing/pairing-store.js", () => ({ readChannelAllowFromStore: vi.fn().mockResolvedValue([]), + upsertChannelPairingRequest: vi.fn().mockResolvedValue({ code: "", created: false }), })); vi.mock("../telegram/token.js", () => ({ diff --git a/src/commands/doctor.warns-per-agent-sandbox-docker-browser-prune.test.ts b/src/commands/doctor.warns-per-agent-sandbox-docker-browser-prune.test.ts index 4c019ed9d..5abf068c5 100644 --- a/src/commands/doctor.warns-per-agent-sandbox-docker-browser-prune.test.ts +++ b/src/commands/doctor.warns-per-agent-sandbox-docker-browser-prune.test.ts @@ -248,6 +248,7 @@ vi.mock("../telegram/pairing-store.js", () => ({ vi.mock("../pairing/pairing-store.js", () => ({ readChannelAllowFromStore: vi.fn().mockResolvedValue([]), + upsertChannelPairingRequest: vi.fn().mockResolvedValue({ code: "", created: false }), })); vi.mock("../telegram/token.js", () => ({ diff --git a/src/commands/doctor.warns-state-directory-is-missing.test.ts b/src/commands/doctor.warns-state-directory-is-missing.test.ts index 78b600f74..08292689e 100644 --- a/src/commands/doctor.warns-state-directory-is-missing.test.ts +++ b/src/commands/doctor.warns-state-directory-is-missing.test.ts @@ -248,6 +248,7 @@ vi.mock("../telegram/pairing-store.js", () => ({ vi.mock("../pairing/pairing-store.js", () => ({ readChannelAllowFromStore: vi.fn().mockResolvedValue([]), + upsertChannelPairingRequest: vi.fn().mockResolvedValue({ code: "", created: false }), })); vi.mock("../telegram/token.js", () => ({