diff options
| author | Vojta Jina | 2013-11-19 16:50:23 -0800 |
|---|---|---|
| committer | Vojta Jina | 2013-11-25 15:19:28 -0800 |
| commit | ffd075b44010102e628ce3ade9a54bfde80fdd76 (patch) | |
| tree | 928593912d840e5a88b35d8bfe148f7cf0a7a5fd | |
| parent | 3fcd228441a70bd69090aa6d5c01ad194a4dd10c (diff) | |
| download | angular.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.yml | 4 | ||||
| -rw-r--r-- | karma-shared.conf.js | 56 | ||||
| -rw-r--r-- | lib/browser-stack/start-tunnel.js | 47 | ||||
| -rwxr-xr-x | lib/browser-stack/start-tunnel.sh | 1 | ||||
| -rw-r--r-- | package.json | 4 | ||||
| -rwxr-xr-x | travis_build.sh | 4 |
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 |
