UNPKG

hurt

Version:

HTTP and SPA routing using RFC 6570 URI templates

83 lines (66 loc) 1.83 kB
import wd from 'wd'; import phantomjs from 'phantomjs-prebuilt'; export function defaults() { const config = { }; if (process.env.SAUCE_USERNAME && process.env.SAUCE_ACCESS_KEY) { config.host = 'ondemand.saucelabs.com'; config.port = 80; config.user = process.env.SAUCE_USERNAME; config.pwd = process.env.SAUCE_ACCESS_KEY; if (process.env.TRAVIS) { config.host = 'localhost'; config.port = 4445; } } return config; } export function capabilities() { const caps = {}; if (process.env.BROWSER) { caps['browserName'] = process.env.BROWSER; if (process.env.BROWSER_VERSION) { caps['version'] = process.env.BROWSER_VERSION; } } if (process.env.PLATFORM) { caps['platform'] = process.env.PLATFORM; } if (process.env.SAUCE_USERNAME && process.env.SAUCE_ACCESS_KEY) { caps['seleniumVersion'] = '3.0.1'; if (process.env.TRAVIS && caps['browserName']) { caps['tunnel-identifier'] = process.env.TRAVIS_JOB_NUMBER; caps['build'] = process.env.TRAVIS_BUILD_NUMBER; } } return caps; } function start(remote, caps) { if (!(caps['browserName'] || caps['tunnel-identifier'])) { return phantomjs.run(`--webdriver=${remote.configUrl.port || 4444}`).then(program => { remote.on('command', (type, command) => { if (type === 'RESPONSE' && /quit\(.*\)/.test(command)) { program.kill(); } }); return remote; }); } return remote; } export function remote(config = {}) { const remote = wd.promiseChainRemote({ ...defaults(), ...config }); const init = remote.init; remote.init = caps => { return remote .resolve(start(remote, caps)) .then(() => { return init.call(remote, caps); }); }; return remote; } export default remote;