diff --git a/lib/plugin/retryFailedStep.js b/lib/plugin/retryFailedStep.js index 394fa4e5c..4ddf95749 100644 --- a/lib/plugin/retryFailedStep.js +++ b/lib/plugin/retryFailedStep.js @@ -98,7 +98,6 @@ export default function (config) { const when = err => { if (!enableRetry) return - if (store.debugMode) return false if (!store.autoRetries) return false if (err && err.isTerminal) return false if (err && err.message && (err.message.includes('ERR_ABORTED') || err.message.includes('frame was detached') || err.message.includes('Target page, context or browser has been closed'))) return false diff --git a/test/unit/plugin/retryFailedStep_test.js b/test/unit/plugin/retryFailedStep_test.js index 812903665..6e3ffabe1 100644 --- a/test/unit/plugin/retryFailedStep_test.js +++ b/test/unit/plugin/retryFailedStep_test.js @@ -326,4 +326,39 @@ describe('retryFailedStep', () => { expect(counter).to.equal(1) expect(res).to.equal(false) }) + + it('should retry failed step when debugMode is enabled', async () => { + // This test ensures that the retryFailedStep plugin works correctly + // when store.debugMode is true, which happens with --verbose or --debug flags + store.debugMode = true + + try { + retryFailedStep({ retries: 3, minTimeout: 1 }) + event.dispatcher.emit(event.test.before, createTest('test')) + event.dispatcher.emit(event.step.started, { title: 'seeElement' }) + + let counter = 0 + await recorder.add( + () => { + counter++ + if (counter < 4) { + throw new Error('Element not found') + } + return 'success' + }, + undefined, + undefined, + true, + ) + + const result = await recorder.promise() + + // Should retry 3 times and succeed on 4th attempt + expect(counter).to.equal(4) + expect(result).to.equal('success') + } finally { + // Reset to default value + store.debugMode = false + } + }) })