mirror of
				https://github.com/ether/etherpad-lite.git
				synced 2025-10-31 00:01:16 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			110 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| var srcFolder = "../../../src/node_modules/";
 | |
| var wd = require(srcFolder + "wd");
 | |
| var async = require(srcFolder + "async");
 | |
| 
 | |
| var config = {
 | |
| 	  host: "ondemand.saucelabs.com"
 | |
|   , port: 80
 | |
|   , username: process.env.SAUCE_USER
 | |
|   , accessKey: process.env.SAUCE_KEY
 | |
| }
 | |
| 
 | |
| var allTestsPassed = true;
 | |
| 
 | |
| 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;
 | |
|   testSettings["public"] = true;
 | |
|   testSettings["build"] = process.env.GIT_HASH;
 | |
| 
 | |
|   browserChain.init(testSettings).get("http://localhost:9001/tests/frontend/", function(){
 | |
|     var url = "https://saucelabs.com/jobs/" + browser.sessionID;
 | |
|     console.log("Remote sauce test '" + name + "' started! " + url);
 | |
| 
 | |
|     //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){
 | |
|         return "[" + testSettings.browserName + (testSettings.version === "" ? '' : (" " + testSettings.version)) + "] " + line;
 | |
|       }).join("\n");
 | |
|       
 | |
|       console.log(testResult);
 | |
|       console.log("Remote sauce test '" + name + "' finished! " + url);
 | |
| 
 | |
|       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);
 | |
|   });
 | |
| }, 5); //run 5 tests in parrallel
 | |
| 
 | |
| // Firefox 
 | |
| sauceTestWorker.push({
 | |
|     'platform'       : 'Linux'
 | |
|   , 'browserName'    : 'firefox'
 | |
|   , 'version'        : ''
 | |
| });
 | |
| 
 | |
| // Chrome
 | |
| sauceTestWorker.push({
 | |
|     'platform'       : 'Linux'
 | |
|   , 'browserName'    : 'googlechrome'
 | |
|   , 'version'        : ''
 | |
| });
 | |
| 
 | |
| // 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);
 | |
| } |