Moved sauce connect management to saucelabs.js, for manual control

This commit is contained in:
pimterry
2013-10-27 15:00:23 +00:00
parent 2dbfcbb378
commit eb10245df1
2 changed files with 59 additions and 31 deletions

View File

@@ -1,38 +1,61 @@
var connect = require('connect');
var SauceTunnel = require('sauce-tunnel');
var request = require('request');
var port = 8081;
var username = process.env['SAUCE_USERNAME'];
var accessKey = process.env['SAUCE_ACCESS_KEY'];
var platforms = [
["Windows 7", "chrome", ""],
["Windows 7", "firefox", "24"],
["Windows 7", "internet explorer", "9"]
];
// Create a web server for the local dir
var connect = require('connect');
var server = connect.createServer(
connect.static(__dirname)
).listen(port);
// Tell saucelabs to run some tests
var browser = JSON.parse(process.env['SAUCE_BROWSER']);
var username = process.env['SAUCE_USERNAME'];
var accessKey = process.env['SAUCE_ACCESS_KEY'];
var request = require('request');
request.post(
'https://saucelabs.com/rest/v1/' + username + '/js-tests',
{
auth: { user: username, pass: accessKey },
json: {
platforms: [ browser ],
url: "http://localhost:" + port + "/test/index.html",
framework: "qunit"
}
},
function (error, response, body) {
if (response.statusCode == 200) {
var testIdentifier = body;
waitForTestCompletion(testIdentifier);
} else {
console.error("Failed to submit test to SauceLabs, status " + response.statusCode + ", body:\n" + JSON.stringify(body));
process.exit(3);
}
// Set up sauce connect so we can use this server from saucelabs
var tunnelTimeout = 10000;
var tunnel = new SauceTunnel(username, accessKey, null, true, tunnelTimeout);
console.log("Opening sauce connect tunnel...");
tunnel.start(function (success) {
if (success) {
console.log("Sauce connect tunnel opened");
runTests();
} else {
console.error("Failed to open sauce connect tunnel")
process.exit(2);
}
);
});
function runTests() {
var testDefinition = {
platforms: platforms,
url: "http://localhost:" + port + "/test/index.html",
framework: "qunit"
};
console.log("Starting saucelabs tests: " + JSON.stringify(testDefinition));
request.post(
'https://saucelabs.com/rest/v1/' + username + '/js-tests',
{
auth: { user: username, pass: accessKey },
json: testDefinition
},
function (error, response, body) {
if (response.statusCode == 200) {
var testIdentifier = body;
waitForTestCompletion(testIdentifier);
} else {
console.error("Failed to submit test to SauceLabs, status " + response.statusCode + ", body:\n" + JSON.stringify(body));
process.exit(3);
}
}
);
}
function waitForTestCompletion(testIdentifier) {
request.post(