diff --git a/common/web/gesture-recognizer/src/test/auto/browser/CI.conf.js b/common/web/gesture-recognizer/src/test/auto/browser/CI.conf.js index 1e1cdd14cd..dcb282763e 100644 --- a/common/web/gesture-recognizer/src/test/auto/browser/CI.conf.js +++ b/common/web/gesture-recognizer/src/test/auto/browser/CI.conf.js @@ -1,141 +1,4 @@ -module.exports = function(config) { - var base = require("./base.conf.js"); +var BASE_CONFIG = require("./base.conf.js"); +var ci_config_adapter = require("../../../../../../../common/test/resources/karma-browserstack-config.js"); - var timeouts = base.client.args[0]; - var browserStackModifier = 10; - - for(key in timeouts) { - if(typeof timeouts[key] == 'number') { - timeouts[key] = timeouts[key] * browserStackModifier; - } - } - - /* - * Definition of utility functions for managing our browser lists. - */ - var mergeLaunchers = function() { - var mergedDefs = {}; - var i; - for(i=0; i < arguments.length; i++) { - for(var name in arguments[i]) { - mergedDefs[name] = arguments[i][name]; - - // Necessary for Karma to process it properly. - mergedDefs[name].base = 'BrowserStack'; - } - } - - return mergedDefs; - } - - var toBrowserList = function(mergedSet) { - var list = []; - for(var name in mergedSet) { - list.push(name); - } - - return list; - } - - /* - * Definition of browser sets possibly relevant for testing. - */ - var CURRENT_MAC_LAUNCHERS = { - bs_firefox_mac: { - browser: 'firefox', - browser_version: '100', - os: 'OS X', - os_version: 'Mojave' - }, - bs_safari_mac_m: { - browser: 'safari', - browser_version: '13', - os: 'OS X', - os_version: 'Catalina' - }, - bs_chrome_mac: { - browser: 'chrome', - browser_version: '70.0', - os: 'OS X', - os_version: 'Mojave' - } - }; - - var CURRENT_WIN_LAUNCHERS = { - bs_firefox_win: { - os: 'Windows', - os_version: '10', - browser: 'firefox', - browser_version: '100.0' - }, - bs_chrome_win: { - os: 'Windows', - os_version: '10', - browser: 'chrome', - browser_version: '70.0' - } - } - - var CURRENT_ANDROID_LAUNCHERS = { - bs_chrome_android: { - os: 'android', - os_version: '7.1', - browser: 'chrome', - real_mobile: true, - device: 'Samsung Galaxy Note 8' - } - } - - /* - * Final selection of the sets to be used for BrowserStack testing. - */ - var FINAL_LAUNCHER_DEFS = mergeLaunchers( CURRENT_ANDROID_LAUNCHERS, - CURRENT_WIN_LAUNCHERS, - CURRENT_MAC_LAUNCHERS); - - var FINAL_BROWSER_LIST = toBrowserList(FINAL_LAUNCHER_DEFS); - - /* - * Final definition of our BrowserStack testing Karma configuration. - */ - - var specifics = { - // BrowserStack configuration options - browserStack: { - video: true, - browserDisconnectTimeout: 6e4, // 1 minute (60s => 60,000ms) - retryLimit: 3, // 0 is ignored. - startTunnel: true, - }, - - // Attempts to avoid generating a 'fail' exit code if one of our selected browsers on BrowserStack goes poof. - failOnEmptyTestSuite: false, - - captureTimeout: 1.2e5, // in milliseconds - browserNoActivityTimeout: 6e4, - browserDisconnectTimeout: 6e4, - browserDisconnectTolerance: 3, - - // Avoids generating a 'fail' exit code if one of our selected browsers on BrowserStack goes poof. - failOnEmptyTestSuite: false, - - // test results reporter to use - // possible values: 'dots', 'progress' - // available reporters: https://npmjs.org/browse/keyword/karma-reporter - reporters: ['teamcity', 'BrowserStack'], - - // level of logging - // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG - logLevel: config.LOG_DEBUG, - - // Concurrency level - // For CI, it really helps to keep a nice, clean set of output logs. - concurrency: 5, - - customLaunchers: FINAL_LAUNCHER_DEFS, - - browsers: FINAL_BROWSER_LIST - }; - - config.set(Object.assign(specifics, base)); -} +module.exports = ci_config_adapter(BASE_CONFIG, "partial"); \ No newline at end of file diff --git a/common/web/gesture-recognizer/src/test/auto/browser/base.conf.js b/common/web/gesture-recognizer/src/test/auto/browser/base.conf.js index d6c172d498..b1c9bf1d6f 100644 --- a/common/web/gesture-recognizer/src/test/auto/browser/base.conf.js +++ b/common/web/gesture-recognizer/src/test/auto/browser/base.conf.js @@ -43,7 +43,7 @@ module.exports = { '../../../node_modules/sinon/pkg/sinon.js', - 'src/test/auto/browser/timeoutConfiguration.js', // Handles timeout configuration for local vs BrowserStack-based testing + '../../../common/test/resources/timeout-adapter.js', // Handles timeout configuration for local vs BrowserStack-based testing 'src/test/auto/browser/cases/**/*.js', // Where the tests actually reside. diff --git a/common/web/gesture-recognizer/src/test/auto/browser/timeoutConfiguration.js b/common/web/gesture-recognizer/src/test/auto/browser/timeoutConfiguration.js deleted file mode 100644 index 75629fd8ec..0000000000 --- a/common/web/gesture-recognizer/src/test/auto/browser/timeoutConfiguration.js +++ /dev/null @@ -1,21 +0,0 @@ -// Preprocessing of the Karma configuration's client.args parameter. - -com = com || {}; -com.keyman = com.keyman || {}; -com.keyman.karma = com.keyman.karma || {}; - -(function() { - var kmwconfig = window['testconfig'] = {}; - - var configArgs = window['__karma__'].config.args; // Where Karma gives us our custom args. - for(var i = 0; i < configArgs.length; configArgs++) { - switch(configArgs[i].type) { - case 'timeouts': - var timeouts = JSON.parse(JSON.stringify(configArgs[i])); - delete timeouts.type; - - kmwconfig['timeouts'] = timeouts; - break; - } - } -})();