From de499fa3ae9458695ba06dfd400fff603f590d03 Mon Sep 17 00:00:00 2001 From: j0tunn Date: Fri, 20 Jun 2014 18:57:25 +0400 Subject: [PATCH] fix: correct methods overriding Don't add new listener for kill event, but override ProcessLauncher's methods for correct exit. --- index.js | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/index.js b/index.js index a68c9cf..77ff2f0 100644 --- a/index.js +++ b/index.js @@ -1,7 +1,8 @@ -var fs = require('fs'); var wd = require('wd'); -var WebDriverInstance = function (baseBrowserDecorator, args) { +var WebDriverInstance = function (baseBrowserDecorator, args, logger) { + var log = logger.create('WebDriver'); + var config = args.config || { hostname: '127.0.0.1', port: 4444 @@ -19,19 +20,24 @@ var WebDriverInstance = function (baseBrowserDecorator, args) { this.name = spec.browserName + ' via Remote WebDriver'; - this.on('kill', function(callback) { - self.browser.quit(function() { - console.log('Killed ' + spec.name + '.'); - callback(); - }); - }); - - this._start = function (url) { - self.browser = wd.remote(config); - self.browser.init(spec, function () { - self.browser.get(url); - }); + this._start = function(url) { + self.browser = wd.remote(config, 'promiseChain'); + self.browser.init(spec) + .get(url) + .done(); + + self._process = { + kill: function() { + self.browser.quit(function() { + log.info('Killed ' + spec.name + '.'); + self._onProcessExit(self.error ? -1 : 0, self.error); + }); + } + }; }; + + // We can't really force browser to quit so just avoid warning about SIGKILL + this._onKillTimeout = function(){}; }; WebDriverInstance.prototype = { @@ -45,7 +51,7 @@ WebDriverInstance.prototype = { ENV_CMD: 'WEBDRIVER_BIN' }; -WebDriverInstance.$inject = ['baseBrowserDecorator', 'args']; +WebDriverInstance.$inject = ['baseBrowserDecorator', 'args', 'logger']; // PUBLISH DI MODULE module.exports = {