diff --git a/tfjs-backend-webgl/karma.conf.js b/tfjs-backend-webgl/karma.conf.js index 573d0ac4c8f..447571c98c8 100644 --- a/tfjs-backend-webgl/karma.conf.js +++ b/tfjs-backend-webgl/karma.conf.js @@ -40,6 +40,24 @@ const karmaTypescriptConfig = { } }; +const devConfig = { + frameworks: ['jasmine', 'karma-typescript'], + files: [ + {pattern: './node_modules/@babel/polyfill/dist/polyfill.js'}, + 'src/setup_test.ts', + {pattern: 'src/**/*.ts'}, + ], + preprocessors: {'**/*.ts': ['karma-typescript']}, + karmaTypescriptConfig, + reporters: ['dots', 'karma-typescript'] +}; + +const browserstackConfig = { + ...devConfig, + hostname: 'bs-local.com', + singleRun: true +}; + module.exports = function(config) { const args = []; if (config.testEnv) { @@ -51,34 +69,34 @@ module.exports = function(config) { if (config.flags) { args.push('--flags', config.flags); } + + let extraConfig = null; + + if (config.browserstack) { + extraConfig = browserstackConfig; + } else { + extraConfig = devConfig; + } + let exclude = []; if (config.excludeTest != null) { exclude.push(config.excludeTest); } config.set({ - frameworks: ['jasmine', 'karma-typescript'], - files: [ - {pattern: './node_modules/@babel/polyfill/dist/polyfill.js'}, - 'src/setup_test.ts', - {pattern: 'src/**/*.ts'}, - ], - preprocessors: {'**/*.ts': ['karma-typescript']}, - karmaTypescriptConfig, - reporters: ['dots', 'karma-typescript'], + ...extraConfig, exclude, - colors: true, - autoWatch: false, browsers: ['Chrome'], - singleRun: true, - client: {jasmine: {random: false}, args: args}, browserStack: { username: process.env.BROWSERSTACK_USERNAME, accessKey: process.env.BROWSERSTACK_KEY }, - captureTimeout: 120000, + captureTimeout: 3e5, reportSlowerThan: 500, - browserNoActivityTimeout: 240000, + browserNoActivityTimeout: 3e5, + browserDisconnectTimeout: 3e5, + browserDisconnectTolerance: 0, + browserSocketTimeout: 1.2e5, customLaunchers: { // For browserstack configs see: // https://www.browserstack.com/automate/node @@ -127,5 +145,6 @@ module.exports = function(config) { os_version: '10' }, }, + client: {jasmine: {random: false}, args: args} }) } diff --git a/tfjs-backend-webgl/scripts/test-ci.sh b/tfjs-backend-webgl/scripts/test-ci.sh index 3e49f783f7a..17bd9025334 100755 --- a/tfjs-backend-webgl/scripts/test-ci.sh +++ b/tfjs-backend-webgl/scripts/test-ci.sh @@ -20,8 +20,7 @@ if [ "$NIGHTLY" = true ] then # Run the first karma separately so it can download the BrowserStack binary # without conflicting with others. - # TODO(lina128): Add back bs_ios_11 once browserstack issue is resolved. - yarn run-browserstack --browsers=bs_safari_mac --testEnv webgl1 --flags '{"WEBGL_CPU_FORWARD": false, "WEBGL_SIZE_UPLOAD_UNIFORM": 0}' + yarn run-browserstack --browsers=bs_safari_mac,bs_ios_11 --testEnv webgl1 --flags '{"WEBGL_CPU_FORWARD": false, "WEBGL_SIZE_UPLOAD_UNIFORM": 0}' # Run the rest of the karma tests in parallel. These runs will reuse the # already downloaded binary. diff --git a/tfjs-core/karma.conf.js b/tfjs-core/karma.conf.js index e000cc4be90..91d5a6ab78e 100644 --- a/tfjs-core/karma.conf.js +++ b/tfjs-core/karma.conf.js @@ -43,12 +43,12 @@ const devConfig = { ], preprocessors: {'**/*.ts': ['karma-typescript']}, karmaTypescriptConfig, - reporters: ['dots', 'karma-typescript'], + reporters: ['dots', 'karma-typescript'] }; const browserstackConfig = { ...devConfig, - reporters: ['dots', 'karma-typescript'], + hostname: 'bs-local.com', singleRun: true }; @@ -99,11 +99,12 @@ module.exports = function(config) { username: process.env.BROWSERSTACK_USERNAME, accessKey: process.env.BROWSERSTACK_KEY }, - captureTimeout: 6e5, + captureTimeout: 3e5, reportSlowerThan: 500, browserNoActivityTimeout: 3e5, browserDisconnectTimeout: 3e5, - browserDisconnectTolerance: 3, + browserDisconnectTolerance: 0, + browserSocketTimeout: 1.2e5, customLaunchers: { // For browserstack configs see: // https://www.browserstack.com/automate/node @@ -131,7 +132,7 @@ module.exports = function(config) { bs_ios_11: { base: 'BrowserStack', device: 'iPhone X', - os: 'iOS', + os: 'ios', os_version: '11.0', real_mobile: true }, diff --git a/tfjs-core/scripts/test-ci.sh b/tfjs-core/scripts/test-ci.sh index 90cdf65970d..0bd570c3c62 100755 --- a/tfjs-core/scripts/test-ci.sh +++ b/tfjs-core/scripts/test-ci.sh @@ -25,8 +25,7 @@ then # without conflicting with others. yarn run-browserstack --browsers=bs_chrome_mac - # TODO(lina128): Add back bs_ios_11 once browserstack issue is resolved. - yarn run-browserstack --browsers=bs_firefox_mac,bs_safari_mac,bs_android_9 --flags '{"HAS_WEBGL": false}' --testEnv cpu + yarn run-browserstack --browsers=bs_firefox_mac,bs_safari_mac,bs_ios_11,bs_android_9 --flags '{"HAS_WEBGL": false}' --testEnv cpu ### The next section tests TF.js in a webworker using the CPU backend. echo "Start webworker test."