1
1
var Log = require ( './logger' ) ,
2
- logger = new Log ( global . logLevel ) ,
2
+ logger = new Log ( global . logLevel || 'info' ) ,
3
3
http = require ( 'http' ) ,
4
4
url = require ( 'url' ) ,
5
5
path = require ( 'path' ) ,
@@ -11,7 +11,8 @@ var Log = require('./logger'),
11
11
chalk = require ( 'chalk' ) ,
12
12
mime = require ( 'mime' ) ,
13
13
send = require ( 'send' ) ,
14
- vm = require ( 'vm' ) ;
14
+ vm = require ( 'vm' ) ,
15
+ report = { } ;
15
16
16
17
exports . Server = function Server ( bsClient , workers , config , callback ) {
17
18
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) {
222
223
}
223
224
224
225
var worker = workers [ uuid ] ;
226
+ var browserInfo = worker . getTestBrowserInfo ( ) ;
225
227
var query = null ;
226
228
227
229
try {
@@ -231,11 +233,15 @@ exports.Server = function Server(bsClient, workers, config, callback) {
231
233
logger . info ( '[%s] Log: ' + qs . parse ( body ) . data , worker . string ) ;
232
234
}
233
235
236
+
237
+ report [ browserInfo ] = report [ browserInfo ] || { assertions : [ ] , tests : [ ] } ;
238
+
234
239
logger . trace ( '[%s] _progress' , worker . id , query ) ;
235
240
236
241
if ( query && query . tracebacks ) {
237
242
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 ) ) ;
239
245
} ) ;
240
246
}
241
247
response . end ( ) ;
@@ -250,6 +256,7 @@ exports.Server = function Server(bsClient, workers, config, callback) {
250
256
251
257
var worker = workers [ uuid ] ;
252
258
worker . _worker_key = uuid ;
259
+ var browserInfo = worker . getTestBrowserInfo ( ) ;
253
260
254
261
var query = null ;
255
262
try {
@@ -261,14 +268,17 @@ exports.Server = function Server(bsClient, workers, config, callback) {
261
268
if ( query === null ) {
262
269
logger . info ( '[%s] Null response from remote Browser' , request . headers [ 'x-browser-string' ] ) ;
263
270
} else {
271
+ report [ browserInfo ] = report [ browserInfo ] || { assertions : [ ] , tests : [ ] } ;
272
+ report [ browserInfo ] [ 'tests' ] . push ( query ) ;
273
+
264
274
if ( query . tracebacks && query . tracebacks . length > 0 ) {
265
- logger . info ( '[%s] ' + chalk [ 'red' ] ( 'Tracebacks:' ) , worker . getTestBrowserInfo ( ) ) ;
275
+ logger . info ( '[%s] ' + chalk [ 'red' ] ( 'Tracebacks:' ) , browserInfo ) ;
266
276
query . tracebacks . forEach ( function ( traceback ) {
267
277
logger . info ( traceback ) ;
268
278
} ) ;
269
279
}
270
280
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 ) ;
272
282
config . status += query . failed ;
273
283
}
274
284
@@ -278,7 +288,7 @@ exports.Server = function Server(bsClient, workers, config, callback) {
278
288
logger . trace ( '[%s] _report: client.takeScreenshot | response:' , worker . id , screenshot , error ) ;
279
289
280
290
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 ) ;
282
292
}
283
293
284
294
checkAndTerminateWorker ( worker , function ( reusedWorker ) {
@@ -289,14 +299,14 @@ exports.Server = function Server(bsClient, workers, config, callback) {
289
299
290
300
if ( reusedWorker ) {
291
301
logger . trace ( '[%s] _report: checkAndTerminateWorker: reused worker' , worker . id ) ;
292
- logger . debug ( '[%s] Reused' , worker . getTestBrowserInfo ( ) ) ;
302
+ logger . debug ( '[%s] Reused' , browserInfo ) ;
293
303
worker . resetAck ( ) ;
294
304
worker . awaitAck ( ) ;
295
305
return ;
296
306
}
297
307
298
308
logger . trace ( '[%s] _report: checkAndTerminateWorker: terminated' , worker . id ) ;
299
- logger . debug ( '[%s] Terminated' , worker . getTestBrowserInfo ( ) ) ;
309
+ logger . debug ( '[%s] Terminated' , browserInfo ) ;
300
310
301
311
clearTimeout ( workers [ uuid ] . ackTimeout ) ;
302
312
clearTimeout ( workers [ uuid ] . activityTimeout ) ;
@@ -312,7 +322,7 @@ exports.Server = function Server(bsClient, workers, config, callback) {
312
322
}
313
323
314
324
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 ) ) ;
316
326
}
317
327
} ) ;
318
328
} ) ;
0 commit comments