siesta-lite
Version:
Stress-free JavaScript unit testing and functional testing tool, works in NodeJS and browsers
122 lines (84 loc) • 3.38 kB
JavaScript
/*
Siesta 5.6.1
Copyright(c) 2009-2022 Bryntum AB
https://bryntum.com/contact
https://bryntum.com/products/siesta/license
*/
Class('Siesta.Launcher.Options.WebDriver', {
isa : Siesta.Launcher.Options.Base,
does : [
Siesta.Launcher.Options.Simulation,
Siesta.Launcher.Options.Proxy,
Siesta.Launcher.Options.BrowserStack,
Siesta.Launcher.Options.SauceLabs,
Siesta.Launcher.Options.LambdaTest
],
has : {
knownBrowsers : {
init : {
firefox : true,
'internet explorer' : true,
safari : true,
chrome : true,
MicrosoftEdge : true
}
}
},
methods : {
addCapability : function (name, value) {
var options = this.options
options.caps[ name ] = value
options.cap.push(name + '=' + value)
},
getBrowserName : function () {
var options = this.options
return options.caps.browserName || options.browser
},
validate : function () {
var options = this.options
// prepare capabilities
var caps = options[ 'cap' ] || []
if (!(caps instanceof Array)) caps = [ caps ]
options.cap = caps
options.caps = {}
Joose.A.each(caps, function (value) {
var split = String(value).split(/\s*=\s*/)
options.caps[ split[ 0 ] ] = split[ 1 ]
})
// need to have "caps" populated for preparing the report file name
if (this.SUPER() === false) return false
// prepare browser args
var browserArgs = options[ 'browser-arg' ] || []
if (!(browserArgs instanceof Array)) browserArgs = [ browserArgs ]
options[ 'browser-arg' ] = browserArgs
// prepare firefox prefs
var ffPrefs = options[ 'ff-pref' ] || []
if (!(ffPrefs instanceof Array)) ffPrefs = [ ffPrefs ]
options[ 'ff-pref' ] = ffPrefs
// prepare browser name, default value should be set outside of the `getBrowserName`
var browser = (this.getBrowserName() || 'chrome').toLowerCase()
if (browser == 'ie') browser = 'internet explorer'
if (browser == 'edge' || browser == 'microsoftedge') browser = 'MicrosoftEdge'
if (!this.knownBrowsers[ browser ]) {
this.printError("Unknown browser: " + browser)
return false
}
options.browser = browser
// the value is already normalized by the Simulation role
if (options.xvfb) {
this.launcher.sharedNativeSimulator = false
}
return true
},
getReportFileNameTemplateReplacer : function () {
var options = this.options
var caps = options.caps
return function (m, match) {
if (caps && caps.hasOwnProperty(match))
return caps[ match ]
else
return options[ match ]
}
}
}
})