diff options
author | Peter 'Pita' Martischka <petermartischka@googlemail.com> | 2012-11-03 15:55:14 +0000 |
---|---|---|
committer | Peter 'Pita' Martischka <petermartischka@googlemail.com> | 2012-11-03 15:55:14 +0000 |
commit | 0fd6051f52c48689c203cf4c9547588fd27aee8b (patch) | |
tree | c15242f13d28950e869ecb56ee7f70581f8ec8d3 /tests/frontend/travis | |
parent | ab6adc721634d44ba5da010bfe687a2d2b4863b0 (diff) | |
download | etherpad-lite-0fd6051f52c48689c203cf4c9547588fd27aee8b.zip |
test in different browsers
Diffstat (limited to 'tests/frontend/travis')
-rw-r--r-- | tests/frontend/travis/remote_runner.js | 149 |
1 files changed, 109 insertions, 40 deletions
diff --git a/tests/frontend/travis/remote_runner.js b/tests/frontend/travis/remote_runner.js index 6140782c..1c753d49 100644 --- a/tests/frontend/travis/remote_runner.js +++ b/tests/frontend/travis/remote_runner.js @@ -1,6 +1,6 @@ var srcFolder = "../../../src/node_modules/"; -var log4js = require(srcFolder + "log4js"); var wd = require(srcFolder + "wd"); +var async = require(srcFolder + "async"); var config = { host: "ondemand.saucelabs.com" @@ -9,50 +9,119 @@ var config = { , accessKey: process.env.SAUCE_KEY } -var browser = wd.remote(config.host, config.port, config.username, config.accessKey); -var browserChain = browser.chain(); +var allTestsPassed = true; -var enviroment = { +var sauceTestWorker = async.queue(function (testSettings, callback) { + var browser = wd.remote(config.host, config.port, config.username, config.accessKey); + var browserChain = browser.chain(); + var name = process.env.GIT_HASH + " - " + testSettings.browserName + " " + testSettings.version + ", " + testSettings.platform; + testSettings.name = name; + console.log("Remote sauce test '" + name + "' started!"); + + browserChain.init(testSettings).get("http://localhost:9001/tests/frontend/", function(){ + //tear down the test excecution + var stopSauce = function(success){ + getStatusInterval && clearInterval(getStatusInterval); + clearTimeout(timeout); + + browserChain.quit(); + + if(!success){ + allTestsPassed = false; + } + + var testResult = knownConsoleText.replace(/\[red\]/g,'\x1B[31m').replace(/\[yellow\]/g,'\x1B[33m') + .replace(/\[green\]/g,'\x1B[32m').replace(/\[clear\]/g, '\x1B[39m'); + testResult = testResult.split("\n").map(function(line){ + var newLine = "[" + testSettings.browserName + (testSettings.version === "" ? '' : (" " + testSettings.version)) + "] "; + }.join("\n")); + + console.log(testResult); + console.log("Remote sauce test '" + name + "' finished!"); + + callback(); + } + + //timeout for the case the test hangs + var timeout = setTimeout(function(){ + stopSauce(false); + }, 60000 * 10); + + var knownConsoleText = ""; + var getStatusInterval = setInterval(function(){ + browserChain.eval("$('#console').text()", function(err, consoleText){ + if(!consoleText || err){ + return; + } + knownConsoleText = consoleText; + + if(knownConsoleText.indexOf("FINISHED") > 0){ + var success = knownConsoleText.indexOf("FAILED") === -1; + stopSauce(success); + } + }); + }, 5000); + }); +}, 2); //run 2 tests in parrallel + +// Firefox +sauceTestWorker.push({ 'platform' : 'Linux' , 'browserName' : 'firefox' , 'version' : '' - , 'name' : 'Halloween test' -} +}); -browserChain.init(enviroment).get("http://localhost:9001/tests/frontend/", function(){ - var stopSauce = function(success){ - getStatusInterval && clearInterval(getStatusInterval); - clearTimeout(timeout); - - browserChain.quit(); - setTimeout(function(){ - process.exit(success ? 0 : 1); - }, 1000); - } - - var timeout = setTimeout(function(){ - stopSauce(false); - }, 60000 * 10); - - var knownConsoleText = ""; - var getStatusInterval = setInterval(function(){ - browserChain.eval("$('#console').text()", function(err, consoleText){ - if(!consoleText || err){ - return; - } - var newText = consoleText.substr(knownConsoleText.length); - newText = newText.replace(/\[red\]/g,'\x1B[31m').replace(/\[yellow\]/g,'\x1B[33m') - .replace(/\[green\]/g,'\x1B[32m').replace(/\[clear\]/g, '\x1B[39m'); +// Chrome +sauceTestWorker.push({ + 'platform' : 'Linux' + , 'browserName' : 'googlechrome' + , 'version' : '' +}); - if(newText.length > 0){ - console.log(newText.replace(/\n$/, "")) - } - knownConsoleText = consoleText; +// Opera +sauceTestWorker.push({ + 'platform' : 'Windows 2008' + , 'browserName' : 'opera' + , 'version' : '' +}); - if(knownConsoleText.indexOf("FINISHED") > 0){ - var success = knownConsoleText.indexOf("FAILED") === -1; - stopSauce(success); - } - }); - }, 5000); +//Safari +sauceTestWorker.push({ + 'platform' : 'Mac 10.6' + , 'browserName' : 'safari' + , 'version' : '' +}); + +// IE 7 +sauceTestWorker.push({ + 'platform' : 'Windows 2003' + , 'browserName' : 'iexplore' + , 'version' : '7' }); + +// IE 8 +sauceTestWorker.push({ + 'platform' : 'Windows 2003' + , 'browserName' : 'iexplore' + , 'version' : '8' +}); + +// IE 9 +sauceTestWorker.push({ + 'platform' : 'Windows 2008' + , 'browserName' : 'iexplore' + , 'version' : '9' +}); + +// IE 10 +sauceTestWorker.push({ + 'platform' : 'Windows 2012' + , 'browserName' : 'iexplore' + , 'version' : '10' +}); + +sauceTestWorker.drain = function() { + setTimeout(function(){ + process.exit(allTestsPassed ? 0 : 1); + }, 3000); +}
\ No newline at end of file |