Skip to content

Commit f44d3e7

Browse files
committed
refactor: split mobile browsers test into android and iOS
1 parent 4fed8db commit f44d3e7

File tree

5 files changed

+180
-80
lines changed

5 files changed

+180
-80
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
name: 'BrowserStack Android Mobile Test'
2+
on: [push, pull_request, workflow_dispatch]
3+
4+
jobs:
5+
browserstack-android-test:
6+
name: 'BrowserStack Android Mobile Test'
7+
runs-on: ubuntu-latest
8+
steps:
9+
- name: 'BrowserStack Env Setup'
10+
uses: browserstack/github-actions/setup-env@master
11+
with:
12+
username: ${{ secrets.BROWSERSTACK_USERNAME }}
13+
access-key: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
14+
15+
- name: 'BrowserStack Local Tunnel Setup'
16+
uses: browserstack/github-actions/setup-local@master
17+
with:
18+
local-testing: start
19+
local-identifier: random
20+
21+
- name: 'Checkout the repository'
22+
uses: actions/checkout@v3
23+
24+
- name: 'Run NPM CI'
25+
run: npm ci
26+
27+
- name: Run Build IIFE
28+
run: npm run build:iife
29+
30+
- name: 'Run NPM build test bundle'
31+
run: npm run build:test-bundle
32+
33+
- name: 'Run Browserstack Android Mobile Tests'
34+
run: npm run test:browserstack-android
35+
36+
- name: 'BrowserStackLocal Stop'
37+
uses: browserstack/github-actions/setup-local@master
38+
with:
39+
local-testing: stop

.github/workflows/cross-browser-testing-mobile.yml renamed to .github/workflows/cross-browser-testing-iOS.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
name: 'BrowserStack Mobile Test'
1+
name: 'BrowserStack iOS Mobile Test'
22
on: [push, pull_request, workflow_dispatch]
33

44
jobs:
5-
browserstack-mobile-test:
6-
name: 'BrowserStack Mobile Test'
5+
browserstack-iOS-test:
6+
name: 'BrowserStack iOS Mobile Test'
77
runs-on: ubuntu-latest
88
steps:
99
- name: 'BrowserStack Env Setup'
@@ -30,8 +30,8 @@ jobs:
3030
- name: 'Run NPM build test bundle'
3131
run: npm run build:test-bundle
3232

33-
- name: 'Run Browserstack Mobile Tests'
34-
run: npm run test:browserstack-mobile
33+
- name: 'Run Browserstack iOS Mobile Tests'
34+
run: npm run test:browserstack-iOS
3535

3636
- name: 'BrowserStackLocal Stop'
3737
uses: browserstack/github-actions/setup-local@master

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,10 @@
4343
"test": "npm run build && npm run build:test-bundle && cross-env DEBUG=false karma start test/karma.config.js",
4444
"test:browserstack": "karma start test/cross-browser-testing/browserstack.karma.config.js",
4545
"test:browserstack:debug": "cross-env DEBUG=true karma start test/cross-browser-testing/browserstack.karma.config.js",
46-
"test:browserstack-mobile": "karma start test/cross-browser-testing/browserstack.karma.mobile.config.js",
47-
"test:browserstack-mobile:debug": "cross-env DEBUG=true karma start test/cross-browser-testing/browserstack.karma.mobile.config.js",
46+
"test:browserstack-android": "karma start test/cross-browser-testing/browserstack.karma.android.config.js",
47+
"test:browserstack-android:debug": "cross-env DEBUG=true karma start test/cross-browser-testing/browserstack.karma.android.config.js",
48+
"test:browserstack-iOS": "karma start test/cross-browser-testing/browserstack.karma.iOS.config.js",
49+
"test:browserstack-iOS:debug": "cross-env DEBUG=true karma start test/cross-browser-testing/browserstack.karma.iOS.config.js",
4850
"test:debug": "cross-env DEBUG=true karma start test/karma.config.js",
4951
"test:stub": "cross-env TESTTYPE=stub ENVIRONMENT=prod rollup --config rollup.test.config.js && karma start test/stub/karma.stub.config.js",
5052
"test:integrations": "npm run test:requirejs && npm run test:integrations:cjs && npm run test:integrations:module",

test/cross-browser-testing/browserstack.karma.mobile.config.js renamed to test/cross-browser-testing/browserstack.karma.android.config.js

