UNPKG

appium-chromium-driver

Version:

Appium driver for Chromium-based browsers that work with Chromedriver

68 lines (61 loc) 2.16 kB
import {getWindowsExecutableCandidates, readBrowserVersion} from '../utils'; const DEFAULT_WIN_CANDIDATES = () => getWindowsExecutableCandidates( [ 'Google\\Chrome\\Application', 'Google\\Chrome Beta\\Application', 'Google\\Chrome Dev\\Application', 'Google\\Google Chrome for Testing\\Application', 'Chromium\\Application', ], 'chrome.exe', ); const DEFAULT_MAC_CANDIDATES = [ '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', '/Applications/Google Chrome Beta.app/Contents/MacOS/Google Chrome Beta', '/Applications/Google Chrome Dev.app/Contents/MacOS/Google Chrome Dev', '/Applications/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing', '/Applications/Chromium.app/Contents/MacOS/Chromium', ]; const DEFAULT_LINUX_CANDIDATES = [ 'chrome', 'google-chrome', 'google-chrome-beta', 'google-chrome-unstable', 'chromium', 'chromium-browser', ]; /** * List platform-specific Chrome/Chromium browser binary candidates. * @returns A list of executable paths or command names. */ export function listBrowserBinaryCandidates(): string[] { if (process.platform === 'win32') { return DEFAULT_WIN_CANDIDATES(); } else if (process.platform === 'darwin') { return DEFAULT_MAC_CANDIDATES; } return DEFAULT_LINUX_CANDIDATES; } /** * Detect installed Chrome/Chromium browser version from explicit binary or default candidates. * @param browserBinary Optional explicit browser binary path or command. * @returns Detected browser version. */ export async function detectBrowserVersion(browserBinary?: string): Promise<string> { if (browserBinary) { const version = await readBrowserVersion(browserBinary); if (version) { return version; } throw new Error(`Could not determine browser version from binary: ${browserBinary}`); } const candidates = listBrowserBinaryCandidates(); for (const binary of candidates) { const version = await readBrowserVersion(binary); if (version) { return version; } } throw new Error(`Could not determine browser version from candidates: ${candidates.join(', ')}`); }