Cleanup saucelabs.js round two.

This commit is contained in:
John-David Dalton
2013-10-31 00:02:47 -07:00
parent 8f23611f1a
commit 87297d2a07

View File

@@ -1,15 +1,18 @@
var connect = require('connect'), ;(function() {
'use strict';
var connect = require('connect'),
path = require('path'), path = require('path'),
request = require('request'), request = require('request'),
SauceTunnel = require('sauce-tunnel'); SauceTunnel = require('sauce-tunnel');
var port = 8081, var port = 8081,
username = process.env.SAUCE_USERNAME, username = process.env.SAUCE_USERNAME,
accessKey = process.env.SAUCE_ACCESS_KEY; accessKey = process.env.SAUCE_ACCESS_KEY;
console.log(process.env)
var platforms = [ var platforms = [
['Windows 7', 'chrome', ''], ['Windows 7', 'chrome', ''],
['Windows 7', 'firefox', '24'], ['Windows 7', 'firefox', '25'],
['Windows 7', 'firefox', '20'], ['Windows 7', 'firefox', '20'],
['Windows 7', 'firefox', '10'], ['Windows 7', 'firefox', '10'],
['Windows 7', 'firefox', '6'], ['Windows 7', 'firefox', '6'],
@@ -22,20 +25,20 @@ var platforms = [
['Windows XP', 'internet explorer', '6'], ['Windows XP', 'internet explorer', '6'],
['OS X 10.8', 'safari', '6'], ['OS X 10.8', 'safari', '6'],
['Windows 7', 'safari', '5'] ['Windows 7', 'safari', '5']
]; ];
// create a web server for the local dir // create a web server for the local dir
var server = connect.createServer( var server = connect.createServer(
connect.static(path.resolve(__dirname, '..')) connect.static(path.resolve(__dirname, '..'))
).listen(port); ).listen(port);
// set up sauce connect so we can use this server from saucelabs // set up sauce connect so we can use this server from saucelabs
var tunnelTimeout = 10000, var tunnelTimeout = 10000,
tunnel = new SauceTunnel(username, accessKey, null, true, tunnelTimeout); tunnel = new SauceTunnel(username, accessKey, null, true, tunnelTimeout);
console.log('Opening sauce connect tunnel...'); console.log('Opening sauce connect tunnel...');
tunnel.start(function(success) { tunnel.start(function(success) {
if (success) { if (success) {
console.log('Sauce connect tunnel opened'); console.log('Sauce connect tunnel opened');
runTests(); runTests();
@@ -43,9 +46,9 @@ tunnel.start(function(success) {
console.error('Failed to open sauce connect tunnel') console.error('Failed to open sauce connect tunnel')
process.exit(2); process.exit(2);
} }
}); });
function runTests() { function runTests() {
var testDefinition = { var testDefinition = {
'framework': 'qunit', 'framework': 'qunit',
'platforms': platforms, 'platforms': platforms,
@@ -66,9 +69,9 @@ function runTests() {
process.exit(3); process.exit(3);
} }
}); });
} }
function waitForTestCompletion(testIdentifier) { function waitForTestCompletion(testIdentifier) {
request.post('https://saucelabs.com/rest/v1/' + username + '/js-tests/status', { request.post('https://saucelabs.com/rest/v1/' + username + '/js-tests/status', {
'auth': { 'user': username, 'pass': accessKey }, 'auth': { 'user': username, 'pass': accessKey },
'json': testIdentifier 'json': testIdentifier
@@ -84,19 +87,19 @@ function waitForTestCompletion(testIdentifier) {
process.exit(4); process.exit(4);
} }
}); });
} }
function handleTestResults(results) { function handleTestResults(results) {
var allTestsSuccessful = results.reduce(function(passedSoFar, test) { var allTestsSuccessful = results.every(function(test) {
return passedSoFar && test.result.failed === 0; return !test.result.failed;
}, true); });
if (allTestsSuccessful) { if (allTestsSuccessful) {
console.log('Tests passed'); console.log('Tests passed');
} }
else { else {
var failingTests = results.filter(function(test) { var failingTests = results.filter(function(test) {
return test.result.failed !== 0; return test.result.failed;
}); });
var failingPlatforms = failingTests.map(function(test) { var failingPlatforms = failingTests.map(function(test) {
@@ -107,7 +110,6 @@ function handleTestResults(results) {
failingTests.forEach(function(test) { failingTests.forEach(function(test) {
var platform = JSON.stringify(test.platform); var platform = JSON.stringify(test.platform);
if (test.result.failed) { if (test.result.failed) {
console.error(test.result.failed + ' failures on ' + platform + '. See ' + test.url + ' for details.'); console.error(test.result.failed + ' failures on ' + platform + '. See ' + test.url + ' for details.');
} else { } else {
@@ -120,5 +122,6 @@ function handleTestResults(results) {
tunnel.stop(function() { tunnel.stop(function() {
process.exit(allTestsSuccessful ? 0 : 1); process.exit(allTestsSuccessful ? 0 : 1);
}) });
} }
}());