dce-selenium
Version:
Selenium library to simplify testing and automatically snapshot the DOM.
67 lines (59 loc) • 1.98 kB
JavaScript
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;