UNPKG

dce-selenium

Version:

Selenium library to simplify testing and automatically snapshot the DOM.

67 lines (59 loc) 1.98 kB
const webdriver = require('selenium-webdriver'); const chrome = require('selenium-webdriver/chrome'); const safari = require('selenium-webdriver/safari'); // Import local modules const Driver = require('./classes/Driver'); const consoleLog = require('./consoleLog'); /** * Creates a new driver * @param {string} [browser=safari] - the browser to use (Firefox, Chrome, etc) * @return {selenium-webdriver} webdriver instance */ function buildDriver(log) { let capabilities; const { browser, headless } = global.dceSeleniumConfig; if (browser === 'firefox') { capabilities = webdriver.Capabilities.firefox().set( 'acceptInsecureCerts', true ); } else if (browser === 'chrome') { capabilities = webdriver.Capabilities.chrome(); } else { capabilities = webdriver.Capabilities.safari(); } try { // Create a selenium webdriver let driver = new webdriver.Builder() .withCapabilities(capabilities); // Add chrome options if applicable if (headless && browser === 'chrome') { const chromeOptions = new chrome.Options(); chromeOptions.addArguments('headless'); // chromeOptions.addArguments('start-fullscreen'); // chromeOptions.addArguments('disable-infobars'); driver = driver.setChromeOptions(chromeOptions); } // Add safari options if applicable if (browser === 'safari-technology-preview') { const safariOptions = new safari.Options(); safariOptions.setTechnologyPreview(true); driver = driver.setSafariOptions(safariOptions); } // Build the driver driver = driver.build(); const metaDriver = new Driver(driver, log); metaDriver.BACKSPACE = '\b'; return metaDriver; } catch (err) { consoleLog('\nAn error occurred while trying to set up the webdriver:'); consoleLog(err.message); consoleLog(''); process.exit(0); } } /** * Creates a new window and a new dceDriver instance * */ module.exports = buildDriver;