Skip to content
This repository was archived by the owner on Mar 17, 2025. It is now read-only.

Commit 3d2cf53

Browse files
author
Jacob Wenger
committed
Merge pull request #331 from bendrucker/sauce
Run unit tests on Sauce
2 parents 12c7e81 + c867aa3 commit 3d2cf53

File tree

8 files changed

+155
-22
lines changed

8 files changed

+155
-22
lines changed

.travis.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,19 @@ branches:
66
- master
77
addons:
88
sauce_connect: true
9+
before_install:
10+
- export DISPLAY=:99.0
11+
- sh -e /etc/init.d/xvfb start
912
install:
10-
- git clone git://github.com/n1k0/casperjs.git ~/casperjs
11-
- export PATH=$PATH:~/casperjs/bin
1213
- npm install -g grunt-cli
1314
- npm install -g bower
1415
- npm install
1516
- bower install
1617
before_script:
18+
- grunt install
1719
- phantomjs --version
18-
- casperjs --version
1920
script:
20-
- grunt travis
21+
- sh ./tests/travis.sh
2122
env:
2223
global:
2324
- secure: mGHp1rQI11OvbBQn3PnBT5kuyo26gFl8U+nNq0Ot4opgSBX9JaHqS8Dx63uALWWU9qjy08/Mn68t/sKhayH1+XrPDIenOy/XEkkSAG60qAAowD9dRo3WaIMSOcWWYDeqdZOAWZ3LiXvjLO4Swagz5ejz7UtY/ws4CcTi2n/fp7c=

Gruntfile.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,17 +69,21 @@ module.exports = function(grunt) {
6969
watch: {
7070
autowatch: true,
7171
singleRun: false,
72+
},
73+
saucelabs: {
74+
configFile: 'tests/sauce_karma.conf.js'
7275
}
7376
},
7477

