2019-06-03 20:48:40 +00:00
|
|
|
import puppeteer from 'puppeteer';
|
2019-06-03 20:24:10 +00:00
|
|
|
|
2019-11-15 17:59:29 +00:00
|
|
|
export interface IEnvAwareOptions {
|
|
|
|
forceNoSandbox?: boolean;
|
|
|
|
}
|
|
|
|
|
|
|
|
export const getEnvAwareBrowserInstance = async (optionsArg: IEnvAwareOptions = {}): Promise<puppeteer.Browser> => {
|
|
|
|
const options: IEnvAwareOptions = {
|
|
|
|
...{
|
|
|
|
forceNoSandbox: false
|
|
|
|
},
|
|
|
|
...optionsArg
|
|
|
|
}
|
|
|
|
|
2019-06-03 20:48:40 +00:00
|
|
|
let chromeArgs: string[] = [];
|
2019-11-15 17:59:29 +00:00
|
|
|
if (process.env.CI || options.forceNoSandbox) {
|
2019-06-03 20:48:40 +00:00
|
|
|
chromeArgs = chromeArgs.concat(['--no-sandbox', '--disable-setuid-sandbox']);
|
|
|
|
}
|
|
|
|
const headlessBrowser = await puppeteer.launch({
|
|
|
|
args: chromeArgs
|
|
|
|
});
|
|
|
|
return headlessBrowser;
|
|
|
|
};
|
|
|
|
|
|
|
|
export { puppeteer };
|