12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- const log = require('../logger').create('launcher')
- /**
- * Kill browser if it does not capture in given `captureTimeout`.
- */
- function CaptureTimeoutLauncher (timer, captureTimeout) {
- if (!captureTimeout) {
- return
- }
- let pendingTimeoutId = null
- this.on('start', () => {
- pendingTimeoutId = timer.setTimeout(() => {
- pendingTimeoutId = null
- if (this.state !== this.STATE_BEING_CAPTURED) {
- return
- }
- log.warn(`${this.name} has not captured in ${captureTimeout} ms, killing.`)
- this.error = 'timeout'
- this.kill()
- }, captureTimeout)
- })
- this.on('done', () => {
- if (pendingTimeoutId) {
- timer.clearTimeout(pendingTimeoutId)
- pendingTimeoutId = null
- }
- })
- }
- CaptureTimeoutLauncher.decoratorFactory = function (timer,
- /* config.captureTimeout */ captureTimeout) {
- return function (launcher) {
- CaptureTimeoutLauncher.call(launcher, timer, captureTimeout)
- }
- }
- CaptureTimeoutLauncher.decoratorFactory.$inject = ['timer', 'config.captureTimeout']
- module.exports = CaptureTimeoutLauncher
|