From d03928bb69af946684bf188635a574b4a76fc1ba Mon Sep 17 00:00:00 2001 From: Benedikt Schackenberg Date: Tue, 17 Feb 2026 17:46:07 +0000 Subject: [PATCH] test: Add tests for headless/noSandbox profile preference MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cover all cases requested in review: 1. headless=true → defaultProfile = 'openclaw' 2. noSandbox=true → defaultProfile = 'openclaw' 3. both false → defaultProfile = 'chrome' (existing behavior) 4. explicit defaultProfile config overrides preference logic 5. custom profiles work in headless mode Fixes: #14895 --- src/browser/config.test.ts | 60 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/src/browser/config.test.ts b/src/browser/config.test.ts index cef7e284d70..6eeeb0f7b98 100644 --- a/src/browser/config.test.ts +++ b/src/browser/config.test.ts @@ -198,4 +198,64 @@ describe("browser config", () => { }); expect(resolved.ssrfPolicy).toEqual({}); }); + + // Tests for headless/noSandbox profile preference (issue #14895) + describe("headless/noSandbox profile preference", () => { + it("defaults to chrome profile when headless=false and noSandbox=false", () => { + const resolved = resolveBrowserConfig({ + headless: false, + noSandbox: false, + }); + expect(resolved.defaultProfile).toBe("chrome"); + }); + + it("prefers openclaw profile when headless=true", () => { + const resolved = resolveBrowserConfig({ + headless: true, + }); + expect(resolved.defaultProfile).toBe("openclaw"); + }); + + it("prefers openclaw profile when noSandbox=true", () => { + const resolved = resolveBrowserConfig({ + noSandbox: true, + }); + expect(resolved.defaultProfile).toBe("openclaw"); + }); + + it("prefers openclaw profile when both headless and noSandbox are true", () => { + const resolved = resolveBrowserConfig({ + headless: true, + noSandbox: true, + }); + expect(resolved.defaultProfile).toBe("openclaw"); + }); + + it("explicit defaultProfile config overrides headless preference", () => { + const resolved = resolveBrowserConfig({ + headless: true, + defaultProfile: "chrome", + }); + expect(resolved.defaultProfile).toBe("chrome"); + }); + + it("explicit defaultProfile config overrides noSandbox preference", () => { + const resolved = resolveBrowserConfig({ + noSandbox: true, + defaultProfile: "chrome", + }); + expect(resolved.defaultProfile).toBe("chrome"); + }); + + it("allows custom profile as default even in headless mode", () => { + const resolved = resolveBrowserConfig({ + headless: true, + defaultProfile: "custom", + profiles: { + custom: { cdpPort: 19999, color: "#00FF00" }, + }, + }); + expect(resolved.defaultProfile).toBe("custom"); + }); + }); });