UNPKG

nodium

Version:

Pure nodejs selenium webdriver functional helpers

102 lines (88 loc) 3.19 kB
import { Browser } from 'selenium-webdriver'; import getLocalDriver from './local'; import getSauceLabsDriver from './saucelabs'; import getBrowserstackDriver from './browserstack'; 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 = getBrowserstackDriver( 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 Browser.CHROME: browser.version = '69'; break; case 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 = getSauceLabsDriver(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 || Browser.FIREFOX; const options = { binaryPath, verbose: !!process.env.VERBOSE_MODE, }; driver = getLocalDriver(browser.toLowerCase(), options); debug(`Use ${browser.toLowerCase()} browser`); } export default driver;