Skip to content

Commit cee0d57

Browse files
vojtajinajamesdaily
authored andcommitted
chore(travis): let's give BrowserStack a try
Switch the build to use BrowserStack instead of SauceLabs. This also adds IE11 to our build.
1 parent 9d53616 commit cee0d57

File tree

6 files changed

+108
-8
lines changed

6 files changed

+108
-8
lines changed

.travis.yml

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@ env:
77
- SAUCE_USERNAME=angular-ci
88
- SAUCE_ACCESS_KEY=9b988f434ff8-fbca-8aa4-4ae3-35442987
99
- SAUCE_CONNECT_READY_FILE=/tmp/sauce-connect-ready
10+
- BROWSER_STACK_USERNAME=VojtaJina
11+
- BROWSER_STACK_ACCESS_KEY=HAfHZaypxAc3PEUrUU9a
1012
- LOGS_DIR=/tmp/angular-build/logs
1113

1214
before_script:
1315
- mkdir -p $LOGS_DIR
14-
- ./lib/sauce/sauce_connect_setup.sh
16+
- ./lib/browser-stack/start-tunnel.sh
1517
- npm install -g grunt-cli
1618
- grunt bower
1719
- grunt bower

karma-shared.conf.js

+52-4
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ module.exports = function(config, specificOptions) {
1515
tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER
1616
},
1717

18+
// BrowserStack config for Travis CI
19+
browserStack: {
20+
startTunnel: false
21+
},
22+
1823
// For more browsers on Sauce Labs see:
1924
// https://saucelabs.com/docs/platforms/webdriver
2025
customLaunchers: {
@@ -49,16 +54,59 @@ module.exports = function(config, specificOptions) {
4954
browserName: 'internet explorer',
5055
platform: 'Windows 2012',
5156
version: '10'
57+
},
58+
59+
'BS_Chrome': {
60+
base: 'BrowserStack',
61+
browser: 'chrome',
62+
os: 'OS X',
63+
os_version: 'Mountain Lion'
64+
},
65+
'BS_Safari': {
66+
base: 'BrowserStack',
67+
browser: 'safari',
68+
os: 'OS X',
69+
os_version: 'Mountain Lion'
70+
},
71+
'BS_Firefox': {
72+
base: 'BrowserStack',
73+
browser: 'firefox',
74+
os: 'Windows',
75+
os_version: '8'
76+
},
77+
'BS_IE_8': {
78+
base: 'BrowserStack',
79+
browser: 'ie',
80+
browser_version: '8.0',
81+
os: 'Windows',
82+
os_version: '7'
83+
},
84+
'BS_IE_9': {
85+
base: 'BrowserStack',
86+
browser: 'ie',
87+
browser_version: '9.0',
88+
os: 'Windows',
89+
os_version: '7'
90+
},
91+
'BS_IE_10': {
92+
base: 'BrowserStack',
93+
browser: 'ie',
94+
browser_version: '10.0',
95+
os: 'Windows',
96+
os_version: '8'
97+
},
98+
'BS_IE_11': {
99+
base: 'BrowserStack',
100+
browser: 'ie',
101+
browser_version: '11.0',
102+
os: 'Windows',
103+
os_version: '8.1'
52104
}
53105
}
54106
});
55107

56108

57109
if (process.env.TRAVIS) {
58-
// TODO(vojta): remove once SauceLabs supports websockets.
59-
// This speeds up the capturing a bit, as browsers don't even try to use websocket.
60-
config.transports = ['xhr-polling'];
61-
62110
// Debug logging into a file, that we print out at the end of the build.
63111
config.loggers.push({
64112
type: 'file',

lib/browser-stack/start-tunnel.js

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
var fs = require('fs');
2+
var http = require('http');
3+
var BrowserStackTunnel = require('browserstacktunnel-wrapper');
4+
5+
var HOSTNAME = 'localhost';
6+
var PORTS = [9090, 9876];
7+
var ACCESS_KEY = process.env.BROWSER_STACK_ACCESS_KEY;
8+
var READY_FILE = process.env.SAUCE_CONNECT_READY_FILE;
9+
10+
// We need to start fake servers, otherwise the tunnel does not start.
11+
var fakeServers = [];
12+
var hosts = [];
13+
14+
PORTS.forEach(function(port) {
15+
fakeServers.push(http.createServer(function() {}).listen(port));
16+
hosts.push({
17+
name: HOSTNAME,
18+
port: port,
19+
sslFlag: 0
20+
});
21+
});
22+
23+
var tunnel = new BrowserStackTunnel({
24+
key: ACCESS_KEY,
25+
hosts: hosts
26+
});
27+
28+
29+
tunnel.start(function(error) {
30+
console.log('** callback **')
31+
if (error) {
32+
console.error('Can not establish the tunnel', error);
33+
} else {
34+
console.log('Tunnel established.');
35+
fakeServers.forEach(function(server) {
36+
server.close();
37+
});
38+
39+
if (READY_FILE) {
40+
fs.writeFile(READY_FILE, '');
41+
}
42+
}
43+
});
44+
45+
tunnel.on('error', function(error) {
46+
console.error(error);
47+
});

lib/browser-stack/start-tunnel.sh

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node ./lib/browser-stack/start-tunnel.js &

package.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@
3737
"promises-aplus-tests": "~1.3.2",
3838
"grunt-shell": "~0.4.0",
3939
"semver": "~2.1.0",
40-
"lodash": "~2.1.0"
40+
"lodash": "~2.1.0",
41+
"karma-browserstack-launcher": "~0.0.4",
42+
"browserstacktunnel-wrapper": "~1.1.1"
4143
},
4244
"licenses": [
4345
{

travis_build.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ set -e
55
export SAUCE_ACCESS_KEY=`echo $SAUCE_ACCESS_KEY | rev`
66

77
grunt parallel:travis --reporters dots \
8-
--browsers SL_Chrome,SL_Safari,SL_Firefox,SL_IE_8,SL_IE_9,SL_IE_10 \
9-
--e2e-browsers SL_Chrome
8+
--browsers BS_Chrome,BS_Safari,BS_Firefox,BS_IE_8,BS_IE_9,BS_IE_10,BS_IE_11 \
9+
--e2e-browsers BS_Chrome

0 commit comments

Comments
 (0)