@@ -12,7 +12,8 @@ var stringify = require('../common/stringify')
12
12
var constant = require ( './constants' )
13
13
var util = require ( '../common/util' )
14
14
15
- function Karma ( socket , iframe , opener , navigator , location , document ) {
15
+ function Karma ( updater , socket , iframe , opener , navigator , location , document ) {
16
+ this . updater = updater
16
17
var startEmitted = false
17
18
var karmaNavigating = false
18
19
var self = this
@@ -200,6 +201,7 @@ function Karma (socket, iframe, opener, navigator, location, document) {
200
201
}
201
202
202
203
socket . emit ( 'karma_error' , message )
204
+ self . updater . updateTestStatus ( `karma_error ${ message } ` )
203
205
this . complete ( )
204
206
return false
205
207
}
@@ -222,17 +224,20 @@ function Karma (socket, iframe, opener, navigator, location, document) {
222
224
223
225
if ( ! startEmitted ) {
224
226
socket . emit ( 'start' , { total : null } )
227
+ self . updater . updateTestStatus ( 'start' )
225
228
startEmitted = true
226
229
}
227
230
228
231
if ( resultsBufferLimit === 1 ) {
232
+ self . updater . updateTestStatus ( 'result' )
229
233
return socket . emit ( 'result' , convertedResult )
230
234
}
231
235
232
236
resultsBuffer . push ( convertedResult )
233
237
234
238
if ( resultsBuffer . length === resultsBufferLimit ) {
235
239
socket . emit ( 'result' , resultsBuffer )
240
+ self . updater . updateTestStatus ( 'result' )
236
241
resultsBuffer = [ ]
237
242
}
238
243
}
@@ -242,6 +247,7 @@ function Karma (socket, iframe, opener, navigator, location, document) {
242
247
socket . emit ( 'result' , resultsBuffer )
243
248
resultsBuffer = [ ]
244
249
}
250
+
245
251
// A test could have incorrectly issued a navigate. Wait one turn
246
252
// to ensure the error from an incorrect navigate is processed.
247
253
setTimeout ( ( ) => {
@@ -250,6 +256,7 @@ function Karma (socket, iframe, opener, navigator, location, document) {
250
256
}
251
257
252
258
socket . emit ( 'complete' , result || { } )
259
+ self . updater . updateTestStatus ( 'complete' )
253
260
254
261
if ( returnUrl ) {
255
262
location . href = returnUrl
@@ -268,6 +275,7 @@ function Karma (socket, iframe, opener, navigator, location, document) {
268
275
}
269
276
270
277
socket . on ( 'execute' , function ( cfg ) {
278
+ self . updater . updateTestStatus ( 'execute' )
271
279
// reset startEmitted and reload the iframe
272
280
startEmitted = false
273
281
self . config = cfg
@@ -340,8 +348,8 @@ var socket = io(location.host, {
340
348
} )
341
349
342
350
// instantiate the updater of the view
343
- new StatusUpdater ( socket , util . elm ( 'title' ) , util . elm ( 'banner' ) , util . elm ( 'browsers' ) )
344
- window . karma = new Karma ( socket , util . elm ( 'context' ) , window . open ,
351
+ var updater = new StatusUpdater ( socket , util . elm ( 'title' ) , util . elm ( 'banner' ) , util . elm ( 'browsers' ) )
352
+ window . karma = new Karma ( updater , socket , util . elm ( 'context' ) , window . open ,
345
353
window . navigator , window . location , window . document )
346
354
347
355
} , { "../common/util" :6 , "./constants" :1 , "./karma" :2 , "./updater" :4 } ] , 4 :[ function ( require , module , exports ) {
@@ -368,26 +376,60 @@ function StatusUpdater (socket, titleElement, bannerElement, browsersElement) {
368
376
}
369
377
}
370
378
371
- function updateBanner ( status ) {
372
- return function ( param ) {
373
- if ( ! titleElement || ! bannerElement ) {
374
- return
375
- }
376
- var paramStatus = param ? status . replace ( '$' , param ) : status
377
- titleElement . textContent = 'Karma v' + VERSION + ' - ' + paramStatus
378
- bannerElement . className = status === 'connected' ? 'online' : 'offline'
379
+ var connectionText = 'never-connected'
380
+ var testText = 'loading'
381
+ var pingText = ''
382
+
383
+ function updateBanner ( ) {
384
+ if ( ! titleElement || ! bannerElement ) {
385
+ return
379
386
}
387
+ titleElement . textContent = `Karma v ${ VERSION } - ${ connectionText } ; test: ${ testText } ; ${ pingText } `
388
+ bannerElement . className = connectionText === 'connected' ? 'online' : 'offline'
380
389
}
381
390
382
- socket . on ( 'connect' , updateBanner ( 'connected' ) )
383
- socket . on ( 'disconnect' , updateBanner ( 'disconnected' ) )
384
- socket . on ( 'reconnecting' , updateBanner ( 'reconnecting in $ seconds...' ) )
385
- socket . on ( 'reconnect' , updateBanner ( 'connected' ) )
386
- socket . on ( 'reconnect_failed' , updateBanner ( 'failed to reconnect' ) )
391
+ function updateConnectionStatus ( connectionStatus ) {
392
+ connectionText = connectionStatus || connectionText
393
+ updateBanner ( )
394
+ }
395
+ function updateTestStatus ( testStatus ) {
396
+ testText = testStatus || testText
397
+ updateBanner ( )
398
+ }
399
+ function updatePingStatus ( pingStatus ) {
400
+ pingText = pingStatus || pingText
401
+ updateBanner ( )
402
+ }
403
+
404
+ socket . on ( 'connect' , ( ) => {
405
+ updateConnectionStatus ( 'connected' )
406
+ } )
407
+ socket . on ( 'disconnect' , ( ) => {
408
+ updateConnectionStatus ( 'disconnected' )
409
+ } )
410
+ socket . on ( 'reconnecting' , ( sec ) => {
411
+ updateConnectionStatus ( `reconnecting in ${ sec } seconds` )
412
+ } )
413
+ socket . on ( 'reconnect' , ( ) => {
414
+ updateConnectionStatus ( 'reconnected' )
415
+ } )
416
+ socket . on ( 'reconnect_failed' , ( ) => {
417
+ updateConnectionStatus ( 'reconnect_failed' )
418
+ } )
419
+
387
420
socket . on ( 'info' , updateBrowsersInfo )
388
- socket . on ( 'disconnect' , function ( ) {
421
+ socket . on ( 'disconnect' , ( ) => {
389
422
updateBrowsersInfo ( [ ] )
390
423
} )
424
+
425
+ socket . on ( 'ping' , ( ) => {
426
+ updatePingStatus ( 'ping...' )
427
+ } )
428
+ socket . on ( 'pong' , ( latency ) => {
429
+ updatePingStatus ( `ping ${ latency } ms` )
430
+ } )
431
+
432
+ return { updateTestStatus : updateTestStatus }
391
433
}
392
434
393
435
module . exports = StatusUpdater
0 commit comments