|
| 1 | +var chai = require("chai"), |
| 2 | + chaiAsPromised = require("chai-as-promised"), |
| 3 | + wd = require('wd'), |
| 4 | + colors = require('colors'), |
| 5 | + child_process = require('child_process'), |
| 6 | + browserstack = require('browserstack-local'); |
| 7 | + |
| 8 | +chai.use(chaiAsPromised); |
| 9 | +chai.should(); |
| 10 | +chaiAsPromised.transferPromiseness = wd.transferPromiseness; |
| 11 | + |
| 12 | +wd.addPromiseChainMethod( |
| 13 | + 'onQuit', function(done) { |
| 14 | + if(done) done(); |
| 15 | + return this; |
| 16 | + } |
| 17 | +); |
| 18 | + |
| 19 | +function runOnBrowserStack(caps, test, done){ |
| 20 | + console.log("Running Test: " + test.name.green + '\n'); |
| 21 | + var browser = wd.promiseChainRemote(config.seleniumHost, config.seleniumPort, username, accessKey); |
| 22 | + |
| 23 | + // optional extra logging |
| 24 | + browser.on('status', function(info) { |
| 25 | + console.log(info.cyan); |
| 26 | + }); |
| 27 | + browser.on('command', function(eventType, command, response) { |
| 28 | + console.log(' > ' + eventType.green, command, (response || '').grey); |
| 29 | + }); |
| 30 | + browser.on('http', function(meth, path, data) { |
| 31 | + console.log(' > ' + meth.yellow, path, (data || '').grey); |
| 32 | + }); |
| 33 | + |
| 34 | + test.run(browser.init(caps)).fin(function() { return browser.quit(); }).onQuit(done).done(); |
| 35 | +} |
| 36 | + |
| 37 | +var config_file = process.argv[2] || 'conf.js' |
| 38 | +var config = require(config_file).config; |
| 39 | +var test = require(config.test); |
| 40 | + |
| 41 | +var username = process.env.BROWSERSTACK_USERNAME || config.user; |
| 42 | +var accessKey = process.env.BROWSERSTACK_ACCESS_KEY || config.key; |
| 43 | + |
| 44 | +for(var i in config.capabilities){ |
| 45 | + var caps = config.capabilities[i]; |
| 46 | + if(caps["browserstack.local"]){ |
| 47 | + // Code to start browserstack local before start of test and stop browserstack local after end of test |
| 48 | + console.log("Connecting local"); |
| 49 | + var bs_local = new browserstack.Local(); |
| 50 | + bs_local.start({'key': accessKey }, function(error) { |
| 51 | + if (error) return console.log(error.red); |
| 52 | + console.log('Connected. Now testing...'); |
| 53 | + |
| 54 | + runOnBrowserStack(caps, test, function() { bs_local.stop(function() {}); }); |
| 55 | + }); |
| 56 | + } |
| 57 | + else { |
| 58 | + runOnBrowserStack(caps, test); |
| 59 | + } |
| 60 | +} |
0 commit comments