@cityssm/puppeteer-launch
Version:
Launch Puppeteer, falling back to system browsers when the cached ones aren't working or aren't available.
43 lines (42 loc) • 1.42 kB
JavaScript
import hasPackage from '@cityssm/has-package';
let browsersLoaded = false;
let chromeBrowsers = [];
let firefoxBrowsers = [];
async function loadUserBrowsers() {
if (!await hasPackage('@cityssm/web-browser-info')) {
return;
}
const { chromeWebBrowserTypes, getInstalledWebBrowsers } = await import('@cityssm/web-browser-info');
if (!browsersLoaded) {
/*
* Load Chrome first
*/
const fallbackChromeBrowsers = await getInstalledWebBrowsers(chromeWebBrowserTypes, 110);
chromeBrowsers = fallbackChromeBrowsers;
/*
* Load Firefox
*/
const fallbackFirefoxBrowsers = await getInstalledWebBrowsers('firefox');
firefoxBrowsers = fallbackFirefoxBrowsers;
// eslint-disable-next-line require-atomic-updates
browsersLoaded = true;
}
}
/**
* Gets the path to the user's Chrome browser.
* @returns The path to the user's Chrome browser, or undefined if not found.
*/
export async function getUserChromePath() {
await loadUserBrowsers();
const chromePath = chromeBrowsers[0]?.command;
return chromePath;
}
/**
* Gets the path to the user's Firefox browser.
* @returns The path to the user's Firefox browser, or undefined if not found.
*/
export async function getUserFirefoxPath() {
await loadUserBrowsers();
const firefoxPath = firefoxBrowsers[0]?.command;
return firefoxPath;
}