| 4 | let serviceInitialized = false; |
| 5 | |
| 6 | export function createWebDriver(): webdriver.WebDriver { |
| 7 | const chromeDriverBin = process.env['CHROMEDRIVER_BIN'] || process.env['CHROMEDRIVER']; |
| 8 | if (!serviceInitialized && chromeDriverBin) { |
| 9 | const service = new chrome.ServiceBuilder(chromeDriverBin).build(); |
| 10 | chrome.setDefaultService(service); |
| 11 | serviceInitialized = true; |
| 12 | } |
| 13 | |
| 14 | const options = new chrome.Options(); |
| 15 | const chromeBin = process.env['CHROME_BIN'] || process.env['CHROME_HEADLESS_BIN']; |
| 16 | if (chromeBin) { |
| 17 | options.setChromeBinaryPath(chromeBin); |
| 18 | } |
| 19 | options.headless(); |
| 20 | options.addArguments( |
| 21 | '--no-sandbox', |
| 22 | '--headless', |
| 23 | '--disable-gpu', |
| 24 | '--disable-dev-shm-usage', |
| 25 | '--hide-scrollbars', |
| 26 | '--mute-audio', |
| 27 | ); |
| 28 | |
| 29 | return new webdriver.Builder().forBrowser('chrome').setChromeOptions(options).build(); |
| 30 | } |
| 31 | |
| 32 | export async function verifyNoBrowserErrors(driver: webdriver.WebDriver): Promise<void> { |
| 33 | const logs = await driver.manage().logs().get(webdriver.logging.Type.BROWSER); |