@@ -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
78chai . use ( chaiAsPromised ) ;
89chai . should ( ) ;
910chaiAsPromised . 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
3040var config_file = process . argv [ 2 ] || 'conf.js'
3141var config = require ( config_file ) . config ;
3242var test = require ( config . test ) ;
3343
34- console . log ( "Running Test: " + test . name . green + '\n' ) ;
35-
3644for ( 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}
0 commit comments