nodium
Version:
Pure nodejs selenium webdriver functional helpers
105 lines (82 loc) • 3.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _seleniumWebdriver = require('selenium-webdriver');
var _local = require('./local');
var _local2 = _interopRequireDefault(_local);
var _saucelabs = require('./saucelabs');
var _saucelabs2 = _interopRequireDefault(_saucelabs);
var _browserstack = require('./browserstack');
var _browserstack2 = _interopRequireDefault(_browserstack);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const debug = require('debug')('nodium');
let driver;
if (process.env.BROWSERSTACK) {
const capabilities = {};
const browser = {
name: process.env.SELENIUM_BROWSER || 'chrome',
platform: process.env.BROWSERSTACK_PLATFORM || 'Windows',
resolution: process.env.BROWSERSTACK_RESOLUTION || '1280x1024'
};
if (process.env.BROWSERSTACK_PLATFORM_VERSION) {
browser.platformVersion = process.env.BROWSERSTACK_PLATFORM_VERSION;
}
if (process.env.BROWSERSTACK_VERSION) {
browser.version = process.env.BROWSERSTACK_VERSION;
}
if (process.env.BROWSERSTACK_SELENIUM_VERSION) {
capabilities['browserstack.selenium_version'] = process.env.BROWSERSTACK_SELENIUM_VERSION;
}
const username = process.env.BROWSERSTACK_USER || process.env.BROWSERSTACK_USERNAME;
const accessKey = process.env.BROWSERSTACK_ACCESS_KEY;
const parentModule = module.parent || module;
require('pkginfo')(parentModule, 'name');
const {
exports: { name: project }
} = parentModule;
driver = (0, _browserstack2.default)(username, accessKey, browser, project, 'local', 'local', capabilities);
debug(`Use ${browser.name.toLowerCase()} browser`);
} else if (process.env.SAUCE) {
const browser = {
name: process.env.SELENIUM_BROWSER || 'chrome',
platform: process.env.SAUCE_PLATFORM || 'Windows 10',
resolution: process.env.SAUCE_RESOLUTION || '1280x1024'
};
if (process.env.SAUCE_VERSION) {
browser.version = process.env.SAUCE_VERSION;
} else {
switch (browser.name.toLowerCase()) {
case _seleniumWebdriver.Browser.CHROME:
browser.version = '69';
break;
case _seleniumWebdriver.Browser.FIREFOX:
browser.version = '62';
break;
default:
throw new Error(`Cannot set default version for browser ${browser.name}`);
}
}
const username = process.env.SAUCE_USERNAME;
const accessKey = process.env.SAUCE_ACCESS_KEY;
const parentModule = module.parent || module;
require('pkginfo')(parentModule, 'name');
const {
exports: { name: projectName }
} = parentModule;
driver = (0, _saucelabs2.default)(username, accessKey, browser, projectName);
debug(`Use ${browser.name.toLowerCase()} browser`);
} else {
const binaryPath = process.env.SELENIUM_BROWSER_BINARY_PATH;
if (!binaryPath) {
throw new Error(`You must provide a browser binary path using "SELENIUM_BROWSER_BINARY_PATH" env var.`);
}
const browser = process.env.SELENIUM_BROWSER || _seleniumWebdriver.Browser.FIREFOX;
const options = {
binaryPath,
verbose: !!process.env.VERBOSE_MODE
};
driver = (0, _local2.default)(browser.toLowerCase(), options);
debug(`Use ${browser.toLowerCase()} browser`);
}
exports.default = driver;