X Tutup
Skip to content

Commit 4291758

Browse files
committed
build(sauce/bs): make some browsers required in CI
Closes angular#5795
1 parent b44d36c commit 4291758

File tree

7 files changed

+78
-25
lines changed

7 files changed

+78
-25
lines changed

.travis.yml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,10 @@ env:
3737
# Order: a slower build first, so that we don't occupy an idle travis worker waiting for others to complete.
3838
- MODE=dart DART_CHANNEL=stable DART_VERSION=$DART_STABLE_VERSION
3939
- MODE=dart DART_CHANNEL=dev DART_VERSION=$DART_DEV_VERSION
40-
- MODE=saucelabs DART_CHANNEL=dev DART_VERSION=$DART_DEV_VERSION
41-
- MODE=browserstack DART_CHANNEL=dev DART_VERSION=$DART_DEV_VERSION
40+
- MODE=saucelabs_required DART_CHANNEL=dev DART_VERSION=$DART_DEV_VERSION
41+
- MODE=browserstack_required DART_CHANNEL=dev DART_VERSION=$DART_DEV_VERSION
42+
- MODE=saucelabs_optional DART_CHANNEL=dev DART_VERSION=$DART_DEV_VERSION
43+
- MODE=browserstack_optional DART_CHANNEL=dev DART_VERSION=$DART_DEV_VERSION
4244
- MODE=dart_experimental DART_CHANNEL=dev DART_VERSION=$DART_DEV_VERSION
4345
- MODE=js DART_CHANNEL=dev DART_VERSION=$DART_DEV_VERSION
4446
- MODE=router DART_CHANNEL=dev DART_VERSION=$DART_DEV_VERSION
@@ -48,8 +50,8 @@ env:
4850

4951
matrix:
5052
allow_failures:
51-
- env: "MODE=saucelabs DART_CHANNEL=dev DART_VERSION=$DART_DEV_VERSION"
52-
- env: "MODE=browserstack DART_CHANNEL=dev DART_VERSION=$DART_DEV_VERSION"
53+
- env: "MODE=saucelabs_optional DART_CHANNEL=dev DART_VERSION=$DART_DEV_VERSION"
54+
- env: "MODE=browserstack_optional DART_CHANNEL=dev DART_VERSION=$DART_DEV_VERSION"
5355
- env: "MODE=dart_experimental DART_CHANNEL=dev DART_VERSION=$DART_DEV_VERSION"
5456
# TODO(alxhub): remove when dartdoc #1039 is in dev channel
5557
- env: "MODE=dart DART_CHANNEL=dev DART_VERSION=$DART_DEV_VERSION"

browser-providers.conf.js

