Skip to content

Commit b2efe7a

Browse files
committed
Merge pull request #2059 from jashkenas/sauce-setup
SauceLabs setup
2 parents 26bb970 + 965f45b commit b2efe7a

File tree

3 files changed

+105
-23
lines changed

3 files changed

+105
-23
lines changed

.travis.yml

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
language: node_js
2-
addons:
3-
firefox: "10.0"
42
node_js:
53
- "0.8"
64
- "0.12"
@@ -9,15 +7,26 @@ matrix:
97
include:
108
- node_js: "0.10"
119
env: BROWSER=true
12-
env: BROWSER=false
1310
before_install:
1411
- npm install -g npm
15-
- if [[ $BROWSER == true ]]; then npm install karma-phantomjs-launcher karma-firefox-launcher; fi
12+
- npm install -g karma-cli
1613
before_script:
14+
- npm install karma-sauce-launcher
1715
- export DISPLAY=:99.0
1816
- sh -e /etc/init.d/xvfb start
1917
script:
2018
- npm test
21-
- "[ $BROWSER == false ] || ./node_modules/karma/bin/karma start --browsers Firefox,PhantomJS"
19+
- "[ $BROWSER == false ] || npm run test-browser"
20+
# Karma sauce is limited to running about 5-7 browsers (or it will tiemout) at a time so we just run vendor by vendor here
21+
- "[ $BROWSER == false ] || karma start karma.conf-sauce.js --browsers FIREFOX_V4,FIREFOX_V11,FIREFOX_V20,FIREFOX_V30,FIREFOX_V35"
22+
- "[ $BROWSER == false ] || karma start karma.conf-sauce.js --browsers CHROME_V28,CHROME_V35,CHROME_V40,ANDROID_V4.0,ANDROID_V4.3"
23+
- "[ $BROWSER == false ] || karma start karma.conf-sauce.js --browsers INTERNET_EXPLORER_V9,INTERNET_EXPLORER_V10,INTERNET_EXPLORER_V11"
24+
- "[ $BROWSER == false ] || karma start karma.conf-sauce.js --browsers SAFARI_V5,SAFARI_V6,SAFARI_V7"
25+
- "[ $BROWSER == false ] || karma start karma.conf-sauce.js --browsers OPERA_V11,OPERA_V12"
2226
notifications:
2327
email: false
28+
env:
29+
global:
30+
- secure: bDZSBQfqr21hCayjcZ20IxrV6+XGhxQPFIfwWqEKLrF93Gu8LLVjZRxXE/mE8I8N4Z5WtDNb4ZHrm/TTzmcPa5MuHgIxEdknQCncobH8oimwc83SHwEPk6okeNKl39VlCjvvnmoe/V/KpnknuYn3Rqghtl/Uv9KLpCwskwjTtcw=
31+
- secure: SRECgXuwcZTcD3GVxTS2bYNgRyye4vq6BLrV2PH9FyNenowsKQR2EwlC/dppc1Q8NWMgv79J/R96q9JOFh+mEH9L5dlBb2yhnGH8amVeM/ChAJHT/F8YktKM453uVpz5fR00QcCQDDUOx6Pvx374ID0OKNpWKAkQBWA9mPTsLnE=
32+
matrix: BROWSER=false

karma.conf-sauce.js

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
var _ = require('./');
2+
3+
// Browsers to run on Sauce Labs platforms
4+
var sauceBrowsers = _.reduce([
5+
['firefox', '35'],
6+
['firefox', '30'],
7+
['firefox', '20'],
8+
['firefox', '11'],
9+
['firefox', '4'],
10+
11+
['chrome', '40'],
12+
['chrome', '35'],
13+
['chrome', '28'],
14+
15+
['internet explorer', '11', 'Windows 8.1'],
16+
['internet explorer', '10', 'Windows 8'],
17+
['internet explorer', '9', 'Windows 7'],
18+
// Currently do not work with Karma.
19+
// ['internet explorer', '8', 'Windows 7'],
20+
// ['internet explorer', '7', 'Windows XP'],
21+
// ['internet explorer', '6', 'Windows XP'],
22+
23+
['opera', '12'],
24+
['opera', '11'],
25+
26+
['android', '4.3'],
27+
['android', '4.0'],
28+
29+
['safari', '8'],
30+
['safari', '6'],
31+
['safari', '7'],
32+
['safari', '5']
33+
], function(memo, platform) {
34+
var label = (platform[0] + '_v' + platform[1]).replace(' ', '_').toUpperCase();
35+
memo[label] = _.pick({
36+
'base': 'SauceLabs',
37+
'browserName': platform[0],
38+
'version': platform[1],
39+
'platform': platform[2]
40+
}, Boolean);
41+
return memo;
42+
}, {});
43+
44+
module.exports = function(config) {
45+
if ( !process.env.SAUCE_USERNAME || !process.env.SAUCE_ACCESS_KEY ) {
46+
console.log('Sauce environments not set --- Skipping');
47+
return process.exit(0);
48+
}
49+
50+
config.set({
51+
basePath: '',
52+
frameworks: ['qunit'],
53+
singleRun: true,
54+
55+
// list of files / patterns to load in the browser
56+
files: [
57+
'test/vendor/qunit-extras.js',
58+
'underscore.js',
59+
'test/*.js'
60+
],
61+
// test results reporter to use
62+
reporters: ['dots', 'saucelabs'],
63+
port: 9876,
64+
colors: true,
65+
logLevel: config.LOG_INFO,
66+
sauceLabs: {
67+
build: 'TRAVIS #' + process.env.TRAVIS_BUILD_NUMBER + ' (' + process.env.TRAVIS_BUILD_ID + ')',
68+
startConnect: true,
69+
tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER
70+
},
71+
72+
// TODO(vojta): remove once SauceLabs supports websockets.
73+
// This speeds up the capturing a bit, as browsers don't even try to use websocket.
74+
transports: ['xhr-polling'],
75+
captureTimeout: 120000,
76+
customLaunchers: sauceBrowsers
77+
78+
// Browsers to launch, commented out to prevent karma from starting
79+
// too many concurrent browsers and timing sauce out.
80+
// browsers: _.keys(sauceBrowsers)
81+
});
82+
};

karma.conf.js

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
// Note some browser launchers should be installed before using karma start.
2+
23
// For example:
3-
// npm install karma-firefox-launcher
4-
// karma start --browser=Firefox
4+
// $ npm install karma-firefox-launcher
5+
// $ karma start --browser=Firefox
6+
7+
// See http://karma-runner.github.io/0.8/config/configuration-file.html
58
module.exports = function(config) {
69
config.set({
710
basePath: '',
811
frameworks: ['qunit'],
12+
logLevel: config.LOG_INFO,
13+
port: 9876,
914

1015
// list of files / patterns to load in the browser
1116
files: [
@@ -14,24 +19,10 @@ module.exports = function(config) {
1419
'test/*.js'
1520
],
1621

17-
// test results reporter to use
18-
// possible values: 'dots', 'progress'
19-
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
22+
// Test results reporter to use
23+
// https://npmjs.org/browse/keyword/karma-reporter
2024
reporters: ['progress'],
2125

22-
// web server port
23-
port: 9876,
24-
25-
// enable / disable colors in the output (reporters and logs)
26-
colors: true,
27-
28-
// level of logging
29-
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
30-
logLevel: config.LOG_INFO,
31-
32-
// enable / disable watching file and executing tests whenever any file changes
33-
autoWatch: false,
34-
3526
// start these browsers
3627
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
3728
browsers: ['PhantomJS'],

0 commit comments

Comments
 (0)