wdio-sauce-service
Version:
WebdriverIO service for better Sauce Labs integration
70 lines (55 loc) • 2.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _sauceConnectLauncher = require('sauce-connect-launcher');
var _sauceConnectLauncher2 = _interopRequireDefault(_sauceConnectLauncher);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class SauceLaunchService {
/**
* modify config and launch sauce connect
*/
onPrepare(config, capabilities) {
if (!config.sauceConnect) {
return;
}
this.sauceConnectOpts = _extends({
username: config.user,
accessKey: config.key
}, config.sauceConnectOpts);
config.protocol = 'http';
config.host = 'localhost';
config.port = this.sauceConnectOpts.port || 4445;
const sauceConnectTunnelIdentifier = this.sauceConnectOpts.tunnelIdentifier;
if (sauceConnectTunnelIdentifier) {
if (Array.isArray(capabilities)) {
capabilities.forEach(capability => {
capability.tunnelIdentifier = capability.tunnelIdentifier || sauceConnectTunnelIdentifier;
});
} else {
Object.keys(capabilities).forEach(browser => {
capabilities[browser].desiredCapabilities.tunnelIdentifier = capabilities[browser].desiredCapabilities.tunnelIdentifier || sauceConnectTunnelIdentifier;
});
}
}
return new Promise((resolve, reject) => (0, _sauceConnectLauncher2.default)(this.sauceConnectOpts, (err, sauceConnectProcess) => {
if (err) {
return reject(err);
}
this.sauceConnectProcess = sauceConnectProcess;
resolve();
}));
}
/**
* shut down sauce connect
*/
onComplete() {
if (!this.sauceConnectProcess) {
return;
}
return new Promise(resolve => this.sauceConnectProcess.close(resolve));
}
}
exports.default = SauceLaunchService;
module.exports = exports['default'];