7578
// End to end (e2e) tests
7679
protractor: {
7780
options: {
78-
configFile: "tests/protractor.conf.js"
81+
configFile: "tests/local_protractor.conf.js"
7982
},
8083
singlerun: {},
8184
saucelabs: {
8285
options: {
86+
configFile: "tests/sauce_protractor.conf.js",
8387
args: {
8488
sauceUser: process.env.SAUCE_USERNAME,
8589
sauceKey: process.env.SAUCE_ACCESS_KEY
@@ -110,13 +114,14 @@ module.exports = function(grunt) {
110114
grunt.registerTask('test:unit', ['karma:singlerun']);
111115
grunt.registerTask('test:e2e', ['connect:testserver', 'protractor:singlerun']);
112116

117+
// Sauce tasks
118+
grunt.registerTask('sauce:unit', ['karma:saucelabs']);
119+
grunt.registerTask('sauce:e2e', ['connect:testserver', 'protractor:saucelabs']);
120+
113121
// Watch tests
114122
grunt.registerTask('test:watch', ['karma:watch']);
115123
grunt.registerTask('test:watch:unit', ['karma:watch']);
116124

117-
// Travis CI testing
118-
grunt.registerTask('travis', ['build', 'test:unit', 'connect:testserver', 'protractor:saucelabs']);
119-
120125
// Build tasks
121126
grunt.registerTask('build', ['jshint', 'uglify']);
122127

package.json

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,23 @@
1111
"bugs": {
1212
"url": "https://github.com/firebase/angularFire/issues"
1313
},
14-
"dependencies": {
15-
},
14+
"dependencies": {},
1615
"devDependencies": {
16+
"firebase": "1.0.x",
1717
"grunt": "~0.4.1",
18-
"grunt-karma": "~0.6.2",
19-
"grunt-notify": "~0.2.7",
20-
"load-grunt-tasks": "~0.2.0",
21-
"grunt-shell-spawn": "^0.3.0",
22-
"grunt-contrib-watch": "~0.5.1",
18+
"grunt-contrib-connect": "^0.7.1",
2319
"grunt-contrib-jshint": "~0.10.0",
2420
"grunt-contrib-uglify": "~0.2.2",
25-
"grunt-contrib-connect": "^0.7.1",
26-
"grunt-protractor-runner": "^1.0.0",
27-
28-
"karma": "~0.10.4",
21+
"grunt-contrib-watch": "~0.5.1",
22+
"grunt-karma": "~0.8.0",
23+
"grunt-notify": "~0.2.7",
24+
"grunt-protractor-runner": "~1.0.0",
25+
"grunt-shell-spawn": "^0.3.0",
26+
"karma": "~0.12.0",
2927
"karma-jasmine": "~0.1.3",
3028
"karma-phantomjs-launcher": "~0.1.0",
31-
32-
"firebase": "1.0.x",
29+
"karma-sauce-launcher": "~0.2.9",
30+
"load-grunt-tasks": "~0.2.0",
3331
"protractor": "^0.23.1"
3432
}
3533
}

tests/browsers.json

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
[
2+
{
3+
"name": "chrome",
4+
"version": "35",
5+
"platform": "OS X 10.9"
6+
},
7+
{
8+
"name": "firefox",
9+
"version": "30"
10+
},
11+
{
12+
"name": "safari",
13+
"platform": "OS X 10.9",
14+
"version": "7"
15+
},
16+
{
17+
"device": "iPhone",
18+
"name": "iphone",
19+
"platform": "OS X 10.9",
20+
"version": "7.1"
21+
},
22+
{
23+
"device": "Android",
24+
"name": "android",
25+
"platform": "linux",
26+
"version": "4.3"
27+
},
28+
{
29+
"name": "internet explorer",
30+
"platform": "Windows 8.1",
31+
"version": "11"
32+
},
33+
{
34+
"name": "internet explorer",
35+
"platform": "Windows 7",
36+
"version": "9"
37+
}
38+
]

tests/local_protractor.conf.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
exports.config = {
2+
// Locally, we should just use the default standalone Selenium server
3+
// In Travis, we set up the Selenium serving via Sauce Labs
4+
5+
// Tests to run
6+
specs: [
7+
'./protractor/**/*.spec.js'
8+
],
9+
10+
// Capabilities to be passed to the webdriver instance
11+
// For a full list of available capabilities, see https://code.google.com/p/selenium/wiki/DesiredCapabilities
12+
capabilities: {
13+
'browserName': 'firefox',
14+
},
15+
16+
// Calls to protractor.get() with relative paths will be prepended with the baseUrl
17+
baseUrl: 'http://localhost:3030/tests/protractor/',
18+
19+
// Selector for the element housing the angular app
20+
rootElement: 'body',
21+
22+
// Options to be passed to minijasminenode
23+
jasmineNodeOpts: {
24+
// onComplete will be called just before the driver quits.
25+
onComplete: null,
26+
// If true, display spec names.
27+
isVerbose: true,
28+
// If true, print colors to the terminal.
29+
showColors: true,
30+
// If true, include stack traces in failures.
31+
includeStackTrace: true,
32+
// Default time to wait in ms before a test fails.
33+
defaultTimeoutInterval: 20000
34+
}
35+
};

tests/sauce_karma.conf.js

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
// Configuration file for Karma
2+
// http://karma-runner.github.io/0.10/config/configuration-file.html
3+
4+
module.exports = function(config) {
5+
var customLaunchers = require('./browsers.json')
6+
.reduce(function (browsers, browser) {
7+
browsers[(browser.name + '_v' + browser.version).replace(/(\.|\s)/g, '_')] = {
8+
base: 'SauceLabs',
9+
browserName: browser.name,
10+
platform: browser.platform,
11+
version: browser.version
12+
};
13+
return browsers;
14+
}, {});
15+
var browsers = Object.keys(customLaunchers);
16+
17+
config.set({
18+
basePath: '',
19+
frameworks: ['jasmine'],
20+
files: [
21+
'../bower_components/angular/angular.js',
22+
'../bower_components/angular-mocks/angular-mocks.js',
23+
'../lib/omnibinder-protocol.js',
24+
'lib/lodash.js',
25+
'lib/MockFirebase.js',
26+
'../angularfire.js',
27+
'unit/**/*.spec.js'
28+
],
29+
30+
logLevel: config.LOG_INFO,
31+
32+
transports: ['xhr-polling'],
33+
34+
sauceLabs: {
35+
testName: 'angularFire Unit Tests',
36+
startConnect: false,
37+
tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER
38+
},
39+
40+
captureTimeout: 0,
41+
browserNoActivityTimeout: 120000,
42+
43+
//Recommend starting Chrome manually with experimental javascript flag enabled, and open localhost:9876.
44+
customLaunchers: customLaunchers,
45+
browsers: browsers,
46+
reporters: ['dots', 'saucelabs'],
47+
singleRun: true
48+
49+
});
50+
};
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,4 @@ exports.config = {
3737
// Default time to wait in ms before a test fails.
3838
defaultTimeoutInterval: 20000
3939
}
40-
};
40+
};

tests/travis.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
grunt test;
2+
if [ $SAUCE_ACCESS_KEY ]; then
3+
grunt sauce:unit
4+
grunt build
5+
grunt sauce:e2e
6+
fi

0 commit comments

Comments
 (0)