gemini-sauce
Version:
Plugin for starting up Sauce Connect when running tests with Gemini
53 lines (42 loc) • 1.25 kB
JavaScript
var _ = require('lodash');
var cleankill = require('cleankill');
var sauceConnect = require('sauce-connect-launcher');
var uuid = require('uuid');
function Sauce() {
var _tunnel;
function stop(done) {
console.log('Closing Sauce Connect.');
if(_tunnel) {
_tunnel.close(function() {
console.log('Sauce Connect closed.');
_tunnel = null;
done();
});
} else {
sauceConnect.kill.bind(sauceConnect);
done();
}
};
return {
start: function(opts, done) {
if(_tunnel) {
throw Error('Tunnel already opened.');
};
var connectOptions = {
tunnelIdentifier: uuid.v4()
};
_.defaults(connectOptions, opts);
var gridUrl = 'http://' + connectOptions.username + ':' + connectOptions.accessKey + '@ondemand.saucelabs.com:80/wd/hub';
console.log('Sauce Connect opening tunnel.')
sauceConnect(connectOptions, function(err, tunnel) {
if(err) throw err;
console.log('Sauce Connect ready.');
_tunnel = tunnel;
done({gridUrl: gridUrl, tunnelId: connectOptions.tunnelIdentifier});
});
cleankill.onInterrupt(stop);
},
stop: stop
};
}
module.exports = Sauce;