diff --git a/packages/sdk-ts/src/browser/localBrowser.ts b/packages/sdk-ts/src/browser/localBrowser.ts index 0697dbf72f..36f88b234d 100644 --- a/packages/sdk-ts/src/browser/localBrowser.ts +++ b/packages/sdk-ts/src/browser/localBrowser.ts @@ -51,6 +51,8 @@ export function localBrowserChromeFlags( const viewport = options.viewport ?? { width: 1280, height: 800 }; const windowSizeFlag = `--window-size=${viewport.width},${viewport.height}`; + // The browser factory installs the packaged runtime through CDP after launch. + // Branded Chrome ignores --load-extension, so do not claim it is preloaded here. return [ ...(includeDefaults ? launcherDefaultFlags.filter( diff --git a/packages/sdk-ts/tests/browser/localBrowser.test.ts b/packages/sdk-ts/tests/browser/localBrowser.test.ts new file mode 100644 index 0000000000..c63a2faaea --- /dev/null +++ b/packages/sdk-ts/tests/browser/localBrowser.test.ts @@ -0,0 +1,45 @@ +import { describe, expect, it } from "vitest"; +import { localBrowserChromeFlags, WEBMCP_CHROME_FLAG } from "../../src/browser/localBrowser.js"; + +describe("localBrowserChromeFlags", () => { + const launcherDefaults = ["--disable-extensions", "--disable-background-networking"]; + + it("keeps extensions enabled for CDP installation without launch-time loading", () => { + expect(localBrowserChromeFlags({}, launcherDefaults, false)).toEqual([ + "--disable-background-networking", + "--enable-unsafe-extension-debugging", + "--remote-allow-origins=*", + "--window-size=1280,800", + WEBMCP_CHROME_FLAG, + ]); + }); + + it("does not inject extension flags when default browser flags are disabled", () => { + expect( + localBrowserChromeFlags( + { ignoreDefaultArgs: true, args: ["--user-supplied"] }, + launcherDefaults, + false, + ), + ).toEqual(["--user-supplied"]); + }); + + it("preserves headless and launch options", () => { + const flags = localBrowserChromeFlags( + { + headless: true, + devtools: true, + args: ["--custom-flag"], + }, + launcherDefaults, + true, + ); + + expect(flags.slice(-4)).toEqual([ + "--headless", + "--auto-open-devtools-for-tabs", + "--no-sandbox", + "--custom-flag", + ]); + }); +});