From f5cc169ca03880babeff56c038042b7279e78a95 Mon Sep 17 00:00:00 2001 From: Jaromir Obr Date: Tue, 2 Sep 2025 13:59:22 +0200 Subject: [PATCH] fix: retryFailedStep plugin works in debug/verbose mode - Remove debugMode check that prevented retries when --verbose or --debug flags are used - Fix affects both retryFailedStep and enhancedRetryFailedStep plugins - Add regression test to ensure retries work correctly in debug mode - Resolves issue where plugin was disabled in debug mode without clear reason Fixes #4384 --- lib/plugin/enhancedRetryFailedStep.js | 1 - lib/plugin/retryFailedStep.js | 1 - test/unit/plugin/retryFailedStep_test.js | 35 ++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/lib/plugin/enhancedRetryFailedStep.js b/lib/plugin/enhancedRetryFailedStep.js index 2061a8b15..c767b058c 100644 --- a/lib/plugin/enhancedRetryFailedStep.js +++ b/lib/plugin/enhancedRetryFailedStep.js @@ -26,7 +26,6 @@ module.exports = config => { const when = err => { if (!enableRetry) return false - if (store.debugMode) return false if (!store.autoRetries) return false if (customWhen) return customWhen(err) return true diff --git a/lib/plugin/retryFailedStep.js b/lib/plugin/retryFailedStep.js index 6d43bf8da..30d321b11 100644 --- a/lib/plugin/retryFailedStep.js +++ b/lib/plugin/retryFailedStep.js @@ -83,7 +83,6 @@ module.exports = config => { const when = err => { if (!enableRetry) return - if (store.debugMode) return false if (!store.autoRetries) return false if (customWhen) return customWhen(err) return true diff --git a/test/unit/plugin/retryFailedStep_test.js b/test/unit/plugin/retryFailedStep_test.js index 55cc2eea9..b30448eb5 100644 --- a/test/unit/plugin/retryFailedStep_test.js +++ b/test/unit/plugin/retryFailedStep_test.js @@ -280,4 +280,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, { name: '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 + } + }) })