Skip to content

Commit 8f47f75

Browse files
committed
added parallel
1 parent 06b222b commit 8f47f75

9 files changed

Lines changed: 89 additions & 183 deletions

browserstack_async.js

Lines changed: 0 additions & 47 deletions
This file was deleted.

browserstack_local_async.js

Lines changed: 0 additions & 48 deletions
This file was deleted.

browserstack_promises.js

Lines changed: 0 additions & 48 deletions
This file was deleted.

conf/local.conf.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
exports.config = {
2+
user: 'BROWSERSTACK_USERNAME',
3+
key: 'BROWSERSTACK_ACCESS_KEY',
4+
5+
seleniumHost: 'hub-cloud.browserstack.com',
6+
seleniumPort: 80,
7+
8+
test: '../tests/local_test.js',
9+
10+
capabilities: [{
11+
browserName: 'chrome',
12+
name: "local_test",
13+
build: "wd-browserstack",
14+
'browserstack.local': true
15+
}]
16+
}

conf/parallel.conf.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
exports.config = {
2+
user: 'BROWSERSTACK_USERNAME',
3+
key: 'BROWSERSTACK_ACCESS_KEY',
4+
5+
seleniumHost: 'hub-cloud.browserstack.com',
6+
seleniumPort: 80,
7+
8+
test: '../tests/single_test.js',
9+
10+
commonCapabilities: {
11+
name: "parallel_test",
12+
build: "wd-browserstack"
13+
},
14+
15+
capabilities: [{
16+
browserName: 'chrome'
17+
},{
18+
browserName: 'firefox'
19+
},{
20+
browserName: 'safari'
21+
},{
22+
browserName: 'internet explorer'
23+
}]
24+
}
25+
26+
// Code to support common capabilities
27+
exports.config.capabilities.forEach(function(caps){
28+
for(var i in exports.config.commonCapabilities) caps[i] = caps[i] || exports.config.commonCapabilities[i];
29+
});
30+

conf/single.conf.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ exports.config = {
22
user: 'BROWSERSTACK_USERNAME',
33
key: 'BROWSERSTACK_ACCESS_KEY',
44

5-
selenium_host: 'hub-cloud.browserstack.com',
6-
selenium_port: 80,
5+
seleniumHost: 'hub-cloud.browserstack.com',
6+
seleniumPort: 80,
77

88
test: '../tests/single_test.js',
99

scripts/browserstack.js

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,26 @@ var chai = require("chai"),
22
chaiAsPromised = require("chai-as-promised"),
33
wd = require('wd'),
44
colors = require('colors'),
5-
child_process = require('child_process');
5+
child_process = require('child_process'),
6+
browserstack = require('browserstack-local');
67

78
chai.use(chaiAsPromised);
89
chai.should();
910
chaiAsPromised.transferPromiseness = wd.transferPromiseness;
1011

11-
function setupBrowser(){
12-
var username = process.env.BROWSERSTACK_USERNAME || config.user;
13-
var accessKey = process.env.BROWSERSTACK_ACCESS_KEY || config.key;
14-
var browser = wd.promiseChainRemote(config.selenium_host, config.selenium_port, username, accessKey);
12+
var username = process.env.BROWSERSTACK_USERNAME || config.user;
13+
var accessKey = process.env.BROWSERSTACK_ACCESS_KEY || config.key;
14+
15+
wd.addPromiseChainMethod(
16+
'onQuit', function(done) {
17+
if(done) done();
18+
return this;
19+
}
20+
);
21+
22+
function runOnBrowserStack(caps, test, done){
23+
console.log("Running Test: " + test.name.green + '\n');
24+
var browser = wd.promiseChainRemote(config.seleniumHost, config.seleniumPort, username, accessKey);
1525

1626
// optional extra logging
1727
browser.on('status', function(info) {
@@ -24,16 +34,26 @@ function setupBrowser(){
2434
console.log(' > ' + meth.yellow, path, (data || '').grey);
2535
});
2636

27-
return browser;
37+
test.run(browser.init(caps)).fin(function() { return browser.quit(); }).onQuit(done).done();
2838
}
2939

3040
var config_file = process.argv[2] || 'conf.js'
3141
var config = require(config_file).config;
3242
var test = require(config.test);
3343

34-
console.log("Running Test: " + test.name.green + '\n');
35-
3644
for(var i in config.capabilities){
37-
var browser = setupBrowser();
38-
test.run(browser.init(config.capabilities[i])).fin(function() { return browser.quit(); }).done();
45+
var caps = config.capabilities[i];
46+
if(caps["browserstack.local"]){
47+
console.log("Connecting local");
48+
var bs_local = new browserstack.Local();
49+
bs_local.start({'key': accessKey }, function(error) {
50+
if (error) return console.log(error.red);
51+
console.log('Connected. Now testing...');
52+
53+
runOnBrowserStack(caps, test, function(){ bs_local.stop(); });
54+
});
55+
}
56+
else {
57+
runOnBrowserStack(caps, test);
58+
}
3959
}

scripts/test_local.js

Lines changed: 0 additions & 28 deletions
This file was deleted.

tests/local_test.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module.exports = {
2+
name: 'BrowserStack Local Testing',
3+
run : function (browser) {
4+
return browser
5+
.get("http://bs-local.com:45691/check")
6+
.source()
7+
.then(function(data){
8+
data.should.match(/Up and running/i);
9+
})
10+
}
11+
};

0 commit comments

Comments
 (0)