mirror of
https://github.com/Niko1221/Strata.git
synced 2026-11-11 11:51:29 -10:00
55 lines
2.1 KiB
JavaScript
55 lines
2.1 KiB
JavaScript
/**
|
|
* Where the Chromium binary the probes drive actually lives.
|
|
*
|
|
* The probes launched a fixed macOS cache path, so on Windows and Linux they
|
|
* printed "No cached Chromium found" and every runtime gate (contrast, measure,
|
|
* luminance, motion) was skipped rather than run. Resolution is now a single
|
|
* place with the same order everywhere:
|
|
*
|
|
* 1. STRATA_CHROME — an explicit override, for a CI image or a second Chrome
|
|
* 2. the cached Playwright build (macOS, the original platforms)
|
|
* 3. an installed browser: Chrome, Edge, Chromium
|
|
*
|
|
* `requireChromium` exits with the harness message the scripts already used, so
|
|
* a machine with no browser at all still fails loudly instead of silently
|
|
* passing a gate.
|
|
*/
|
|
import { existsSync } from 'node:fs';
|
|
import { join } from 'node:path';
|
|
import { homedir } from 'node:os';
|
|
|
|
const PLAYWRIGHT_MAC = [
|
|
join(homedir(), 'Library/Caches/ms-playwright/chromium-1234/chrome-mac-arm64/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing'),
|
|
join(homedir(), 'Library/Caches/ms-playwright/chromium_headless_shell-1234/chrome-headless-shell-mac-arm64/chrome-headless-shell'),
|
|
];
|
|
|
|
const INSTALLED = [
|
|
// Windows
|
|
'C:/Program Files/Google/Chrome/Application/chrome.exe',
|
|
'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe',
|
|
'C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe',
|
|
'C:/Program Files/Microsoft/Edge/Application/msedge.exe',
|
|
// macOS
|
|
'/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
|
|
'/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge',
|
|
// Linux
|
|
'/usr/bin/google-chrome',
|
|
'/usr/bin/google-chrome-stable',
|
|
'/usr/bin/chromium',
|
|
'/usr/bin/chromium-browser',
|
|
];
|
|
|
|
export function findChromium() {
|
|
const candidates = [process.env.STRATA_CHROME, ...PLAYWRIGHT_MAC, ...INSTALLED].filter(Boolean);
|
|
return candidates.find((path) => existsSync(path)) ?? null;
|
|
}
|
|
|
|
export function requireChromium() {
|
|
const path = findChromium();
|
|
if (!path) {
|
|
console.error('No Chromium found. Set STRATA_CHROME, or install Chrome, Edge or Chromium.');
|
|
process.exit(2);
|
|
}
|
|
return path;
|
|
}
|