From 9a77d030471939464cd8ee1fb4b1af0a3532d799 Mon Sep 17 00:00:00 2001 From: Vojta Jina Date: Fri, 28 Jun 2013 16:36:30 -0700 Subject: [PATCH] chore: set up Sauce Labs with Travis This should not affect the Jenkins build at all. Now, the Travis build uses Chrome on Sauce Labs, which in theory gives us opportunity to use any browser/platform that Sauce Labs offers. --- .travis.yml | 13 ++++++++++--- karma-e2e.conf.js | 2 ++ karma-jqlite.conf.js | 2 ++ karma-jquery.conf.js | 2 ++ karma-modules.conf.js | 2 ++ karma-shared.conf.js | 16 +++++++++++++++- lib/sauce/sauce_connect_block.sh | 7 +++++++ lib/sauce/sauce_connect_setup.sh | 32 ++++++++++++++++++++++++++++++++ package.json | 1 + 9 files changed, 73 insertions(+), 4 deletions(-) create mode 100755 lib/sauce/sauce_connect_block.sh create mode 100755 lib/sauce/sauce_connect_setup.sh diff --git a/.travis.yml b/.travis.yml index b35887093..92da3ed94 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,12 +2,19 @@ language: node_js node_js: - 0.8 +env: + global: + - SAUCE_USERNAME=angular-ci + - SAUCE_ACCESS_KEY=9b988f434ff8-fbca-8aa4-4ae3-35442987 + - SAUCE_CONNECT_READY_FILE=/tmp/sauce-connect-ready + before_script: - - export DISPLAY=:99.0 - - sh -e /etc/init.d/xvfb start + - export SAUCE_ACCESS_KEY=`echo $SAUCE_ACCESS_KEY | rev` + - ./lib/sauce/sauce_connect_setup.sh - npm install -g grunt-cli - grunt package - grunt webserver > /dev/null & + - ./lib/sauce/sauce_connect_block.sh script: - - grunt test --browsers Firefox --reporters=dots + - grunt test --reporters dots --browsers SL_Chrome diff --git a/karma-e2e.conf.js b/karma-e2e.conf.js index 78cc1b27c..6ae5e6236 100644 --- a/karma-e2e.conf.js +++ b/karma-e2e.conf.js @@ -20,4 +20,6 @@ module.exports = function(config) { suite: 'E2E' } }); + + config.sauceLabs.testName = 'AngularJS: e2e'; }; diff --git a/karma-jqlite.conf.js b/karma-jqlite.conf.js index d3a297a8c..bf190f5ee 100644 --- a/karma-jqlite.conf.js +++ b/karma-jqlite.conf.js @@ -13,4 +13,6 @@ module.exports = function(config) { suite: 'jqLite' } }); + + config.sauceLabs.testName = 'AngularJS: jqLite'; }; diff --git a/karma-jquery.conf.js b/karma-jquery.conf.js index 236824f77..126b3e1d2 100644 --- a/karma-jquery.conf.js +++ b/karma-jquery.conf.js @@ -13,4 +13,6 @@ module.exports = function(config) { suite: 'jQuery' } }); + + config.sauceLabs.testName = 'AngularJS: jQuery'; }; diff --git a/karma-modules.conf.js b/karma-modules.conf.js index 38c22b817..9bbdec673 100644 --- a/karma-modules.conf.js +++ b/karma-modules.conf.js @@ -12,4 +12,6 @@ module.exports = function(config) { suite: 'modules' } }); + + config.sauceLabs.testName = 'AngularJS: modules'; }; diff --git a/karma-shared.conf.js b/karma-shared.conf.js index 70be8c978..3157d50f5 100644 --- a/karma-shared.conf.js +++ b/karma-shared.conf.js @@ -4,6 +4,20 @@ module.exports = function(config) { autoWatch: true, logLevel: config.LOG_INFO, logColors: true, - browsers: ['Chrome'] + browsers: ['Chrome'], + + // config for Travis CI + sauceLabs: { + testName: 'AngularJS', + startConnect: false, + tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER + }, + + customLaunchers: { + 'SL_Chrome': { + base: 'SauceLabs', + browserName: 'chrome' + } + } }); }; diff --git a/lib/sauce/sauce_connect_block.sh b/lib/sauce/sauce_connect_block.sh new file mode 100755 index 000000000..126d37109 --- /dev/null +++ b/lib/sauce/sauce_connect_block.sh @@ -0,0 +1,7 @@ +#!/bin/bash + + +# Wait for Connect to be ready before exiting +while [ ! -f $SAUCE_CONNECT_READY_FILE ]; do + sleep .5 +done diff --git a/lib/sauce/sauce_connect_setup.sh b/lib/sauce/sauce_connect_setup.sh new file mode 100755 index 000000000..7ca8917b7 --- /dev/null +++ b/lib/sauce/sauce_connect_setup.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +set -e + +# Setup and start Sauce Connect for your TravisCI build +# This script requires your .travis.yml to include the following two private env variables: +# SAUCE_USERNAME +# SAUCE_ACCESS_KEY +# Follow the steps at https://saucelabs.com/opensource/travis to set that up. +# +# Curl and run this script as part of your .travis.yml before_script section: +# before_script: +# - curl https://gist.github.com/santiycr/5139565/raw/sauce_connect_setup.sh | bash + +CONNECT_URL="http://saucelabs.com/downloads/Sauce-Connect-latest.zip" +CONNECT_DIR="/tmp/sauce-connect-$RANDOM" +CONNECT_DOWNLOAD="Sauce_Connect.zip" +CONNECT_LOG="$CONNECT_DIR/log" + +# Get Connect and start it +mkdir -p $CONNECT_DIR +cd $CONNECT_DIR +curl $CONNECT_URL > $CONNECT_DOWNLOAD 2> /dev/null +unzip $CONNECT_DOWNLOAD +rm $CONNECT_DOWNLOAD + + +echo "Starting Sauce Connect in the background" +echo "Logging into $CONNECT_LOG" +java -jar Sauce-Connect.jar --readyfile $SAUCE_CONNECT_READY_FILE \ + --tunnel-identifier $TRAVIS_JOB_NUMBER \ + $SAUCE_USERNAME $SAUCE_ACCESS_KEY > $CONNECT_LOG & diff --git a/package.json b/package.json index 4e5b0a4a7..c3eba39b0 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "karma-firefox-launcher": "~0.0.1", "karma-ng-scenario": "~0.0.1", "karma-junit-reporter": "~0.0.1", + "karma-sauce-launcher": "~0.0.4", "yaml-js": "0.0.5", "showdown": "0.3.1" },