mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-12 03:47:50 +00:00
Cleanup saucelabs.js round two.
This commit is contained in:
@@ -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);
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
}());
|
||||||
|
|||||||
Reference in New Issue
Block a user