diff --git a/extensions/browser/src/browser/config.test.ts b/extensions/browser/src/browser/config.test.ts index 084b506aa7b..c0ab1cff1bf 100644 --- a/extensions/browser/src/browser/config.test.ts +++ b/extensions/browser/src/browser/config.test.ts @@ -168,6 +168,39 @@ describe("browser config", () => { expect(resolved.executablePath).toBeUndefined(); }); + it("expands a bare ~ executablePath to the OS home directory", () => { + const resolved = resolveBrowserConfig({ + executablePath: "~", + }); + + expect(resolved.executablePath).toBe(path.resolve(os.homedir())); + }); + + // Windows-only: on POSIX path.resolve treats `\` as a literal character, + // so "~\foo" cannot resolve to "$HOME/foo". The helper's regex still matches + // a leading `~\` on every platform; we only assert the resolved form where + // the OS path module agrees. + (process.platform === "win32" ? it : it.skip)( + "expands a Windows-style ~\\ executablePath to the OS home directory", + () => { + const resolved = resolveBrowserConfig({ + executablePath: "~\\AppData\\Local\\Chromium\\chrome.exe", + }); + + expect(resolved.executablePath).toBe( + path.resolve(os.homedir(), "AppData/Local/Chromium/chrome.exe"), + ); + }, + ); + + it("does not expand executablePath values where ~ is not the home prefix", () => { + const resolved = resolveBrowserConfig({ + executablePath: "/opt/~chromium/chrome", + }); + + expect(resolved.executablePath).toBe("/opt/~chromium/chrome"); + }); + it("normalizes invalid browser tab cleanup numbers to defaults", () => { const resolved = resolveBrowserConfig({ tabCleanup: {