11'use strict' ;
22
3+ const Promise = require ( 'bluebird' ) ;
4+ const _ = require ( 'lodash' ) ;
5+
6+ const { BrowserAgent} = require ( 'gemini-core' ) ;
37const Events = require ( 'lib/constants/events' ) ;
48const InsistentSuiteRunner = require ( 'lib/runner/suite-runner/insistent-suite-runner' ) ;
59const RegularSuiteRunner = require ( 'lib/runner/suite-runner/regular-suite-runner' ) ;
610const CancelledError = require ( 'lib/errors/cancelled-error' ) ;
711const NoRefImageError = require ( 'lib/errors/no-ref-image-error' ) ;
8- const makeStateStub = require ( '../../../util' ) . makeStateStub ;
9- const makeSuiteStub = require ( '../../../util' ) . makeSuiteStub ;
10- const makeSuiteTree = require ( '../../../util' ) . makeSuiteTree ;
11- const BrowserAgent = require ( 'gemini-core' ) . BrowserAgent ;
12- const Promise = require ( 'bluebird' ) ;
13- const _ = require ( 'lodash' ) ;
12+ const { makeStateStub, makeSuiteStub, makeSuiteTree} = require ( '../../../util' ) ;
1413
1514describe ( 'runner/suite-runner/insistent-suite-runner' , ( ) => {
1615 const sandbox = sinon . sandbox . create ( ) ;
@@ -453,17 +452,16 @@ describe('runner/suite-runner/insistent-suite-runner', () => {
453452 } ) ;
454453
455454 it ( 'should retry only failed states' , ( ) => {
456- const tree = makeSuiteTree ( { suite : [ '1st' , '2nd' , '3rd' ] } , { browsers : [ 'bro' ] } ) ;
455+ sandbox . spy ( RegularSuiteRunner , 'create' ) ;
457456
457+ const suite = makeSuiteTree ( { suite : [ '1st' , '2nd' , '3rd' ] } , { browsers : [ 'bro' , 'firefox' ] } ) . suite ;
458458 stubWrappedRun_ ( ( runner ) => {
459459 runner . emit ( Events . TEST_RESULT , { state : { name : '1st' } , equal : true } ) ;
460460 runner . emit ( Events . ERROR , { state : { name : '2nd' } } ) ;
461461 runner . emit ( Events . TEST_RESULT , { state : { name : '3rd' } , equal : false } ) ;
462462 } ) ;
463463
464- sandbox . spy ( RegularSuiteRunner , 'create' ) ;
465-
466- return mkRunnerWithRetries_ ( { suite : tree . suite , browserAgent : mkBrowserAgentStub_ ( 'bro' ) } )
464+ return mkRunnerWithRetries_ ( { suite, browserAgent : mkBrowserAgentStub_ ( 'bro' ) } )
467465 . run ( )
468466 . then ( ( ) => {
469467 const retriedSuite = RegularSuiteRunner . create . secondCall . args [ 0 ] ;
@@ -472,6 +470,28 @@ describe('runner/suite-runner/insistent-suite-runner', () => {
472470 assert . deepEqual ( retriedSuite . states [ 2 ] . browsers , [ 'bro' ] ) ;
473471 } ) ;
474472 } ) ;
473+
474+ it ( 'should not affect child states' , ( ) => {
475+ sandbox . spy ( RegularSuiteRunner , 'create' ) ;
476+
477+ const suite = makeSuiteTree ( {
478+ suite : {
479+ child : [ 'childState' ]
480+ }
481+ } , { browsers : [ 'bro' , 'firefox' ] } ) . suite ;
482+ makeStateStub ( suite , { name : 'rootState' } ) ;
483+
484+ stubWrappedRun_ ( ( runner ) => {
485+ runner . emit ( Events . TEST_RESULT , { state : { name : 'rootState' } , equal : false } ) ;
486+ } ) ;
487+
488+ return mkRunnerWithRetries_ ( { suite, browserAgent : mkBrowserAgentStub_ ( 'bro' ) } )
489+ . run ( )
490+ . then ( ( ) => {
491+ const childState = suite . children [ 0 ] . states [ 0 ] ;
492+ assert . deepEqual ( childState . browsers , [ 'bro' , 'firefox' ] ) ;
493+ } ) ;
494+ } ) ;
475495 } ) ;
476496
477497 describe ( 'cancel' , ( ) => {
0 commit comments