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 83 84 85 86 87 88 89 90 | 1x 8x 2x 6x 6x 6x 4x 6x 2x 1x 1x 5x 5x 5x 1x 4x 4x 4x 1x 1x 4x 1x 3x 1x 2x 2x 2x 1x 1x 1x 1x 1x 1x | import BrowserstackLocalLauncher from 'browserstack-local'
import logger from '@wdio/logger'
const log = logger('@wdio/browserstack-service')
export default class BrowserstackLauncherService {
onPrepare(config, capabilities) {
if (!config.browserstackLocal) {
return log.info('browserstackLocal is not enabled - skipping...')
}
const opts = {
key: config.key,
forcelocal: true,
onlyAutomate: true,
...config.browserstackOpts
}
this.browserstackLocal = new BrowserstackLocalLauncher.Local()
if (Array.isArray(capabilities)) {
capabilities.forEach(capability => {
capability['browserstack.local'] = true
})
} else if (typeof capabilities === 'object') {
capabilities['browserstack.local'] = true
} else {
throw TypeError('Capabilities should be an object or Array!')
}
let timer
return Promise.race([
new Promise((resolve, reject) => {
this.browserstackLocal.start(opts, err => {
if (err) {
return reject(err)
}
resolve()
})
}),
new Promise((resolve, reject) => {
/* istanbul ignore next */
timer = setTimeout(function () {
reject('Browserstack Local failed to start within 60 seconds!')
}, 60000)
})]
).then(function (result) {
clearTimeout(timer)
return Promise.resolve(result)
}, function (err) {
clearTimeout(timer)
return Promise.reject(err)
})
}
onComplete(exitCode, config) {
if (!this.browserstackLocal || !this.browserstackLocal.isRunning()) {
return
}
if (config.browserstackLocalForcedStop) {
return process.kill(this.browserstackLocal.pid)
}
let timer
return Promise.race([
new Promise((resolve, reject) => {
this.browserstackLocal.stop(err => {
if (err) {
return reject(err)
}
resolve()
})
}),
new Promise((resolve, reject) => {
/* istanbul ignore next */
timer = setTimeout(function () {
reject('Browserstack Local failed to stop within 60 seconds!')
}, 60000)
})]
).then(function (result) {
clearTimeout(timer)
return Promise.resolve(result)
}, function (err) {
clearTimeout(timer)
return Promise.reject(err)
})
}
}
|