@@ -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+ CircularJSON = require ( 'circular-json' ) ;
1516
1617exports . Server = function Server ( bsClient , workers , config , callback ) {
1718 var testFilePaths = ( Array . isArray ( config . test_path ) ? config . test_path : [ config . test_path ] )
@@ -64,6 +65,10 @@ exports.Server = function Server(bsClient, workers, config, callback) {
6465 var jsReportersScript = fs . readFileSync ( jsReportersPath , {
6566 encoding : 'utf8'
6667 } ) ;
68+ var circularJSONPath = path . join ( __dirname , '../node_modules/circular-json/build/circular-json.js' ) ;
69+ var circularJSONScript = fs . readFileSync ( circularJSONPath , {
70+ encoding : 'utf8'
71+ } ) ;
6772
6873 if ( pathMatches ) {
6974 var framework = config [ 'test_framework' ] ;
@@ -75,6 +80,7 @@ exports.Server = function Server(bsClient, workers, config, callback) {
7580 } ) ;
7681
7782 patch += '<script type="text/javascript">' + jsReportersScript + '</script>' ;
83+ patch += '<script type="text/javascript">' + circularJSONScript + '</script>' ;
7884
7985 // adding framework scripts
8086 if ( framework === 'jasmine' ) {
@@ -238,13 +244,13 @@ exports.Server = function Server(bsClient, workers, config, callback) {
238244 var query = null ;
239245
240246 try {
241- query = JSON . parse ( body ) ;
247+ query = CircularJSON . parse ( body ) ;
242248 } catch ( e ) {
243249 logger . info ( '[%s] Exception in parsing log' , worker . string ) ;
244250 logger . info ( '[%s] Log: ' + qs . parse ( body ) . data , worker . string ) ;
245251 }
246252
247- logger . trace ( '[%s] _progress' , worker . id , JSON . stringify ( query ) ) ;
253+ logger . trace ( '[%s] _progress' , worker . id , CircularJSON . stringify ( query ) ) ;
248254
249255 if ( query && query . test && query . test . errors ) {
250256 var browserReport = getBrowserReport ( browserInfo ) ;
@@ -275,10 +281,10 @@ exports.Server = function Server(bsClient, workers, config, callback) {
275281
276282 var query = null ;
277283 try {
278- query = JSON . parse ( body ) ;
284+ query = CircularJSON . parse ( body ) ;
279285 } catch ( e ) { }
280286
281- logger . trace ( '[%s] _report' , worker . id , JSON . stringify ( query ) ) ;
287+ logger . trace ( '[%s] _report' , worker . id , CircularJSON . stringify ( query ) ) ;
282288
283289 if ( query === null ) {
284290 logger . info ( '[%s] Null response from remote Browser' , request . headers [ 'x-browser-string' ] ) ;
0 commit comments