From 88033002ba19b62171fbc5b70e3aed3f24c4dad1 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 16 Feb 2026 02:00:59 +0000 Subject: [PATCH] test: consolidate nodes screen helpers --- src/cli/nodes-camera.test.ts | 50 ++++++++++++++++++++++++++++++++++++ src/cli/nodes-screen.test.ts | 37 -------------------------- 2 files changed, 50 insertions(+), 37 deletions(-) delete mode 100644 src/cli/nodes-screen.test.ts diff --git a/src/cli/nodes-camera.test.ts b/src/cli/nodes-camera.test.ts index 63e1b1a4da8..e4a05f66f30 100644 --- a/src/cli/nodes-camera.test.ts +++ b/src/cli/nodes-camera.test.ts @@ -9,6 +9,7 @@ import { writeBase64ToFile, writeUrlToFile, } from "./nodes-camera.js"; +import { parseScreenRecordPayload, screenRecordTempPath } from "./nodes-screen.js"; describe("nodes camera helpers", () => { it("parses camera.snap payload", () => { @@ -104,3 +105,52 @@ describe("nodes camera helpers", () => { ); }); }); + +describe("nodes screen helpers", () => { + it("parses screen.record payload", () => { + const payload = parseScreenRecordPayload({ + format: "mp4", + base64: "Zm9v", + durationMs: 1000, + fps: 12, + screenIndex: 0, + hasAudio: true, + }); + expect(payload.format).toBe("mp4"); + expect(payload.base64).toBe("Zm9v"); + expect(payload.durationMs).toBe(1000); + expect(payload.fps).toBe(12); + expect(payload.screenIndex).toBe(0); + expect(payload.hasAudio).toBe(true); + }); + + it("drops invalid optional fields instead of throwing", () => { + const payload = parseScreenRecordPayload({ + format: "mp4", + base64: "Zm9v", + durationMs: "nope", + fps: null, + screenIndex: "0", + hasAudio: 1, + }); + expect(payload.durationMs).toBeUndefined(); + expect(payload.fps).toBeUndefined(); + expect(payload.screenIndex).toBeUndefined(); + expect(payload.hasAudio).toBeUndefined(); + }); + + it("rejects invalid screen.record payload", () => { + expect(() => parseScreenRecordPayload({ format: "mp4" })).toThrow( + /invalid screen\.record payload/i, + ); + }); + + it("builds screen record temp path", () => { + const p = screenRecordTempPath({ + ext: "mp4", + tmpDir: "/tmp", + id: "id1", + }); + expect(p).toBe(path.join("/tmp", "openclaw-screen-record-id1.mp4")); + }); +}); diff --git a/src/cli/nodes-screen.test.ts b/src/cli/nodes-screen.test.ts deleted file mode 100644 index 5aa6dfe8361..00000000000 --- a/src/cli/nodes-screen.test.ts +++ /dev/null @@ -1,37 +0,0 @@ -import path from "node:path"; -import { describe, expect, it } from "vitest"; -import { parseScreenRecordPayload, screenRecordTempPath } from "./nodes-screen.js"; - -describe("nodes screen helpers", () => { - it("parses screen.record payload", () => { - const payload = parseScreenRecordPayload({ - format: "mp4", - base64: "Zm9v", - durationMs: 1000, - fps: 12, - screenIndex: 0, - hasAudio: true, - }); - expect(payload.format).toBe("mp4"); - expect(payload.base64).toBe("Zm9v"); - expect(payload.durationMs).toBe(1000); - expect(payload.fps).toBe(12); - expect(payload.screenIndex).toBe(0); - expect(payload.hasAudio).toBe(true); - }); - - it("rejects invalid screen.record payload", () => { - expect(() => parseScreenRecordPayload({ format: "mp4" })).toThrow( - /invalid screen\.record payload/i, - ); - }); - - it("builds screen record temp path", () => { - const p = screenRecordTempPath({ - ext: "mp4", - tmpDir: "/tmp", - id: "id1", - }); - expect(p).toBe(path.join("/tmp", "openclaw-screen-record-id1.mp4")); - }); -});