Skip to content

Commit 471cd32

Browse files
authored
fix(smoke): find the Windows headless shell in the browser smoke launcher (#5128)
1 parent e4b8d59 commit 471cd32

1 file changed

Lines changed: 11 additions & 3 deletions

File tree

‎examples/dashboard-browser-smoke-support.mjs‎

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ export function loadPlaywright() {
3434
throw new Error("Playwright package not found; install playwright or set LOOPX_PLAYWRIGHT_PACKAGE");
3535
}
3636

37+
// Playwright names the shell `chrome-headless-shell` on POSIX and
38+
// `chrome-headless-shell.exe` on Windows.
39+
const CHROME_HEADLESS_SHELL_NAMES = new Set(["chrome-headless-shell", "chrome-headless-shell.exe"]);
40+
3741
function findChromeHeadlessShell(root) {
3842
if (!existsSync(root)) {
3943
return null;
@@ -46,7 +50,7 @@ function findChromeHeadlessShell(root) {
4650
const path = resolve(current, entry.name);
4751
if (entry.isDirectory()) {
4852
pending.push(path);
49-
} else if (entry.isFile() && entry.name === "chrome-headless-shell") {
53+
} else if (entry.isFile() && CHROME_HEADLESS_SHELL_NAMES.has(entry.name)) {
5054
matches.push(path);
5155
}
5256
}
@@ -58,10 +62,14 @@ export async function launchBrowser(chromium) {
5862
const configuredPath = process.env.LOOPX_CHROME_HEADLESS_SHELL;
5963
const playwrightPath = chromium.executablePath();
6064
const executablePath = [configuredPath, playwrightPath]
61-
.find((candidate) => candidate && basename(candidate) === "chrome-headless-shell" && existsSync(candidate))
65+
.find((candidate) => candidate && CHROME_HEADLESS_SHELL_NAMES.has(basename(candidate)) && existsSync(candidate))
6266
?? findChromeHeadlessShell(resolve(homedir(), ".cache/hyperframes/chrome"))
6367
?? findChromeHeadlessShell(resolve(homedir(), ".cache/ms-playwright"))
64-
?? findChromeHeadlessShell(resolve(homedir(), "Library/Caches/ms-playwright"));
68+
?? findChromeHeadlessShell(resolve(homedir(), "Library/Caches/ms-playwright"))
69+
// Windows installs the browser cache under %LOCALAPPDATA% instead.
70+
?? (process.env.LOCALAPPDATA
71+
? findChromeHeadlessShell(resolve(process.env.LOCALAPPDATA, "ms-playwright"))
72+
: null);
6573
if (!executablePath) {
6674
throw new Error("chrome-headless-shell not found; set LOOPX_CHROME_HEADLESS_SHELL");
6775
}

0 commit comments

Comments
 (0)