@@ -8,9 +8,15 @@ describe 'Browser', ->
88 createMockTimer = require ' ./mocks/timer'
99
1010 browser = collection = emitter = socket = null
11+ socketId = 0
12+
13+ mkSocket = ->
14+ s = new e.EventEmitter
15+ s .id = socketId++
16+ return s
1117
1218 beforeEach ->
13- socket = new e.EventEmitter
19+ socket = mkSocket ()
1420 emitter = new e.EventEmitter
1521 collection = new Collection emitter
1622
@@ -250,7 +256,7 @@ describe 'Browser', ->
250256 browser .state = Browser .STATE_EXECUTING
251257
252258 browser .onDisconnect ' socket.io-reason' , socket
253- browser .reconnect new e.EventEmitter
259+ browser .reconnect mkSocket ()
254260
255261 timer .wind 10
256262 expect (browser .state ).to .equal Browser .STATE_EXECUTING
@@ -263,7 +269,7 @@ describe 'Browser', ->
263269 browser .init ()
264270 browser .state = Browser .STATE_EXECUTING
265271
266- browser .reconnect new e.EventEmitter
272+ browser .reconnect mkSocket ()
267273
268274 # still accept results on the old socket
269275 socket .emit ' result' , {success : true }
@@ -281,7 +287,7 @@ describe 'Browser', ->
281287 browser = new Browser ' id' , ' Chrome 25.0' , collection, emitter, socket, null , 10
282288 browser .state = Browser .STATE_DISCONNECTED
283289
284- browser .reconnect new e.EventEmitter
290+ browser .reconnect mkSocket ()
285291
286292 expect (browser .isReady ()).to .equal true
287293
@@ -388,7 +394,7 @@ describe 'Browser', ->
388394 socket .emit ' disconnect' , ' socket.io reason'
389395 expect (browser .isReady ()).to .equal false
390396
391- newSocket = new e.EventEmitter
397+ newSocket = mkSocket ()
392398 browser .reconnect newSocket
393399 expect (browser .isReady ()).to .equal false
394400
@@ -429,7 +435,7 @@ describe 'Browser', ->
429435 expect (browser .state ).to .equal Browser .STATE_DISCONNECTED
430436 expect (browser .disconnectsCount ).to .equal 1
431437
432- newSocket = new e.EventEmitter
438+ newSocket = mkSocket ()
433439 emitter .on ' browser_register' , -> browser .execute ()
434440
435441 # reconnect on a new socket (which triggers re-execution)
@@ -453,7 +459,7 @@ describe 'Browser', ->
453459 browser .execute ()
454460
455461 # A second connection...
456- newSocket = new e.EventEmitter
462+ newSocket = mkSocket ()
457463 browser .reconnect newSocket
458464
459465 # Disconnect the second connection...
@@ -464,6 +470,21 @@ describe 'Browser', ->
464470 socket .emit ' result' , {success : true , suite : [], log : []}
465471 expect (browser .lastResult .success ).to .equal 1
466472
473+ it ' complete only once after reconnect on the same socket' , ->
474+ # If there is a new connection on the same socket,
475+ # we should emit complete message only once.
476+ browser = new Browser ' fake-id' , ' Chrome 31.0' , collection, emitter, socket, null , 10
477+ browser .onComplete = sinon .spy ()
478+ browser .init ()
479+ browser .execute ()
480+
481+ # A second connection...
482+ browser .reconnect socket
483+
484+ socket .emit ' result' , {success : true , suite : [], log : []}
485+ socket .emit ' complete'
486+
487+ expect (browser .onComplete .callCount ).to .equal 1
467488
468489 it ' disconnect when no message during the run' , ->
469490 timer = createMockTimer ()
0 commit comments