summaryrefslogtreecommitdiff
path: root/tests/frontend/travis
diff options
context:
space:
mode:
authorPeter 'Pita' Martischka <petermartischka@googlemail.com>2012-11-03 15:55:14 +0000
committerPeter 'Pita' Martischka <petermartischka@googlemail.com>2012-11-03 15:55:14 +0000
commit0fd6051f52c48689c203cf4c9547588fd27aee8b (patch)
treec15242f13d28950e869ecb56ee7f70581f8ec8d3 /tests/frontend/travis
parentab6adc721634d44ba5da010bfe687a2d2b4863b0 (diff)
downloadetherpad-lite-0fd6051f52c48689c203cf4c9547588fd27aee8b.zip
test in different browsers
Diffstat (limited to 'tests/frontend/travis')
-rw-r--r--tests/frontend/travis/remote_runner.js149
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