From c23ba0cacc1b8516c2ad900311d47725c3cb1291 Mon Sep 17 00:00:00 2001 From: Jaissica Date: Wed, 1 Oct 2025 10:20:06 -0400 Subject: [PATCH 1/8] test: add mobile browsers for testing --- .../cross-browser-testing-mobile.yml | 39 ++++++ package.json | 2 + .../browserstack.karma.mobile.config.js | 113 ++++++++++++++++++ 3 files changed, 154 insertions(+) create mode 100644 .github/workflows/cross-browser-testing-mobile.yml create mode 100644 test/cross-browser-testing/browserstack.karma.mobile.config.js diff --git a/.github/workflows/cross-browser-testing-mobile.yml b/.github/workflows/cross-browser-testing-mobile.yml new file mode 100644 index 000000000..7b2843343 --- /dev/null +++ b/.github/workflows/cross-browser-testing-mobile.yml @@ -0,0 +1,39 @@ +name: 'BrowserStack Mobile Test' +on: [push, pull_request, workflow_dispatch] + +jobs: + browserstack-mobile-test: + name: 'BrowserStack Mobile Test' + runs-on: ubuntu-latest + steps: + - name: 'BrowserStack Env Setup' + uses: browserstack/github-actions/setup-env@master + with: + username: ${{ secrets.BROWSERSTACK_USERNAME }} + access-key: ${{ secrets.BROWSERSTACK_ACCESS_KEY }} + + - name: 'BrowserStack Local Tunnel Setup' + uses: browserstack/github-actions/setup-local@master + with: + local-testing: start + local-identifier: random + + - name: 'Checkout the repository' + uses: actions/checkout@v3 + + - name: 'Run NPM CI' + run: npm ci + + - name: Run Build IIFE + run: npm run build:iife + + - name: 'Run NPM build test bundle' + run: npm run build:test-bundle + + - name: 'Run Browserstack Mobile Tests' + run: npm run test:browserstack-mobile + + - name: 'BrowserStackLocal Stop' + uses: browserstack/github-actions/setup-local@master + with: + local-testing: stop diff --git a/package.json b/package.json index c293e2fd9..a49327cda 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,8 @@ "test": "npm run build && npm run build:test-bundle && cross-env DEBUG=false karma start test/karma.config.js", "test:browserstack": "karma start test/cross-browser-testing/browserstack.karma.config.js", "test:browserstack:debug": "cross-env DEBUG=true karma start test/cross-browser-testing/browserstack.karma.config.js", + "test:browserstack-mobile": "karma start test/cross-browser-testing/browserstack.karma.mobile.config.js", + "test:browserstack-mobile:debug": "cross-env DEBUG=true karma start test/cross-browser-testing/browserstack.karma.mobile.config.js", "test:debug": "cross-env DEBUG=true karma start test/karma.config.js", "test:stub": "cross-env TESTTYPE=stub ENVIRONMENT=prod rollup --config rollup.test.config.js && karma start test/stub/karma.stub.config.js", "test:integrations": "npm run test:requirejs && npm run test:integrations:cjs && npm run test:integrations:module", diff --git a/test/cross-browser-testing/browserstack.karma.mobile.config.js b/test/cross-browser-testing/browserstack.karma.mobile.config.js new file mode 100644 index 000000000..a551ed617 --- /dev/null +++ b/test/cross-browser-testing/browserstack.karma.mobile.config.js @@ -0,0 +1,113 @@ +const { DEBUG } = process.env; + +const files = [ + '../lib/geomock.js', + '../../dist/mparticle.js', + '../test-bundle.js', +]; + +let captureConsole = false; +let browserConsoleLogOptions = {}; + +if (DEBUG === 'true') { + browserConsoleLogOptions = { + level: 'log', + format: '%b %T: %m', + terminal: true, + }; + captureConsole = true; +} else { + browserConsoleLogOptions = { + terminal: false, + }; +} + +const customLaunchers = { + // Android Mobile Browsers + bs_android_chrome: { + base: 'BrowserStack', + device: 'Google Pixel 8', + os: 'android', + os_version: '14.0', + real_mobile: true, + browser: 'chrome' + }, + bs_android_firefox: { + base: 'BrowserStack', + device: 'Google Pixel 8', + os: 'android', + os_version: '14.0', + real_mobile: true, + browser: 'firefox' + }, + bs_android_samsung: { + base: 'BrowserStack', + device: 'Samsung Galaxy S23', + os: 'android', + os_version: '13.0', + real_mobile: true, + browser: 'samsung' + }, + + // iOS Mobile Browsers + bs_ios_safari: { + base: 'BrowserStack', + device: 'iPhone 15 Pro', + os: 'ios', + os_version: '17', + real_mobile: true, + browser: 'safari' + }, + bs_ios_chrome: { + base: 'BrowserStack', + device: 'iPhone 15 Pro', + os: 'ios', + os_version: '17', + real_mobile: true, + browser: 'chrome' + }, + bs_ios_firefox: { + base: 'BrowserStack', + device: 'iPhone 15 Pro', + os: 'ios', + os_version: '17', + real_mobile: true, + browser: 'firefox' + }, +}; + +module.exports = function(config) { + config.set({ + browserStack: { + username: process.env.BS_USERNAME, + accessKey: process.env.BS_ACCESS_KEY, + local: true, + }, + autoWatch: false, + customLaunchers, + browsers: Object.keys(customLaunchers), + frameworks: ['mocha', 'should'], + files, + reporters: ['progress', 'junit'], + colors: true, + singleRun: true, + debug: true, + logLevel: config.LOG_INFO, + browserConsoleLogOptions, + client: { + captureConsole, + mocha: { + timeout: 10000 + } + }, + junitReporter: { + outputDir: 'reports/', + outputFile: 'test-karma-mobile.xml', + }, + browserDisconnectTimeout: 180000, + browserDisconnectTolerance: 5, + concurrency: 1, + captureTimeout: 180000, + browserNoActivityTimeout: 180000, + }); +}; From 604203cbe948ce2842fc76fc37512700a3188ca4 Mon Sep 17 00:00:00 2001 From: Jaissica Date: Fri, 3 Oct 2025 18:25:18 -0400 Subject: [PATCH 2/8] test: added android and ios mobile versions --- .../browserstack.karma.mobile.config.js | 150 +++++++++++++++--- 1 file changed, 129 insertions(+), 21 deletions(-) diff --git a/test/cross-browser-testing/browserstack.karma.mobile.config.js b/test/cross-browser-testing/browserstack.karma.mobile.config.js index a551ed617..5c3283f2c 100644 --- a/test/cross-browser-testing/browserstack.karma.mobile.config.js +++ b/test/cross-browser-testing/browserstack.karma.mobile.config.js @@ -23,57 +23,165 @@ if (DEBUG === 'true') { } const customLaunchers = { - // Android Mobile Browsers - bs_android_chrome: { + // Android 16 - all browsers + bs_android_16_chrome: { base: 'BrowserStack', - device: 'Google Pixel 8', + device: 'Google Pixel 10 Pro', os: 'android', - os_version: '14.0', + os_version: '16.0', real_mobile: true, browser: 'chrome' }, - bs_android_firefox: { + bs_android_16_firefox: { base: 'BrowserStack', - device: 'Google Pixel 8', + device: 'Google Pixel 10', os: 'android', - os_version: '14.0', + os_version: '16.0', real_mobile: true, browser: 'firefox' }, - bs_android_samsung: { + bs_android_16_opera: { base: 'BrowserStack', - device: 'Samsung Galaxy S23', + device: 'Google Pixel 9', os: 'android', - os_version: '13.0', + os_version: '16.0', + real_mobile: true, + browser: 'opera' + }, + bs_android_16_samsung: { + base: 'BrowserStack', + device: 'Google Pixel 10 Pro XL', + os: 'android', + os_version: '16.0', real_mobile: true, browser: 'samsung' }, - - // iOS Mobile Browsers - bs_ios_safari: { + + // Android 15 - all browsers + bs_android_15_chrome: { + base: 'BrowserStack', + device: 'Samsung Galaxy S25', + os: 'android', + os_version: '15.0', + real_mobile: true, + browser: 'chrome' + }, + bs_android_15_firefox: { + base: 'BrowserStack', + device: 'Samsung Galaxy Tab S10 Plus', + os: 'android', + os_version: '15.0', + real_mobile: true, + browser: 'firefox' + }, + bs_android_15_opera: { + base: 'BrowserStack', + device: 'Google Pixel 9 Pro', + os: 'android', + os_version: '15.0', + real_mobile: true, + browser: 'opera' + }, + bs_android_15_samsung: { + base: 'BrowserStack', + device: 'Samsung Galaxy S25 Ultra', + os: 'android', + os_version: '15.0', + real_mobile: true, + browser: 'samsung' + }, + + // Android 14 - chrome + bs_android_14_chrome: { + base: 'BrowserStack', + device: 'Samsung Galaxy S24', + os: 'android', + os_version: '14.0', + real_mobile: true, + browser: 'chrome' + }, + + // Android 13 - chrome + bs_android_13_chrome: { + base: 'BrowserStack', + device: 'Samsung Galaxy S23 Ultra', + os: 'android', + os_version: '13.0', + real_mobile: true, + browser: 'chrome' + }, + + // iOS 26 - chrome, firefox, safari + bs_ios_26_safari: { base: 'BrowserStack', - device: 'iPhone 15 Pro', + device: 'iPhone 17 Pro', os: 'ios', - os_version: '17', + os_version: '26', real_mobile: true, browser: 'safari' }, - bs_ios_chrome: { + bs_ios_26_chrome: { base: 'BrowserStack', - device: 'iPhone 15 Pro', + device: 'iPad Air 5', os: 'ios', - os_version: '17', + os_version: '26', real_mobile: true, browser: 'chrome' }, - bs_ios_firefox: { + bs_ios_26_firefox: { base: 'BrowserStack', - device: 'iPhone 15 Pro', + device: 'iPhone Air', os: 'ios', - os_version: '17', + os_version: '26', real_mobile: true, browser: 'firefox' }, + + // iOS 18 - chrome, firefox, safari + bs_ios_18_safari: { + base: 'BrowserStack', + device: 'iPhone 16e', + os: 'ios', + os_version: '18', + real_mobile: true, + browser: 'safari' + }, + bs_ios_18_chrome: { + base: 'BrowserStack', + device: 'iPad Pro 11 2021', + os: 'ios', + os_version: '18', + real_mobile: true, + browser: 'chrome' + }, + bs_ios_18_firefox: { + base: 'BrowserStack', + device: 'iPhone 14', + os: 'ios', + os_version: '18', + real_mobile: true, + browser: 'firefox' + }, + + // iOS 17 - chrome + bs_ios_17_safari: { + base: 'BrowserStack', + device: 'iPhone 12', + os: 'ios', + os_version: '17', + real_mobile: true, + browser: 'chrome' + }, + + // iOS 16 - safari + bs_ios_16_safari: { + base: 'BrowserStack', + device: 'iPad 10th', + os: 'ios', + os_version: '16', + real_mobile: true, + browser: 'safari' + }, }; module.exports = function(config) { From 4fed8db84e200b9af00a71237f3e5a75a9cd514e Mon Sep 17 00:00:00 2001 From: Jaissica Date: Tue, 7 Oct 2025 15:36:20 -0400 Subject: [PATCH 3/8] chore: updated concurrency for BrowserStack test on mobile devices --- .../browserstack.karma.mobile.config.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/test/cross-browser-testing/browserstack.karma.mobile.config.js b/test/cross-browser-testing/browserstack.karma.mobile.config.js index 5c3283f2c..a17ecdaad 100644 --- a/test/cross-browser-testing/browserstack.karma.mobile.config.js +++ b/test/cross-browser-testing/browserstack.karma.mobile.config.js @@ -212,10 +212,8 @@ module.exports = function(config) { outputDir: 'reports/', outputFile: 'test-karma-mobile.xml', }, - browserDisconnectTimeout: 180000, + browserDisconnectTimeout: 50000, browserDisconnectTolerance: 5, - concurrency: 1, - captureTimeout: 180000, - browserNoActivityTimeout: 180000, + concurrency: 5, }); }; From f44d3e71b315c6b1aa2b3c9cc1c0a2d0f8dcf54d Mon Sep 17 00:00:00 2001 From: Jaissica Date: Tue, 7 Oct 2025 18:06:11 -0400 Subject: [PATCH 4/8] refactor: split mobile browsers test into android and iOS --- .../cross-browser-testing-android.yml | 39 ++++++ ...bile.yml => cross-browser-testing-iOS.yml} | 10 +- package.json | 6 +- ...s => browserstack.karma.android.config.js} | 74 +--------- .../browserstack.karma.iOS.config.js | 131 ++++++++++++++++++ 5 files changed, 180 insertions(+), 80 deletions(-) create mode 100644 .github/workflows/cross-browser-testing-android.yml rename .github/workflows/{cross-browser-testing-mobile.yml => cross-browser-testing-iOS.yml} (82%) rename test/cross-browser-testing/{browserstack.karma.mobile.config.js => browserstack.karma.android.config.js} (68%) create mode 100644 test/cross-browser-testing/browserstack.karma.iOS.config.js diff --git a/.github/workflows/cross-browser-testing-android.yml b/.github/workflows/cross-browser-testing-android.yml new file mode 100644 index 000000000..a3e1da209 --- /dev/null +++ b/.github/workflows/cross-browser-testing-android.yml @@ -0,0 +1,39 @@ +name: 'BrowserStack Android Mobile Test' +on: [push, pull_request, workflow_dispatch] + +jobs: + browserstack-android-test: + name: 'BrowserStack Android Mobile Test' + runs-on: ubuntu-latest + steps: + - name: 'BrowserStack Env Setup' + uses: browserstack/github-actions/setup-env@master + with: + username: ${{ secrets.BROWSERSTACK_USERNAME }} + access-key: ${{ secrets.BROWSERSTACK_ACCESS_KEY }} + + - name: 'BrowserStack Local Tunnel Setup' + uses: browserstack/github-actions/setup-local@master + with: + local-testing: start + local-identifier: random + + - name: 'Checkout the repository' + uses: actions/checkout@v3 + + - name: 'Run NPM CI' + run: npm ci + + - name: Run Build IIFE + run: npm run build:iife + + - name: 'Run NPM build test bundle' + run: npm run build:test-bundle + + - name: 'Run Browserstack Android Mobile Tests' + run: npm run test:browserstack-android + + - name: 'BrowserStackLocal Stop' + uses: browserstack/github-actions/setup-local@master + with: + local-testing: stop diff --git a/.github/workflows/cross-browser-testing-mobile.yml b/.github/workflows/cross-browser-testing-iOS.yml similarity index 82% rename from .github/workflows/cross-browser-testing-mobile.yml rename to .github/workflows/cross-browser-testing-iOS.yml index 7b2843343..a21596f8d 100644 --- a/.github/workflows/cross-browser-testing-mobile.yml +++ b/.github/workflows/cross-browser-testing-iOS.yml @@ -1,9 +1,9 @@ -name: 'BrowserStack Mobile Test' +name: 'BrowserStack iOS Mobile Test' on: [push, pull_request, workflow_dispatch] jobs: - browserstack-mobile-test: - name: 'BrowserStack Mobile Test' + browserstack-iOS-test: + name: 'BrowserStack iOS Mobile Test' runs-on: ubuntu-latest steps: - name: 'BrowserStack Env Setup' @@ -30,8 +30,8 @@ jobs: - name: 'Run NPM build test bundle' run: npm run build:test-bundle - - name: 'Run Browserstack Mobile Tests' - run: npm run test:browserstack-mobile + - name: 'Run Browserstack iOS Mobile Tests' + run: npm run test:browserstack-iOS - name: 'BrowserStackLocal Stop' uses: browserstack/github-actions/setup-local@master diff --git a/package.json b/package.json index a49327cda..c83c3ffd3 100644 --- a/package.json +++ b/package.json @@ -43,8 +43,10 @@ "test": "npm run build && npm run build:test-bundle && cross-env DEBUG=false karma start test/karma.config.js", "test:browserstack": "karma start test/cross-browser-testing/browserstack.karma.config.js", "test:browserstack:debug": "cross-env DEBUG=true karma start test/cross-browser-testing/browserstack.karma.config.js", - "test:browserstack-mobile": "karma start test/cross-browser-testing/browserstack.karma.mobile.config.js", - "test:browserstack-mobile:debug": "cross-env DEBUG=true karma start test/cross-browser-testing/browserstack.karma.mobile.config.js", + "test:browserstack-android": "karma start test/cross-browser-testing/browserstack.karma.android.config.js", + "test:browserstack-android:debug": "cross-env DEBUG=true karma start test/cross-browser-testing/browserstack.karma.android.config.js", + "test:browserstack-iOS": "karma start test/cross-browser-testing/browserstack.karma.iOS.config.js", + "test:browserstack-iOS:debug": "cross-env DEBUG=true karma start test/cross-browser-testing/browserstack.karma.iOS.config.js", "test:debug": "cross-env DEBUG=true karma start test/karma.config.js", "test:stub": "cross-env TESTTYPE=stub ENVIRONMENT=prod rollup --config rollup.test.config.js && karma start test/stub/karma.stub.config.js", "test:integrations": "npm run test:requirejs && npm run test:integrations:cjs && npm run test:integrations:module", diff --git a/test/cross-browser-testing/browserstack.karma.mobile.config.js b/test/cross-browser-testing/browserstack.karma.android.config.js similarity index 68% rename from test/cross-browser-testing/browserstack.karma.mobile.config.js rename to test/cross-browser-testing/browserstack.karma.android.config.js index a17ecdaad..10ace82c9 100644 --- a/test/cross-browser-testing/browserstack.karma.mobile.config.js +++ b/test/cross-browser-testing/browserstack.karma.android.config.js @@ -42,7 +42,7 @@ const customLaunchers = { }, bs_android_16_opera: { base: 'BrowserStack', - device: 'Google Pixel 9', + device: 'Google Pixel 10 Pro', os: 'android', os_version: '16.0', real_mobile: true, @@ -110,78 +110,6 @@ const customLaunchers = { real_mobile: true, browser: 'chrome' }, - - // iOS 26 - chrome, firefox, safari - bs_ios_26_safari: { - base: 'BrowserStack', - device: 'iPhone 17 Pro', - os: 'ios', - os_version: '26', - real_mobile: true, - browser: 'safari' - }, - bs_ios_26_chrome: { - base: 'BrowserStack', - device: 'iPad Air 5', - os: 'ios', - os_version: '26', - real_mobile: true, - browser: 'chrome' - }, - bs_ios_26_firefox: { - base: 'BrowserStack', - device: 'iPhone Air', - os: 'ios', - os_version: '26', - real_mobile: true, - browser: 'firefox' - }, - - // iOS 18 - chrome, firefox, safari - bs_ios_18_safari: { - base: 'BrowserStack', - device: 'iPhone 16e', - os: 'ios', - os_version: '18', - real_mobile: true, - browser: 'safari' - }, - bs_ios_18_chrome: { - base: 'BrowserStack', - device: 'iPad Pro 11 2021', - os: 'ios', - os_version: '18', - real_mobile: true, - browser: 'chrome' - }, - bs_ios_18_firefox: { - base: 'BrowserStack', - device: 'iPhone 14', - os: 'ios', - os_version: '18', - real_mobile: true, - browser: 'firefox' - }, - - // iOS 17 - chrome - bs_ios_17_safari: { - base: 'BrowserStack', - device: 'iPhone 12', - os: 'ios', - os_version: '17', - real_mobile: true, - browser: 'chrome' - }, - - // iOS 16 - safari - bs_ios_16_safari: { - base: 'BrowserStack', - device: 'iPad 10th', - os: 'ios', - os_version: '16', - real_mobile: true, - browser: 'safari' - }, }; module.exports = function(config) { diff --git a/test/cross-browser-testing/browserstack.karma.iOS.config.js b/test/cross-browser-testing/browserstack.karma.iOS.config.js new file mode 100644 index 000000000..c98c08c94 --- /dev/null +++ b/test/cross-browser-testing/browserstack.karma.iOS.config.js @@ -0,0 +1,131 @@ +const { DEBUG } = process.env; + +const files = [ + '../lib/geomock.js', + '../../dist/mparticle.js', + '../test-bundle.js', +]; + +let captureConsole = false; +let browserConsoleLogOptions = {}; + +if (DEBUG === 'true') { + browserConsoleLogOptions = { + level: 'log', + format: '%b %T: %m', + terminal: true, + }; + captureConsole = true; +} else { + browserConsoleLogOptions = { + terminal: false, + }; +} + +const customLaunchers = { + // iOS 26 - chrome, firefox, safari + bs_ios_26_safari: { + base: 'BrowserStack', + device: 'iPhone 17 Pro', + os: 'ios', + os_version: '26', + real_mobile: true, + browser: 'safari' + }, + bs_ios_26_chrome: { + base: 'BrowserStack', + device: 'iPad Air 5', + os: 'ios', + os_version: '26', + real_mobile: true, + browser: 'chrome' + }, + bs_ios_26_firefox: { + base: 'BrowserStack', + device: 'iPhone Air', + os: 'ios', + os_version: '26', + real_mobile: true, + browser: 'firefox' + }, + + // iOS 18 - chrome, firefox, safari + bs_ios_18_safari: { + base: 'BrowserStack', + device: 'iPhone 16e', + os: 'ios', + os_version: '18', + real_mobile: true, + browser: 'safari' + }, + bs_ios_18_chrome: { + base: 'BrowserStack', + device: 'iPad Pro 11 2021', + os: 'ios', + os_version: '18', + real_mobile: true, + browser: 'chrome' + }, + bs_ios_18_firefox: { + base: 'BrowserStack', + device: 'iPhone 14', + os: 'ios', + os_version: '18', + real_mobile: true, + browser: 'firefox' + }, + + // iOS 17 - chrome + bs_ios_17_chrome: { + base: 'BrowserStack', + device: 'iPhone 12', + os: 'ios', + os_version: '17', + real_mobile: true, + browser: 'chrome' + }, + + // iOS 16 - safari + bs_ios_16_safari: { + base: 'BrowserStack', + device: 'iPad 10th', + os: 'ios', + os_version: '16', + real_mobile: true, + browser: 'safari' + }, +}; + +module.exports = function(config) { + config.set({ + browserStack: { + username: process.env.BS_USERNAME, + accessKey: process.env.BS_ACCESS_KEY, + local: true, + }, + autoWatch: false, + customLaunchers, + browsers: Object.keys(customLaunchers), + frameworks: ['mocha', 'should'], + files, + reporters: ['progress', 'junit'], + colors: true, + singleRun: true, + debug: true, + logLevel: config.LOG_INFO, + browserConsoleLogOptions, + client: { + captureConsole, + mocha: { + timeout: 10000 + } + }, + junitReporter: { + outputDir: 'reports/', + outputFile: 'test-karma-mobile.xml', + }, + browserDisconnectTimeout: 50000, + browserDisconnectTolerance: 5, + concurrency: 5, + }); +}; From c1f9f1efce22e0be02612a81c589c972af06c5c2 Mon Sep 17 00:00:00 2001 From: Jaissica Date: Mon, 3 Nov 2025 17:04:44 -0500 Subject: [PATCH 5/8] update browserstack config for android and iOS testing --- .../browserstack.karma.android.config.js | 8 ++++++-- .../browserstack.karma.config.js | 15 ++++++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/test/cross-browser-testing/browserstack.karma.android.config.js b/test/cross-browser-testing/browserstack.karma.android.config.js index 10ace82c9..f1626e336 100644 --- a/test/cross-browser-testing/browserstack.karma.android.config.js +++ b/test/cross-browser-testing/browserstack.karma.android.config.js @@ -118,6 +118,7 @@ module.exports = function(config) { username: process.env.BS_USERNAME, accessKey: process.env.BS_ACCESS_KEY, local: true, + idleTimeout: 300, }, autoWatch: false, customLaunchers, @@ -140,8 +141,11 @@ module.exports = function(config) { outputDir: 'reports/', outputFile: 'test-karma-mobile.xml', }, - browserDisconnectTimeout: 50000, + captureTimeout: 240000, + browserNoActivityTimeout: 240000, + browserDisconnectTimeout: 120000, browserDisconnectTolerance: 5, - concurrency: 5, + concurrency: 2, + retryLimit: 2, }); }; diff --git a/test/cross-browser-testing/browserstack.karma.config.js b/test/cross-browser-testing/browserstack.karma.config.js index 556f09986..657b19f7d 100644 --- a/test/cross-browser-testing/browserstack.karma.config.js +++ b/test/cross-browser-testing/browserstack.karma.config.js @@ -70,7 +70,8 @@ module.exports = function(config) { config.set({ browserStack: { username: process.env.BS_USERNAME, - accessKey: process.env.BS_ACCESS_KEY + accessKey: process.env.BS_ACCESS_KEY, + idleTimeout: 300, }, autoWatch: false, customLaunchers, @@ -90,11 +91,11 @@ module.exports = function(config) { outputDir: 'reports/', outputFile: 'test-karma.xml', }, - // These settings are added because the connection to Browserstack - // can sometimes be unstable, requiring re-connections, or a longer than - // 2000 ms (default) timeout - browserDisconnectTimeout: 50000, - browserDisconnectTolerance: 5, - concurrency: 5, + captureTimeout: 180000, + browserNoActivityTimeout: 180000, + browserDisconnectTimeout: 120000, + browserDisconnectTolerance: 1, + concurrency: 2, + retryLimit: 2, }); }; From 0afd2b8dd94d1441a2c84511af966f6f2323fa87 Mon Sep 17 00:00:00 2001 From: Jaissica Date: Tue, 4 Nov 2025 15:19:53 -0500 Subject: [PATCH 6/8] disable mobile BrowserStack tests on PRs --- .github/workflows/cross-browser-testing-android.yml | 2 +- .github/workflows/cross-browser-testing-iOS.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cross-browser-testing-android.yml b/.github/workflows/cross-browser-testing-android.yml index a3e1da209..d85d41536 100644 --- a/.github/workflows/cross-browser-testing-android.yml +++ b/.github/workflows/cross-browser-testing-android.yml @@ -1,5 +1,5 @@ name: 'BrowserStack Android Mobile Test' -on: [push, pull_request, workflow_dispatch] +on: [push, workflow_dispatch] jobs: browserstack-android-test: diff --git a/.github/workflows/cross-browser-testing-iOS.yml b/.github/workflows/cross-browser-testing-iOS.yml index a21596f8d..34db2d594 100644 --- a/.github/workflows/cross-browser-testing-iOS.yml +++ b/.github/workflows/cross-browser-testing-iOS.yml @@ -1,5 +1,5 @@ name: 'BrowserStack iOS Mobile Test' -on: [push, pull_request, workflow_dispatch] +on: [push, workflow_dispatch] jobs: browserstack-iOS-test: From adbedfea7357f91157697d2c594e56f85ce46c7a Mon Sep 17 00:00:00 2001 From: Jaissica Date: Wed, 5 Nov 2025 10:03:36 -0500 Subject: [PATCH 7/8] disable browserstack test on PRs --- .github/workflows/cross-browser-testing.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cross-browser-testing.yml b/.github/workflows/cross-browser-testing.yml index 1573eba7c..a7e2f5133 100644 --- a/.github/workflows/cross-browser-testing.yml +++ b/.github/workflows/cross-browser-testing.yml @@ -2,7 +2,7 @@ # https://github.com/browserstack/github-actions?tab=readme-ov-file#sample-workflow-with-usage-of-both-actions name: 'BrowserStack Test' -on: [push, pull_request, workflow_dispatch] +on: [push, workflow_dispatch] jobs: browserstack-test: From f2c7e29e2600b34b72bcda94e9d6629500080184 Mon Sep 17 00:00:00 2001 From: Jaissica Date: Mon, 15 Dec 2025 09:23:06 -0500 Subject: [PATCH 8/8] update concurrency to 5 for android browserStack tests --- test/cross-browser-testing/browserstack.karma.android.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cross-browser-testing/browserstack.karma.android.config.js b/test/cross-browser-testing/browserstack.karma.android.config.js index f1626e336..792ace099 100644 --- a/test/cross-browser-testing/browserstack.karma.android.config.js +++ b/test/cross-browser-testing/browserstack.karma.android.config.js @@ -145,7 +145,7 @@ module.exports = function(config) { browserNoActivityTimeout: 240000, browserDisconnectTimeout: 120000, browserDisconnectTolerance: 5, - concurrency: 2, + concurrency: 5, retryLimit: 2, }); };