Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | 9x 9x 9x 1x 8x 8x 8x 6x 2x 2x 8x 11x 4x 7x 8x 1x 8x 8x 8x 6x 7x 6x 6x 2x 2x 2x 1x 1x 7x 1x 6x 6x | import Profile from 'firefox-profile'
import { promisify } from 'util'
export default class FirefoxProfileLauncher {
async onPrepare (config, capabilities) {
this.config = config
this.capabilities = capabilities
// Return if no profile options were specified
if (!this.config.firefoxProfile) {
return
}
this.profile = new Profile()
// Set preferences and proxy
this._setPreferences()
if (!Array.isArray(this.config.firefoxProfile.extensions)) {
return this._buildExtension()
}
// Add the extension
await promisify(::this.profile.addExtensions)(this.config.firefoxProfile.extensions)
return this._buildExtension()
}
/**
* Sets any preferences and proxy
*/
_setPreferences () {
for (const [preference, value] of Object.entries(this.config.firefoxProfile)) {
if (['extensions', 'proxy', 'legacy'].includes(preference)) {
continue
}
this.profile.setPreference(preference, value)
}
if (this.config.firefoxProfile.proxy) {
this.profile.setProxy(this.config.firefoxProfile.proxy)
}
this.profile.updatePreferences()
}
async _buildExtension () {
const zippedProfile = await promisify(::this.profile.encoded)()
if (Array.isArray(this.capabilities)) {
this.capabilities
.filter((capability) => capability.browserName === 'firefox')
.forEach((capability) => {
this._setProfile(capability, zippedProfile)
})
return
}
for (const browser in this.capabilities) {
const capability = this.capabilities[browser].capabilities
if (!capability || capability.browserName !== 'firefox') {
continue
}
this._setProfile(capability, zippedProfile)
}
}
_setProfile(capability, zippedProfile) {
if(this.config.firefoxProfile.legacy) {
// for older firefox and geckodriver versions
capability.firefox_profile = zippedProfile
} else {
// for firefox >= 56.0 and geckodriver >= 0.19.0
capability['moz:firefoxOptions'] = capability['moz:firefoxOptions'] || {}
capability['moz:firefoxOptions'].profile = zippedProfile
}
}
}
|