@@ -45,18 +45,31 @@ describe('runner/suite-runner/insistent-suite-runner', () => {
4545
4646 afterEach ( ( ) => sandbox . restore ( ) ) ;
4747
48- it ( 'should create regular suite runner ' , ( ) => {
48+ it ( 'should clone suite on creation ' , ( ) => {
4949 const suite = makeSuiteStub ( ) ;
5050 const browserAgent = mkBrowserAgentStub_ ( ) ;
5151 const config = mkConfigStub_ ( ) ;
5252
53+ sandbox . spy ( suite , 'clone' ) ;
54+ const runner = InsistentSuiteRunner . create ( suite , browserAgent , config ) ;
55+
56+ assert . calledOnce ( suite . clone ) ;
57+ assert . notEqual ( suite , runner . _suite ) ;
58+ } ) ;
59+
60+ it ( 'should create regular suite runner and pass cloned suite' , ( ) => {
61+ const suite = makeSuiteStub ( ) ;
62+ const browserAgent = mkBrowserAgentStub_ ( 'bro' ) ;
63+ const config = mkConfigStub_ ( ) ;
64+
5365 sandbox . spy ( RegularSuiteRunner , 'create' ) ;
5466
5567 return InsistentSuiteRunner . create ( suite , browserAgent , config )
5668 . run ( )
5769 . then ( ( ) => {
5870 assert . calledOnce ( RegularSuiteRunner . create ) ;
5971 assert . calledWith ( RegularSuiteRunner . create , suite , browserAgent ) ;
72+ assert . notEqual ( RegularSuiteRunner . create . getCall ( 0 ) . args [ 0 ] , suite ) ;
6073 } ) ;
6174 } ) ;
6275
@@ -208,9 +221,9 @@ describe('runner/suite-runner/insistent-suite-runner', () => {
208221 assert . notCalled ( onError ) ;
209222
210223 assert . calledOnce ( onRetry ) ;
211- assert . calledWith ( onRetry , {
224+ assert . calledWithMatch ( onRetry , {
212225 foo : 'bar' ,
213- suite,
226+ suite : _ . omit ( suite , 'browsers' ) ,
214227 state,
215228 browserId : 'bro' ,
216229 attempt : 0 ,
@@ -228,6 +241,21 @@ describe('runner/suite-runner/insistent-suite-runner', () => {
228241 . then ( ( ) => assert . callCount ( RegularSuiteRunner . prototype . run , 1 + 2 ) ) ;
229242 } ) ;
230243
244+ it ( 'should not modify original suite' , ( ) => {
245+ const suite = makeSuiteStub ( ) ;
246+ const state = makeStateStub ( suite ) ;
247+ const browserAgent = mkBrowserAgentStub_ ( ) ;
248+ stubWrappedRun_ ( ( runner ) => runner . emit ( Events . ERROR , { state} ) ) ;
249+ const config = mkConfigStub_ ( { retry : 1 } ) ;
250+
251+ sandbox . spy ( RegularSuiteRunner , 'create' ) ;
252+ const suiteBefore = suite . clone ( ) ;
253+
254+ return mkInsistentRunner_ ( { suite, browserAgent, config} )
255+ . run ( )
256+ . then ( ( ) => assert . deepEqual ( suite , suiteBefore ) ) ;
257+ } ) ;
258+
231259 it ( 'should count few errors during run for one' , ( ) => {
232260 const state = makeStateStub ( ) ;
233261
@@ -328,7 +356,7 @@ describe('runner/suite-runner/insistent-suite-runner', () => {
328356 assert . calledOnce ( onRetry ) ;
329357 assert . calledWithMatch ( onRetry , {
330358 equal : false ,
331- suite,
359+ suite : _ . omit ( suite , 'browsers' ) ,
332360 state,
333361 browserId : 'bro' ,
334362 attempt : 0 ,
0 commit comments