Skip to content

Commit f28d314

Browse files
authored
fix: no retry failed step after tryto block (#4103)
1 parent dca0c2c commit f28d314

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

lib/plugin/retryFailedStep.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
const event = require('../event');
22
const recorder = require('../recorder');
33
const container = require('../container');
4+
const { log } = require('../output');
45

56
const defaultConfig = {
67
retries: 3,
@@ -99,7 +100,10 @@ module.exports = (config) => {
99100
config.when = when;
100101

101102
event.dispatcher.on(event.step.started, (step) => {
102-
if (process.env.TRY_TO) return;
103+
if (process.env.TRY_TO === 'true') {
104+
log('Info: RetryFailedStep plugin is disabled inside tryTo block');
105+
return;
106+
}
103107

104108
// if a step is ignored - return
105109
for (const ignored of config.ignoredSteps) {

test/unit/plugin/retryFailedStep_test.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
const { expect } = require('chai');
22

33
const retryFailedStep = require('../../../lib/plugin/retryFailedStep');
4+
const tryTo = require('../../../lib/plugin/tryTo');
45
const within = require('../../../lib/within');
56
const session = require('../../../lib/session');
67
const container = require('../../../lib/container');
@@ -37,6 +38,26 @@ describe('retryFailedStep', () => {
3738
return recorder.promise();
3839
});
3940

41+
it('should not retry failed step when tryTo plugin is enabled', async () => {
42+
tryTo();
43+
retryFailedStep({ retries: 2, minTimeout: 1 });
44+
event.dispatcher.emit(event.test.before, {});
45+
event.dispatcher.emit(event.step.started, { name: 'click' });
46+
47+
try {
48+
let counter = 0;
49+
await recorder.add(() => {
50+
counter++;
51+
if (counter < 3) {
52+
throw new Error('Retry failed step is disabled when tryTo plugin is enabled');
53+
}
54+
}, undefined, undefined, true);
55+
return recorder.promise();
56+
} catch (e) {
57+
expect(e.message).equal('Retry failed step is disabled when tryTo plugin is enabled');
58+
}
59+
});
60+
4061
it('should not retry within', async () => {
4162
retryFailedStep({ retries: 1, minTimeout: 1 });
4263
event.dispatcher.emit(event.test.before, {});

0 commit comments

Comments
 (0)