From 5a549b69d082b0be34fbdc1105e51bbd9631cbb7 Mon Sep 17 00:00:00 2001 From: KobeNguyenT <7845001+kobenguyent@users.noreply.github.com> Date: Sun, 28 May 2023 11:09:23 +0200 Subject: [PATCH] fix: global retry (#3667) --- lib/listener/retry.js | 3 ++- .../retryHooks/codecept.retry.global.conf.js | 13 ++++++++++++ .../codecept.retry.global.scenario.conf.js | 15 ++++++++++++++ .../retryHooks/retry_global_scenario_test.js | 10 ++++++++++ .../configs/retryHooks/retry_global_test.js | 10 ++++++++++ test/runner/retry_hooks_test.js | 20 +++++++++++++++++-- 6 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 test/data/sandbox/configs/retryHooks/codecept.retry.global.conf.js create mode 100644 test/data/sandbox/configs/retryHooks/codecept.retry.global.scenario.conf.js create mode 100644 test/data/sandbox/configs/retryHooks/retry_global_scenario_test.js create mode 100644 test/data/sandbox/configs/retryHooks/retry_global_test.js diff --git a/lib/listener/retry.js b/lib/listener/retry.js index 38faf7346..1b165c769 100644 --- a/lib/listener/retry.js +++ b/lib/listener/retry.js @@ -44,6 +44,7 @@ module.exports = function () { if (!retryConfig) return; if (Number.isInteger(+retryConfig)) { + if (test.retries() === -1) test.retries(retryConfig); return; } @@ -59,7 +60,7 @@ module.exports = function () { } if (config.Scenario) { - if (isNotSet(test.retries())) test.retries(config.Scenario); + if (test.retries() === -1) test.retries(config.Scenario); output.log(`Retries: ${config.Scenario}`); } } diff --git a/test/data/sandbox/configs/retryHooks/codecept.retry.global.conf.js b/test/data/sandbox/configs/retryHooks/codecept.retry.global.conf.js new file mode 100644 index 000000000..dec4ff970 --- /dev/null +++ b/test/data/sandbox/configs/retryHooks/codecept.retry.global.conf.js @@ -0,0 +1,13 @@ +exports.config = { + tests: './*_test.js', + output: './output', + helpers: { + CustomHelper: { + require: './helper.js', + }, + }, + retry: 2, + bootstrap: null, + mocha: {}, + name: 'retryHooks', +}; diff --git a/test/data/sandbox/configs/retryHooks/codecept.retry.global.scenario.conf.js b/test/data/sandbox/configs/retryHooks/codecept.retry.global.scenario.conf.js new file mode 100644 index 000000000..738b62816 --- /dev/null +++ b/test/data/sandbox/configs/retryHooks/codecept.retry.global.scenario.conf.js @@ -0,0 +1,15 @@ +exports.config = { + tests: './*_test.js', + output: './output', + helpers: { + CustomHelper: { + require: './helper.js', + }, + }, + retry: { + Scenario: 3, + }, + bootstrap: null, + mocha: {}, + name: 'retryHooks', +}; diff --git a/test/data/sandbox/configs/retryHooks/retry_global_scenario_test.js b/test/data/sandbox/configs/retryHooks/retry_global_scenario_test.js new file mode 100644 index 000000000..5def63b49 --- /dev/null +++ b/test/data/sandbox/configs/retryHooks/retry_global_scenario_test.js @@ -0,0 +1,10 @@ +Feature('Retry scenario global config'); + +let i = 0; + +Scenario('#globalScenarioRetry works', () => { + console.log('ok', i, new Date()); + i++; + if (i < 3) throw new Error('not works'); + console.log('works'); +}); diff --git a/test/data/sandbox/configs/retryHooks/retry_global_test.js b/test/data/sandbox/configs/retryHooks/retry_global_test.js new file mode 100644 index 000000000..6c20cef33 --- /dev/null +++ b/test/data/sandbox/configs/retryHooks/retry_global_test.js @@ -0,0 +1,10 @@ +Feature('Retry global config'); + +let i = 0; + +Scenario('#globalRetry works', () => { + console.log('ok', i, new Date()); + i++; + if (i < 3) throw new Error('not works'); + console.log('works'); +}); diff --git a/test/runner/retry_hooks_test.js b/test/runner/retry_hooks_test.js index f91c9441f..4eb222d59 100644 --- a/test/runner/retry_hooks_test.js +++ b/test/runner/retry_hooks_test.js @@ -13,7 +13,7 @@ describe('CodeceptJS Retry Hooks', function () { it(`run ${retryHook} config`, (done) => { exec(config_run_config('codecept.conf.js', retryHook), (err, stdout) => { debug_this_test && console.log(stdout); - expect(stdout).toContain('OK | 1 passed'); + expect(stdout).toContain('1 passed'); done(); }); }); @@ -23,7 +23,7 @@ describe('CodeceptJS Retry Hooks', function () { it(`should ${retryHook} set hook retries from global config`, (done) => { exec(config_run_config('codecept.retry.obj.conf.js', retryHook), (err, stdout) => { debug_this_test && console.log(stdout); - expect(stdout).toContain('OK | 1 passed'); + expect(stdout).toContain('1 passed'); done(); }); }); @@ -38,4 +38,20 @@ describe('CodeceptJS Retry Hooks', function () { done(); }); }); + + it('should set global retry', (done) => { + exec(config_run_config('codecept.retry.global.conf.js', '#globalRetry'), (err, stdout) => { + debug_this_test && console.log(stdout); + expect(stdout).toContain('1 passed'); + done(); + }); + }); + + it('should set global scenario retry', (done) => { + exec(config_run_config('codecept.retry.global.scenario.conf.js', '#globalScenarioRetry'), (err, stdout) => { + debug_this_test && console.log(stdout); + expect(stdout).toContain('1 passed'); + done(); + }); + }); });