siesta-lite
Version:
Stress-free JavaScript unit testing and functional testing tool, works in NodeJS and browsers
70 lines (51 loc) • 2.37 kB
JavaScript
/*
Siesta 5.6.1
Copyright(c) 2009-2022 Bryntum AB
https://bryntum.com/contact
https://bryntum.com/products/siesta/license
*/
Role('Siesta.Launcher.Options.SauceLabs', {
override : {
validate : function () {
if (this.SUPER() === false) return false
var options = this.options
var slUserName = options[ 'saucelabs-user' ]
var slKey = options[ 'saucelabs-key' ]
var slTunneledDomains
var slShortCut = options[ 'saucelabs' ] || options[ 'saucelabs_' ]
if (slShortCut) {
// options w/o values gets `new Boolean(true)` as value
var parts = ((slShortCut instanceof Boolean) && slShortCut == true ? '' : slShortCut).split(',')
slUserName = parts.shift() || process.env.SL_USER
slKey = parts.shift() || process.env.SL_KEY
slTunneledDomains = parts.join(',') || process.env.SL_TUNNEL
if (!slUserName) {
this.printError("No SauceLabs user name found for --saucelabs shortcut")
return false
}
}
if (slUserName && !slKey) {
this.printError("No SauceLabs api key provided, for user name: " + slUserName)
return false
}
if (slUserName && slKey) {
if (options.host) {
this.printError("SauceLabs mode is enaled, but host is already set to: " + options.host)
return false
}
options.host = "http://" + slUserName + ":" + slKey + "@ondemand.saucelabs.com:80/wd/hub"
options.port = 4444
this.debug("--host set to " + options.host.replace(slKey, 'SAUCELABS_API_KEY'))
options.sl = {
userName : slUserName,
key : slKey,
shortCut : slShortCut,
tunneledDomains : slTunneledDomains,
noTunnel : Boolean(options[ 'saucelabs_' ])
}
if (options.build) this.addCapability('build', options.build)
}
return true
}
}
})