11var Log = require ( './logger' ) ,
2- logger = new Log ( global . logLevel ) ,
2+ logger = new Log ( global . logLevel || 'info' ) ,
33 http = require ( 'http' ) ,
44 url = require ( 'url' ) ,
55 path = require ( 'path' ) ,
@@ -11,7 +11,8 @@ var Log = require('./logger'),
1111 chalk = require ( 'chalk' ) ,
1212 mime = require ( 'mime' ) ,
1313 send = require ( 'send' ) ,
14- vm = require ( 'vm' ) ;
14+ vm = require ( 'vm' ) ,
15+ report = { } ;
1516
1617exports . Server = function Server ( bsClient , workers , config , callback ) {
1718 var testFilePaths = ( Array . isArray ( config . test_path ) ? config . test_path : [ config . test_path ] )
@@ -222,6 +223,7 @@ exports.Server = function Server(bsClient, workers, config, callback) {
222223 }
223224
224225 var worker = workers [ uuid ] ;
226+ var browserInfo = worker . getTestBrowserInfo ( ) ;
225227 var query = null ;
226228
227229 try {
@@ -231,11 +233,15 @@ exports.Server = function Server(bsClient, workers, config, callback) {
231233 logger . info ( '[%s] Log: ' + qs . parse ( body ) . data , worker . string ) ;
232234 }
233235
236+
237+ report [ browserInfo ] = report [ browserInfo ] || { assertions : [ ] , tests : [ ] } ;
238+
234239 logger . trace ( '[%s] _progress' , worker . id , query ) ;
235240
236241 if ( query && query . tracebacks ) {
237242 query . tracebacks . forEach ( function ( traceback ) {
238- logger . info ( '[%s] ' + chalk . red ( 'Error:' ) , worker . getTestBrowserInfo ( ) , formatTraceback ( traceback ) ) ;
243+ report [ browserInfo ] [ 'assertions' ] . push ( traceback ) ;
244+ logger . info ( '[%s] ' + chalk . red ( 'Error:' ) , browserInfo , formatTraceback ( traceback ) ) ;
239245 } ) ;
240246 }
241247 response . end ( ) ;
@@ -250,6 +256,7 @@ exports.Server = function Server(bsClient, workers, config, callback) {
250256
251257 var worker = workers [ uuid ] ;
252258 worker . _worker_key = uuid ;
259+ var browserInfo = worker . getTestBrowserInfo ( ) ;
253260
254261 var query = null ;
255262 try {
@@ -261,14 +268,17 @@ exports.Server = function Server(bsClient, workers, config, callback) {
261268 if ( query === null ) {
262269 logger . info ( '[%s] Null response from remote Browser' , request . headers [ 'x-browser-string' ] ) ;
263270 } else {
271+ report [ browserInfo ] = report [ browserInfo ] || { assertions : [ ] , tests : [ ] } ;
272+ report [ browserInfo ] [ 'tests' ] . push ( query ) ;
273+
264274 if ( query . tracebacks && query . tracebacks . length > 0 ) {
265- logger . info ( '[%s] ' + chalk [ 'red' ] ( 'Tracebacks:' ) , worker . getTestBrowserInfo ( ) ) ;
275+ logger . info ( '[%s] ' + chalk [ 'red' ] ( 'Tracebacks:' ) , browserInfo ) ;
266276 query . tracebacks . forEach ( function ( traceback ) {
267277 logger . info ( traceback ) ;
268278 } ) ;
269279 }
270280 var color = query . failed ? 'red' : 'green' ;
271- logger . info ( '[%s] ' + chalk [ color ] ( query . failed ? 'Failed:' : 'Passed:' ) + ' %d tests, %d passed, %d failed; ran for %dms' , worker . getTestBrowserInfo ( ) , query . total , query . passed , query . failed , query . runtime ) ;
281+ logger . info ( '[%s] ' + chalk [ color ] ( query . failed ? 'Failed:' : 'Passed:' ) + ' %d tests, %d passed, %d failed; ran for %dms' , browserInfo , query . total , query . passed , query . failed , query . runtime ) ;
272282 config . status += query . failed ;
273283 }
274284
@@ -278,7 +288,7 @@ exports.Server = function Server(bsClient, workers, config, callback) {
278288 logger . trace ( '[%s] _report: client.takeScreenshot | response:' , worker . id , screenshot , error ) ;
279289
280290 if ( ! error && screenshot . url && query && query . failed ) {
281- logger . info ( '[%s] ' + chalk . yellow ( 'Screenshot:' ) + ' %s' , worker . getTestBrowserInfo ( ) , screenshot . url ) ;
291+ logger . info ( '[%s] ' + chalk . yellow ( 'Screenshot:' ) + ' %s' , browserInfo , screenshot . url ) ;
282292 }
283293
284294 checkAndTerminateWorker ( worker , function ( reusedWorker ) {
@@ -289,14 +299,14 @@ exports.Server = function Server(bsClient, workers, config, callback) {
289299
290300 if ( reusedWorker ) {
291301 logger . trace ( '[%s] _report: checkAndTerminateWorker: reused worker' , worker . id ) ;
292- logger . debug ( '[%s] Reused' , worker . getTestBrowserInfo ( ) ) ;
302+ logger . debug ( '[%s] Reused' , browserInfo ) ;
293303 worker . resetAck ( ) ;
294304 worker . awaitAck ( ) ;
295305 return ;
296306 }
297307
298308 logger . trace ( '[%s] _report: checkAndTerminateWorker: terminated' , worker . id ) ;
299- logger . debug ( '[%s] Terminated' , worker . getTestBrowserInfo ( ) ) ;
309+ logger . debug ( '[%s] Terminated' , browserInfo ) ;
300310
301311 clearTimeout ( workers [ uuid ] . ackTimeout ) ;
302312 clearTimeout ( workers [ uuid ] . activityTimeout ) ;
@@ -312,7 +322,7 @@ exports.Server = function Server(bsClient, workers, config, callback) {
312322 }
313323
314324 logger . trace ( '[%s] _report: checkAndTerminateWorker: all tests done' , worker . id , config . status && 'with failures' ) ;
315- callback ( null , 'All Tests Done' ) ;
325+ callback ( null , JSON . stringify ( report ) ) ;
316326 }
317327 } ) ;
318328 } ) ;
0 commit comments