Lines changed: 50 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,32 @@
1+
// Unique place to configure the browsers which are used in the different CI jobs in Sauce Labs (SL) and BrowserStack (BS).
2+
// If the target is set to null, then the browser is not run anywhere during CI.
3+
// If a category becomes empty (e.g. BS and required), then the corresponding job must be commented out in Travis configuration.
4+
var CIconfiguration = {
5+
'Chrome': { unitTest: {target: 'SL', required: true}, e2e: {target: null, required: true}},
6+
'Firefox': { unitTest: {target: 'SL', required: true}, e2e: {target: null, required: true}},
7+
'ChromeBeta': { unitTest: {target: 'SL', required: true}, e2e: {target: null, required: true}},
8+
'FirefoxBeta': { unitTest: {target: 'SL', required: true}, e2e: {target: null, required: true}},
9+
'ChromeDev': { unitTest: {target: null, required: true}, e2e: {target: null, required: true}},
10+
'FirefoxDev': { unitTest: {target: null, required: true}, e2e: {target: null, required: true}},
11+
'IE9': { unitTest: {target: 'SL', required: false}, e2e: {target: null, required: true}},
12+
'IE10': { unitTest: {target: 'SL', required: true}, e2e: {target: null, required: true}},
13+
'IE11': { unitTest: {target: 'SL', required: true}, e2e: {target: null, required: true}},
14+
'Edge': { unitTest: {target: 'SL', required: true}, e2e: {target: null, required: true}},
15+
'Android4.1': { unitTest: {target: 'SL', required: false}, e2e: {target: null, required: true}},
16+
'Android4.2': { unitTest: {target: 'SL', required: false}, e2e: {target: null, required: true}},
17+
'Android4.3': { unitTest: {target: 'SL', required: false}, e2e: {target: null, required: true}},
18+
'Android4.4': { unitTest: {target: 'SL', required: false}, e2e: {target: null, required: true}},
19+
'Android5': { unitTest: {target: 'SL', required: false}, e2e: {target: null, required: true}},
20+
'Safari7': { unitTest: {target: 'BS', required: false}, e2e: {target: null, required: true}},
21+
'Safari8': { unitTest: {target: 'BS', required: false}, e2e: {target: null, required: true}},
22+
'Safari9': { unitTest: {target: 'BS', required: false}, e2e: {target: null, required: true}},
23+
'iOS7': { unitTest: {target: 'BS', required: true}, e2e: {target: null, required: true}},
24+
'iOS8': { unitTest: {target: 'BS', required: false}, e2e: {target: null, required: true}},
25+
// TODO(mlaval): iOS9 deactivated as not reliable, reactivate after https://github.com/angular/angular/issues/5408
26+
'iOS9': { unitTest: {target: null, required: false}, e2e: {target: null, required: true}},
27+
'WindowsPhone': { unitTest: {target: 'BS', required: false}, e2e: {target: null, required: true}}
28+
};
29+
130
var customLaunchers = {
231
'DartiumWithWebPlatform': {
332
base: 'Dartium',
@@ -47,7 +76,7 @@ var customLaunchers = {
4776
platform: 'OS X 10.10',
4877
version: '8'
4978
},
50-
'SL_SAFARI9.0': {
79+
'SL_SAFARI9': {
5180
base: 'SauceLabs',
5281
browserName: 'safari',
5382
platform: 'OS X 10.11',
@@ -119,7 +148,7 @@ var customLaunchers = {
119148
platform: 'Linux',
120149
version: '4.4'
121150
},
122-
'SL_ANDROID5.1': {
151+
'SL_ANDROID5': {
123152
base: 'SauceLabs',
124153
browserName: 'android',
125154
platform: 'Linux',
@@ -239,21 +268,18 @@ var customLaunchers = {
239268
}
240269
};
241270

242-
// iOS9 deactivated as not reliable in both providers
243-
// TODO(mlaval): reactivate after https://github.com/angular/angular/issues/5408
244-
245271
var sauceAliases = {
246272
'ALL': Object.keys(customLaunchers).filter(function(item) {return customLaunchers[item].base == 'SauceLabs';}),
247-
'DESKTOP': ['SL_CHROME', 'SL_FIREFOX', 'SL_IE9', 'SL_IE10', 'SL_IE11', 'SL_EDGE', 'SL_SAFARI7', 'SL_SAFARI8', 'SL_SAFARI9.0'],
248-
'MOBILE': ['SL_ANDROID4.1', 'SL_ANDROID4.2', 'SL_ANDROID4.3', 'SL_ANDROID4.4', 'SL_ANDROID5.1', 'SL_IOS7', 'SL_IOS8', 'SL_IOS9'],
249-
'ANDROID': ['SL_ANDROID4.1', 'SL_ANDROID4.2', 'SL_ANDROID4.3', 'SL_ANDROID4.4', 'SL_ANDROID5.1'],
273+
'DESKTOP': ['SL_CHROME', 'SL_FIREFOX', 'SL_IE9', 'SL_IE10', 'SL_IE11', 'SL_EDGE', 'SL_SAFARI7', 'SL_SAFARI8', 'SL_SAFARI9'],
274+
'MOBILE': ['SL_ANDROID4.1', 'SL_ANDROID4.2', 'SL_ANDROID4.3', 'SL_ANDROID4.4', 'SL_ANDROID5', 'SL_IOS7', 'SL_IOS8', 'SL_IOS9'],
275+
'ANDROID': ['SL_ANDROID4.1', 'SL_ANDROID4.2', 'SL_ANDROID4.3', 'SL_ANDROID4.4', 'SL_ANDROID5'],
250276
'IE': ['SL_IE9', 'SL_IE10', 'SL_IE11'],
251277
'IOS': ['SL_IOS7', 'SL_IOS8', 'SL_IOS9'],
252-
'SAFARI': ['SL_SAFARI7', 'SL_SAFARI8', 'SL_SAFARI9.0'],
278+
'SAFARI': ['SL_SAFARI7', 'SL_SAFARI8', 'SL_SAFARI9'],
253279
'BETA': ['SL_CHROMEBETA', 'SL_FIREFOXBETA'],
254280
'DEV': ['SL_CHROMEDEV', 'SL_FIREFOXDEV'],
255-
'CI': ['SL_CHROME',' SL_FIREFOX', 'SL_CHROMEDEV', 'SL_FIREFOXBETA', 'SL_IE9', 'SL_IE10', 'SL_IE11', 'SL_EDGE',
256-
'SL_ANDROID4.1', 'SL_ANDROID4.2', 'SL_ANDROID4.3', 'SL_ANDROID4.4', 'SL_ANDROID5.1']
281+
'CI_REQUIRED': buildConfiguration('unitTest', 'SL', true),
282+
'CI_OPTIONAL': buildConfiguration('unitTest', 'SL', false)
257283
};
258284

259285
var browserstackAliases = {
@@ -264,7 +290,8 @@ var browserstackAliases = {
264290
'IE': ['BS_IE9', 'BS_IE10', 'BS_IE11'],
265291
'IOS': ['BS_IOS7', 'BS_IOS8', 'BS_IOS9'],
266292
'SAFARI': ['BS_SAFARI7', 'BS_SAFARI8', 'BS_SAFARI9'],
267-
'CI': ['BS_SAFARI7', 'BS_SAFARI8', 'BS_SAFARI9', 'BS_IOS7', 'BS_IOS8', 'BS_WINDOWSPHONE']
293+
'CI_REQUIRED': buildConfiguration('unitTest', 'BS', true),
294+
'CI_OPTIONAL': buildConfiguration('unitTest', 'BS', false)
268295
};
269296

270297
module.exports = {
@@ -277,3 +304,14 @@ if (process.env.TRAVIS) {
277304
process.env.SAUCE_ACCESS_KEY = process.env.SAUCE_ACCESS_KEY.split('').reverse().join('');
278305
process.env.BROWSER_STACK_ACCESS_KEY = process.env.BROWSER_STACK_ACCESS_KEY.split('').reverse().join('');
279306
}
307+
308+
function buildConfiguration(type, target, required) {
309+
return Object.keys(CIconfiguration)
310+
.filter((item) => {
311+
var conf = CIconfiguration[item][type];
312+
return conf.required === required && conf.target === target;
313+
})
314+
.map((item) => {
315+
return target + '_' + item.toUpperCase();
316+
});
317+
}

gulpfile.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -720,12 +720,19 @@ gulp.task('test.unit.js/ci', function(done) {
720720
});
721721

722722
gulp.task('test.unit.js.sauce/ci', function(done) {
723-
launchKarmaWithExternalBrowsers(['dots', 'saucelabs'], browserProvidersConf.sauceAliases.CI,
724-
done);
723+
var browsers = browserProvidersConf.sauceAliases.CI_REQUIRED;
724+
if (cliArgs.mode && cliArgs.mode == 'saucelabs_optional') {
725+
browsers = browserProvidersConf.sauceAliases.CI_OPTIONAL;
726+
}
727+
launchKarmaWithExternalBrowsers(['dots', 'saucelabs'], browsers, done);
725728
});
726729

727730
gulp.task('test.unit.js.browserstack/ci', function(done) {
728-
launchKarmaWithExternalBrowsers(['dots'], browserProvidersConf.browserstackAliases.CI, done);
731+
var browsers = browserProvidersConf.browserstackAliases.CI_REQUIRED;
732+
if (cliArgs.mode && cliArgs.mode == 'browserstack_optional') {
733+
browsers = browserProvidersConf.browserstackAliases.CI_OPTIONAL;
734+
}
735+
launchKarmaWithExternalBrowsers(['dots'], browsers, done);
729736
});
730737

731738
gulp.task('test.unit.dart/ci', function(done) {

karma-js.conf.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ module.exports = function(config) {
7979

8080
if (process.env.TRAVIS) {
8181
var buildId = 'TRAVIS #' + process.env.TRAVIS_BUILD_NUMBER + ' (' + process.env.TRAVIS_BUILD_ID + ')';
82-
if (process.env.MODE === 'saucelabs') {
82+
if (process.env.MODE.startsWith('saucelabs')) {
8383
config.sauceLabs.build = buildId;
8484
config.sauceLabs.tunnelIdentifier = process.env.TRAVIS_JOB_NUMBER;
8585

@@ -89,7 +89,7 @@ module.exports = function(config) {
8989
config.transports = ['polling'];
9090
}
9191

92-
if (process.env.MODE === 'browserstack') {
92+
if (process.env.MODE.startsWith('browserstack')) {
9393
config.browserStack.build = buildId;
9494
config.browserStack.tunnelIdentifier = process.env.TRAVIS_JOB_NUMBER;
9595
}

scripts/ci/build_and_test.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ cd $SCRIPT_DIR/../..
1010

1111
if [ "$MODE" = "dart_experimental" ]; then
1212
${SCRIPT_DIR}/build_$MODE.sh
13-
elif [ "$MODE" = "saucelabs" ] || [ "$MODE" = "browserstack" ] ; then
14-
${SCRIPT_DIR}/test_$MODE.sh
13+
elif [[ $MODE = saucelabs* ]] ; then
14+
${SCRIPT_DIR}/test_saucelabs.sh $MODE
15+
elif [[ $MODE = browserstack* ]] ; then
16+
${SCRIPT_DIR}/test_browserstack.sh $MODE
1517
elif [ "$MODE" = "lint" ]; then
1618
./node_modules/.bin/gulp static-checks
1719
elif [ "$MODE" = "build_only" ]; then

scripts/ci/test_browserstack.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#!/bin/bash
22
set -e
33

4+
MODE=$1
5+
46
echo =============================================================================
57
# go to project dir
68
SCRIPT_DIR=$(dirname $0)
@@ -9,4 +11,4 @@ cd $SCRIPT_DIR/../..
911
./scripts/browserstack/start_tunnel.sh
1012
./scripts/browserstack/waitfor_tunnel.sh
1113
./node_modules/.bin/gulp build.js.dev
12-
./node_modules/.bin/gulp test.unit.js.browserstack/ci
14+
./node_modules/.bin/gulp test.unit.js.browserstack/ci --mode=$MODE

scripts/ci/test_saucelabs.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#!/bin/bash
22
set -e
33

4+
MODE=$1
5+
46
echo =============================================================================
57
# go to project dir
68
SCRIPT_DIR=$(dirname $0)
@@ -9,4 +11,4 @@ cd $SCRIPT_DIR/../..
911
./scripts/sauce/sauce_connect_setup.sh
1012
./scripts/sauce/sauce_connect_block.sh
1113
./node_modules/.bin/gulp build.js.dev
12-
./node_modules/.bin/gulp test.unit.js.sauce/ci
14+
./node_modules/.bin/gulp test.unit.js.sauce/ci --mode=$MODE

0 commit comments

Comments
 (0)
X Tutup