aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVojta Jina2013-11-19 16:50:23 -0800
committerVojta Jina2013-11-25 15:19:28 -0800
commitffd075b44010102e628ce3ade9a54bfde80fdd76 (patch)
tree928593912d840e5a88b35d8bfe148f7cf0a7a5fd
parent3fcd228441a70bd69090aa6d5c01ad194a4dd10c (diff)
downloadangular.js-ffd075b44010102e628ce3ade9a54bfde80fdd76.tar.bz2
chore(travis): let's give BrowserStack a try
Switch the build to use BrowserStack instead of SauceLabs. This also adds IE11 to our build.
-rw-r--r--.travis.yml4
-rw-r--r--karma-shared.conf.js56
-rw-r--r--lib/browser-stack/start-tunnel.js47
-rwxr-xr-xlib/browser-stack/start-tunnel.sh1
-rw-r--r--package.json4
-rwxr-xr-xtravis_build.sh4
6 files changed, 108 insertions, 8 deletions
diff --git a/.travis.yml b/.travis.yml
index 4d0bfcdf..0c31fbe8 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -7,11 +7,13 @@ env:
- SAUCE_USERNAME=angular-ci
- SAUCE_ACCESS_KEY=9b988f434ff8-fbca-8aa4-4ae3-35442987
- SAUCE_CONNECT_READY_FILE=/tmp/sauce-connect-ready
+ - BROWSER_STACK_USERNAME=VojtaJina
+ - BROWSER_STACK_ACCESS_KEY=HAfHZaypxAc3PEUrUU9a
- LOGS_DIR=/tmp/angular-build/logs
before_script:
- mkdir -p $LOGS_DIR
- - ./lib/sauce/sauce_connect_setup.sh
+ - ./lib/browser-stack/start-tunnel.sh
- npm install -g grunt-cli
- grunt bower
- grunt bower
diff --git a/karma-shared.conf.js b/karma-shared.conf.js
index cd51697f..645660f7 100644
--- a/karma-shared.conf.js
+++ b/karma-shared.conf.js
@@ -15,6 +15,11 @@ module.exports = function(config, specificOptions) {
tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER
},
+ // BrowserStack config for Travis CI
+ browserStack: {
+ startTunnel: false
+ },
+
// For more browsers on Sauce Labs see:
// https://saucelabs.com/docs/platforms/webdriver
customLaunchers: {
@@ -49,16 +54,59 @@ module.exports = function(config, specificOptions) {
browserName: 'internet explorer',
platform: 'Windows 2012',
version: '10'
+ },
+
+ 'BS_Chrome': {
+ base: 'BrowserStack',
+ browser: 'chrome',
+ os: 'OS X',
+ os_version: 'Mountain Lion'
+ },
+ 'BS_Safari': {
+ base: 'BrowserStack',
+ browser: 'safari',
+ os: 'OS X',
+ os_version: 'Mountain Lion'
+ },
+ 'BS_Firefox': {
+ base: 'BrowserStack',
+ browser: 'firefox',
+ os: 'Windows',
+ os_version: '8'
+ },
+ 'BS_IE_8': {
+ base: 'BrowserStack',
+ browser: 'ie',
+ browser_version: '8.0',
+ os: 'Windows',
+ os_version: '7'
+ },
+ 'BS_IE_9': {
+ base: 'BrowserStack',
+ browser: 'ie',
+ browser_version: '9.0',
+ os: 'Windows',
+ os_version: '7'
+ },
+ 'BS_IE_10': {
+ base: 'BrowserStack',
+ browser: 'ie',
+ browser_version: '10.0',
+ os: 'Windows',
+ os_version: '8'
+ },
+ 'BS_IE_11': {
+ base: 'BrowserStack',
+ browser: 'ie',
+ browser_version: '11.0',
+ os: 'Windows',
+ os_version: '8.1'
}
}
});
if (process.env.TRAVIS) {
- // TODO(vojta): remove once SauceLabs supports websockets.
- // This speeds up the capturing a bit, as browsers don't even try to use websocket.
- config.transports = ['xhr-polling'];
-
// Debug logging into a file, that we print out at the end of the build.
config.loggers.push({
type: 'file',
diff --git a/lib/browser-stack/start-tunnel.js b/lib/browser-stack/start-tunnel.js
new file mode 100644
index 00000000..f2b475d8
--- /dev/null
+++ b/lib/browser-stack/start-tunnel.js
@@ -0,0 +1,47 @@
+var fs = require('fs');
+var http = require('http');
+var BrowserStackTunnel = require('browserstacktunnel-wrapper');
+
+var HOSTNAME = 'localhost';
+var PORTS = [9090, 9876];
+var ACCESS_KEY = process.env.BROWSER_STACK_ACCESS_KEY;
+var READY_FILE = process.env.SAUCE_CONNECT_READY_FILE;
+
+// We need to start fake servers, otherwise the tunnel does not start.
+var fakeServers = [];
+var hosts = [];
+
+PORTS.forEach(function(port) {
+ fakeServers.push(http.createServer(function() {}).listen(port));
+ hosts.push({
+ name: HOSTNAME,
+ port: port,
+ sslFlag: 0
+ });
+});
+
+var tunnel = new BrowserStackTunnel({
+ key: ACCESS_KEY,
+ hosts: hosts
+});
+
+
+tunnel.start(function(error) {
+ console.log('** callback **')
+ if (error) {
+ console.error('Can not establish the tunnel', error);
+ } else {
+ console.log('Tunnel established.');
+ fakeServers.forEach(function(server) {
+ server.close();
+ });
+
+ if (READY_FILE) {
+ fs.writeFile(READY_FILE, '');
+ }
+ }
+});
+
+tunnel.on('error', function(error) {
+ console.error(error);
+});
diff --git a/lib/browser-stack/start-tunnel.sh b/lib/browser-stack/start-tunnel.sh
new file mode 100755
index 00000000..51ad07fb
--- /dev/null
+++ b/lib/browser-stack/start-tunnel.sh
@@ -0,0 +1 @@
+node ./lib/browser-stack/start-tunnel.js &
diff --git a/package.json b/package.json
index 95266bad..2bdc95ab 100644
--- a/package.json
+++ b/package.json
@@ -37,7 +37,9 @@
"promises-aplus-tests": "~1.3.2",
"grunt-shell": "~0.4.0",
"semver": "~2.1.0",
- "lodash": "~2.1.0"
+ "lodash": "~2.1.0",
+ "karma-browserstack-launcher": "~0.0.4",
+ "browserstacktunnel-wrapper": "~1.1.1"
},
"licenses": [
{
diff --git a/travis_build.sh b/travis_build.sh
index 735bdd2c..e51db211 100755
--- a/travis_build.sh
+++ b/travis_build.sh
@@ -5,5 +5,5 @@ set -e
export SAUCE_ACCESS_KEY=`echo $SAUCE_ACCESS_KEY | rev`
grunt parallel:travis --reporters dots \
- --browsers SL_Chrome,SL_Safari,SL_Firefox,SL_IE_8,SL_IE_9,SL_IE_10 \
- --e2e-browsers SL_Chrome
+ --browsers BS_Chrome,BS_Safari,BS_Firefox,BS_IE_8,BS_IE_9,BS_IE_10,BS_IE_11 \
+ --e2e-browsers BS_Chrome