1 var log = require('./logger').create()
3 var Executor = function (capturedBrowsers, config, emitter) {
5 var executionScheduled = false
9 var schedule = function () {
12 if (!capturedBrowsers.length) {
13 log.warn('No captured browser, open http://%s:%s%s', config.hostname, config.port,
18 if (capturedBrowsers.areAllReady(nonReady)) {
19 log.debug('All browsers are ready, executing')
20 executionScheduled = false
21 capturedBrowsers.clearResults()
22 capturedBrowsers.setAllToExecuting()
23 pendingCount = capturedBrowsers.length
24 runningBrowsers = capturedBrowsers.clone()
25 emitter.emit('run_start', runningBrowsers)
26 self.socketIoSockets.emit('execute', config.client)
30 log.info('Delaying execution, these browsers are not ready: ' + nonReady.join(', '))
31 executionScheduled = true
35 this.schedule = schedule
37 this.onRunComplete = function () {
38 if (executionScheduled) {
43 this.onBrowserComplete = function () {
47 emitter.emit('run_complete', runningBrowsers, runningBrowsers.getResults())
51 // bind all the events
55 module.exports = Executor