Skip to content
This repository was archived by the owner on Sep 21, 2022. It is now read-only.

Commit a141462

Browse files
fix: child suites retries not called
1 parent 02079da commit a141462

File tree

2 files changed

+34
-12
lines changed

2 files changed

+34
-12
lines changed

lib/runner/suite-runner/insistent-suite-runner.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
'use strict';
22

3+
const _ = require('lodash');
4+
35
const SuiteRunner = require('./suite-runner');
46
const RegularSuiteRunner = require('./regular-suite-runner');
57
const SuiteCollection = require('../../suite-collection');
68
const Events = require('../../constants/events');
79
const NoRefImageError = require('../../errors/no-ref-image-error');
8-
const _ = require('lodash');
910

1011
module.exports = class InsistentSuiteRunner extends SuiteRunner {
1112
static create(suite, browserAgent, config) {
@@ -67,8 +68,9 @@ module.exports = class InsistentSuiteRunner extends SuiteRunner {
6768
return;
6869
}
6970

70-
const collection = new SuiteCollection([suite]).disableAll();
7171
const browser = this._browserAgent.browserId;
72+
const collection = new SuiteCollection([suite]);
73+
suite.states.forEach((state) => collection.disable(suite, {state: state.name}));
7274
this._statesToRetry.forEach((state) => collection.enable(suite, {state, browser}));
7375
}
7476

test/unit/runner/suite-runner/insistent-suite-runner.js

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
'use strict';
22

3+
const Promise = require('bluebird');
4+
const _ = require('lodash');
5+
6+
const {BrowserAgent} = require('gemini-core');
37
const Events = require('lib/constants/events');
48
const InsistentSuiteRunner = require('lib/runner/suite-runner/insistent-suite-runner');
59
const RegularSuiteRunner = require('lib/runner/suite-runner/regular-suite-runner');
610
const CancelledError = require('lib/errors/cancelled-error');
711
const 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

1514
describe('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

Comments
 (0)