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

Commit 6268b62

Browse files
fix: child suite retries not called
1 parent 8461ac5 commit 6268b62

File tree

2 files changed

+33
-5
lines changed

2 files changed

+33
-5
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ module.exports = class InsistentSuiteRunner extends SuiteRunner {
1313
}
1414

1515
constructor(suite, browserAgent, config) {
16-
super(suite, browserAgent);
16+
super(suite.clone(), browserAgent);
1717

1818
this._config = config;
1919
this._retriesPerformed = 0;

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

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)