From a1fc1c86e01cde3b38d7fd303dd9695dc3564ada Mon Sep 17 00:00:00 2001 From: Keith Cirkel Date: Sun, 10 Sep 2017 16:22:39 +0100 Subject: [PATCH] feat: support Firefox headless --- index.js | 30 +++++++++++++++++++++++++++++- karma.conf.js | 2 +- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 34a623f..6722ff8 100644 --- a/index.js +++ b/index.js @@ -92,6 +92,22 @@ var getFirefoxWithFallbackOnOSX = function () { } } +var makeHeadlessVersion = function (Browser) { + var HeadlessBrowser = function () { + Browser.apply(this, arguments) + var execCommand = this._execCommand + this._execCommand = function (command, args) { + execCommand.call(this, command, args.concat('-headless')) + } + } + + HeadlessBrowser.prototype = Object.create(Browser.prototype, { + name: { value: Browser.prototype.name + 'Headless' } + }) + HeadlessBrowser.$inject = Browser.$inject + return HeadlessBrowser +} + // https://developer.mozilla.org/en-US/docs/Command_Line_Options var FirefoxBrowser = function (id, baseBrowserDecorator, args) { baseBrowserDecorator(this) @@ -146,6 +162,8 @@ FirefoxBrowser.prototype = { FirefoxBrowser.$inject = ['id', 'baseBrowserDecorator', 'args'] +var FirefoxHeadlessBrowser = makeHeadlessVersion(FirefoxBrowser) + var FirefoxDeveloperBrowser = function () { FirefoxBrowser.apply(this, arguments) } @@ -162,6 +180,8 @@ FirefoxDeveloperBrowser.prototype = { FirefoxDeveloperBrowser.$inject = ['id', 'baseBrowserDecorator', 'args'] +var FirefoxDeveloperHeadlessBrowser = makeHeadlessVersion(FirefoxDeveloperBrowser) + var FirefoxAuroraBrowser = function () { FirefoxBrowser.apply(this, arguments) } @@ -178,6 +198,8 @@ FirefoxAuroraBrowser.prototype = { FirefoxAuroraBrowser.$inject = ['id', 'baseBrowserDecorator', 'args'] +var FirefoxAuroraHeadlessBrowser = makeHeadlessVersion(FirefoxAuroraBrowser) + var FirefoxNightlyBrowser = function () { FirefoxBrowser.apply(this, arguments) } @@ -195,10 +217,16 @@ FirefoxNightlyBrowser.prototype = { FirefoxNightlyBrowser.$inject = ['id', 'baseBrowserDecorator', 'args'] +var FirefoxNightlyHeadlessBrowser = makeHeadlessVersion(FirefoxNightlyBrowser) + // PUBLISH DI MODULE module.exports = { 'launcher:Firefox': ['type', FirefoxBrowser], + 'launcher:FirefoxHeadless': ['type', FirefoxHeadlessBrowser], 'launcher:FirefoxDeveloper': ['type', FirefoxDeveloperBrowser], + 'launcher:FirefoxDeveloperHeadless': ['type', FirefoxDeveloperHeadlessBrowser], 'launcher:FirefoxAurora': ['type', FirefoxAuroraBrowser], - 'launcher:FirefoxNightly': ['type', FirefoxNightlyBrowser] + 'launcher:FirefoxAuroraHeadless': ['type', FirefoxAuroraHeadlessBrowser], + 'launcher:FirefoxNightly': ['type', FirefoxNightlyBrowser], + 'launcher:FirefoxNightlyHeadless': ['type', FirefoxNightlyHeadlessBrowser] } diff --git a/karma.conf.js b/karma.conf.js index c28fc5e..b1fc6cf 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -12,7 +12,7 @@ module.exports = function (config) { colors: true, logLevel: config.LOG_INFO, autoWatch: false, - browsers: ['Firefox'], + browsers: ['Firefox', 'FirefoxHeadless'], singleRun: false, concurrency: Infinity, plugins: [