Lines changed: 1 addition & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ const customLaunchers = {
4242
},
4343
bs_android_16_opera: {
4444
base: 'BrowserStack',
45-
device: 'Google Pixel 9',
45+
device: 'Google Pixel 10 Pro',
4646
os: 'android',
4747
os_version: '16.0',
4848
real_mobile: true,
@@ -110,78 +110,6 @@ const customLaunchers = {
110110
real_mobile: true,
111111
browser: 'chrome'
112112
},
113-
114-
// iOS 26 - chrome, firefox, safari
115-
bs_ios_26_safari: {
116-
base: 'BrowserStack',
117-
device: 'iPhone 17 Pro',
118-
os: 'ios',
119-
os_version: '26',
120-
real_mobile: true,
121-
browser: 'safari'
122-
},
123-
bs_ios_26_chrome: {
124-
base: 'BrowserStack',
125-
device: 'iPad Air 5',
126-
os: 'ios',
127-
os_version: '26',
128-
real_mobile: true,
129-
browser: 'chrome'
130-
},
131-
bs_ios_26_firefox: {
132-
base: 'BrowserStack',
133-
device: 'iPhone Air',
134-
os: 'ios',
135-
os_version: '26',
136-
real_mobile: true,
137-
browser: 'firefox'
138-
},
139-
140-
// iOS 18 - chrome, firefox, safari
141-
bs_ios_18_safari: {
142-
base: 'BrowserStack',
143-
device: 'iPhone 16e',
144-
os: 'ios',
145-
os_version: '18',
146-
real_mobile: true,
147-
browser: 'safari'
148-
},
149-
bs_ios_18_chrome: {
150-
base: 'BrowserStack',
151-
device: 'iPad Pro 11 2021',
152-
os: 'ios',
153-
os_version: '18',
154-
real_mobile: true,
155-
browser: 'chrome'
156-
},
157-
bs_ios_18_firefox: {
158-
base: 'BrowserStack',
159-
device: 'iPhone 14',
160-
os: 'ios',
161-
os_version: '18',
162-
real_mobile: true,
163-
browser: 'firefox'
164-
},
165-
166-
// iOS 17 - chrome
167-
bs_ios_17_safari: {
168-
base: 'BrowserStack',
169-
device: 'iPhone 12',
170-
os: 'ios',
171-
os_version: '17',
172-
real_mobile: true,
173-
browser: 'chrome'
174-
},
175-
176-
// iOS 16 - safari
177-
bs_ios_16_safari: {
178-
base: 'BrowserStack',
179-
device: 'iPad 10th',
180-
os: 'ios',
181-
os_version: '16',
182-
real_mobile: true,
183-
browser: 'safari'
184-
},
185113
};
186114

187115
module.exports = function(config) {
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
const { DEBUG } = process.env;
2+
3+
const files = [
4+
'../lib/geomock.js',
5+
'../../dist/mparticle.js',
6+
'../test-bundle.js',
7+
];
8+
9+
let captureConsole = false;
10+
let browserConsoleLogOptions = {};
11+
12+
if (DEBUG === 'true') {
13+
browserConsoleLogOptions = {
14+
level: 'log',
15+
format: '%b %T: %m',
16+
terminal: true,
17+
};
18+
captureConsole = true;
19+
} else {
20+
browserConsoleLogOptions = {
21+
terminal: false,
22+
};
23+
}
24+
25+
const customLaunchers = {
26+
// iOS 26 - chrome, firefox, safari
27+
bs_ios_26_safari: {
28+
base: 'BrowserStack',
29+
device: 'iPhone 17 Pro',
30+
os: 'ios',
31+
os_version: '26',
32+
real_mobile: true,
33+
browser: 'safari'
34+
},
35+
bs_ios_26_chrome: {
36+
base: 'BrowserStack',
37+
device: 'iPad Air 5',
38+
os: 'ios',
39+
os_version: '26',
40+
real_mobile: true,
41+
browser: 'chrome'
42+
},
43+
bs_ios_26_firefox: {
44+
base: 'BrowserStack',
45+
device: 'iPhone Air',
46+
os: 'ios',
47+
os_version: '26',
48+
real_mobile: true,
49+
browser: 'firefox'
50+
},
51+
52+
// iOS 18 - chrome, firefox, safari
53+
bs_ios_18_safari: {
54+
base: 'BrowserStack',
55+
device: 'iPhone 16e',
56+
os: 'ios',
57+
os_version: '18',
58+
real_mobile: true,
59+
browser: 'safari'
60+
},
61+
bs_ios_18_chrome: {
62+
base: 'BrowserStack',
63+
device: 'iPad Pro 11 2021',
64+
os: 'ios',
65+
os_version: '18',
66+
real_mobile: true,
67+
browser: 'chrome'
68+
},
69+
bs_ios_18_firefox: {
70+
base: 'BrowserStack',
71+
device: 'iPhone 14',
72+
os: 'ios',
73+
os_version: '18',
74+
real_mobile: true,
75+
browser: 'firefox'
76+
},
77+
78+
// iOS 17 - chrome
79+
bs_ios_17_chrome: {
80+
base: 'BrowserStack',
81+
device: 'iPhone 12',
82+
os: 'ios',
83+
os_version: '17',
84+
real_mobile: true,
85+
browser: 'chrome'
86+
},
87+
88+
// iOS 16 - safari
89+
bs_ios_16_safari: {
90+
base: 'BrowserStack',
91+
device: 'iPad 10th',
92+
os: 'ios',
93+
os_version: '16',
94+
real_mobile: true,
95+
browser: 'safari'
96+
},
97+
};
98+
99+
module.exports = function(config) {
100+
config.set({
101+
browserStack: {
102+
username: process.env.BS_USERNAME,
103+
accessKey: process.env.BS_ACCESS_KEY,
104+
local: true,
105+
},
106+
autoWatch: false,
107+
customLaunchers,
108+
browsers: Object.keys(customLaunchers),
109+
frameworks: ['mocha', 'should'],
110+
files,
111+
reporters: ['progress', 'junit'],
112+
colors: true,
113+
singleRun: true,
114+
debug: true,
115+
logLevel: config.LOG_INFO,
116+
browserConsoleLogOptions,
117+
client: {
118+
captureConsole,
119+
mocha: {
120+
timeout: 10000
121+
}
122+
},
123+
junitReporter: {
124+
outputDir: 'reports/',
125+
outputFile: 'test-karma-mobile.xml',
126+
},
127+
browserDisconnectTimeout: 50000,
128+
browserDisconnectTolerance: 5,
129+
concurrency: 5,
130+
});
131+
};

0 commit comments

Comments
 (0)