diff --git a/src/docker-setup.test.ts b/src/docker-setup.test.ts index cf2a1af2731..e7d9def691c 100644 --- a/src/docker-setup.test.ts +++ b/src/docker-setup.test.ts @@ -88,34 +88,20 @@ describe("docker-setup.sh", () => { it("handles env defaults, home-volume mounts, and apt build args", async () => { const sandbox = await createDockerSetupSandbox(); - const defaultsResult = spawnSync("bash", [sandbox.scriptPath], { - cwd: sandbox.rootDir, - env: createEnv(sandbox, { - OPENCLAW_DOCKER_APT_PACKAGES: undefined, - OPENCLAW_EXTRA_MOUNTS: undefined, - OPENCLAW_HOME_VOLUME: undefined, - }), - stdio: ["ignore", "ignore", "pipe"], - }); - expect(defaultsResult.status).toBe(0); - const defaultsEnvFile = await readFile(join(sandbox.rootDir, ".env"), "utf8"); - expect(defaultsEnvFile).toContain("OPENCLAW_DOCKER_APT_PACKAGES="); - expect(defaultsEnvFile).toContain("OPENCLAW_EXTRA_MOUNTS="); - expect(defaultsEnvFile).toContain("OPENCLAW_HOME_VOLUME="); - - await writeFile(sandbox.logPath, ""); - const aptAndHomeVolumeResult = spawnSync("bash", [sandbox.scriptPath], { + const result = spawnSync("bash", [sandbox.scriptPath], { cwd: sandbox.rootDir, env: createEnv(sandbox, { OPENCLAW_DOCKER_APT_PACKAGES: "ffmpeg build-essential", - OPENCLAW_EXTRA_MOUNTS: "", + OPENCLAW_EXTRA_MOUNTS: undefined, OPENCLAW_HOME_VOLUME: "openclaw-home", }), stdio: ["ignore", "ignore", "pipe"], }); - expect(aptAndHomeVolumeResult.status).toBe(0); - const aptEnvFile = await readFile(join(sandbox.rootDir, ".env"), "utf8"); - expect(aptEnvFile).toContain("OPENCLAW_DOCKER_APT_PACKAGES=ffmpeg build-essential"); + expect(result.status).toBe(0); + const envFile = await readFile(join(sandbox.rootDir, ".env"), "utf8"); + expect(envFile).toContain("OPENCLAW_DOCKER_APT_PACKAGES=ffmpeg build-essential"); + expect(envFile).toContain("OPENCLAW_EXTRA_MOUNTS="); + expect(envFile).toContain("OPENCLAW_HOME_VOLUME=openclaw-home"); const extraCompose = await readFile(join(sandbox.rootDir, "docker-compose.extra.yml"), "utf8"); expect(extraCompose).toContain("openclaw-home:/home/node"); expect(extraCompose).toContain("volumes:"); diff --git a/src/web/auto-reply.web-auto-reply.falls-back-text-media-send-fails.test.ts b/src/web/auto-reply.web-auto-reply.falls-back-text-media-send-fails.test.ts index f4696bdc14f..382d5ea0769 100644 --- a/src/web/auto-reply.web-auto-reply.falls-back-text-media-send-fails.test.ts +++ b/src/web/auto-reply.web-auto-reply.falls-back-text-media-send-fails.test.ts @@ -116,13 +116,13 @@ describe("web auto-reply", () => { fetchMock.mockRestore(); }); - it("compresses media over 5MB and still sends it", async () => { - const sendMedia = vi.fn(); + it("sends media with a caption when delivery succeeds", async () => { + const sendMedia = vi.fn().mockResolvedValue(undefined); const reply = vi.fn().mockResolvedValue(undefined); const sendComposing = vi.fn(); const resolver = vi.fn().mockResolvedValue({ text: "hi", - mediaUrl: "https://example.com/big.png", + mediaUrl: "https://example.com/img.png", }); let capturedOnMessage: @@ -135,23 +135,21 @@ describe("web auto-reply", () => { return { close: vi.fn() }; }; - const bigPng = await sharp({ + const png = await sharp({ create: { - width: 2000, - height: 2000, + width: 64, + height: 64, channels: 3, - background: { r: 255, g: 0, b: 0 }, + background: { r: 0, g: 0, b: 255 }, }, }) - .png({ compressionLevel: 0 }) + .png() .toBuffer(); - expect(bigPng.length).toBeGreaterThan(5 * 1024 * 1024); const fetchMock = vi.spyOn(globalThis, "fetch").mockResolvedValue({ ok: true, body: true, - arrayBuffer: async () => - bigPng.buffer.slice(bigPng.byteOffset, bigPng.byteOffset + bigPng.byteLength), + arrayBuffer: async () => png.buffer.slice(png.byteOffset, png.byteOffset + png.byteLength), headers: { get: () => "image/png" }, status: 200, } as Response); @@ -175,8 +173,8 @@ describe("web auto-reply", () => { caption?: string; mimetype?: string; }; - expect(payload.image.length).toBeLessThanOrEqual(5 * 1024 * 1024); - expect(payload.mimetype).toBe("image/jpeg"); + expect(payload.caption).toBe("hi"); + expect(payload.image.length).toBeGreaterThan(0); // Should not fall back to separate text reply because caption is used. expect(reply).not.toHaveBeenCalled();