codeceptjs / codeceptjs/CodeceptJS
Plugin "retryFailedStep" doesn't work in --debug or --verbose mode, searching for element fails immediately
- Dominant language
- JavaScript
- Stars
- 4.2k
- Forks
- 757
- Avg merge
- 2d 9h
- Merged PRs (30d)
- 16
Description
It's a **regression** in 3.6.0.
It works well with 3.5.15.
#### What are you trying to achieve?
You should see the `Retrying... Attempt ...` retries in the following test.
This is how it works with 3.5.15 :heavy_check_mark:
```bash
CodeceptJS v3.5.15 #StandWithUkraine
Using test root "/home/mirao/workspace/codeceptjs/tests/my"
Helpers: Playwright
Plugins: screenshotOnFail, retryFailedStep
My --
[1] Starting recording promises
Timeouts:
› [Session] Starting singleton browser session
test something
I see element ".blabla"
[1] Retrying... Attempt #2
[1] Retrying... Attempt #3
[1] Retrying... Attempt #4
[1] Error (Non-Terminated) | Error: Element ".blabla" is not visible on page. | (err) => { step.status = 'failed'; step.endTime = ...
[1] Error | Error: Element ".blabla" is not visible on page. undefined...
[1] Stopping recording promises
› Test failed, try to save a screenshot
› Screenshot is saving to /home/mirao/workspace/codeceptjs/tests/my/output/test_something.failed.png
✖ FAILED in 1148ms
[2] Starting recording promises
-- FAILURES:
1) My
test something:
Element ".blabla" is not visible on page.
at dontSeeElementError (/home/mirao/workspace/codeceptjs/node_modules/.pnpm/codeceptjs@3.5.15_@babel+core@7.24.7_@babel+preset-env@7.24.7_react@18.2.0_typescript@4.8.2/node_modules/codeceptjs/lib/helper/errors/ElementAssertion.js:23:9)
at Playwright.seeElement (/home/mirao/workspace/codeceptjs/node_modules/.pnpm/codeceptjs@3.5.15_@babel+core@7.24.7_@babel+preset-env@7.24.7_react@18.2.0_typescript@4.8.2/node_modules/codeceptjs/lib/helper/Playwright.js:1460:7)
Scenario Steps:
- I.seeElement(".blabla") at Test. (./My_test.ts:4:7)
Artifacts:
- screenshot: /home/mirao/workspace/codeceptjs/tests/my/output/test_something.failed.png
FAIL | 0 passed, 1 failed // 2s
```
#### What do you get instead?
> Provide console output if related. Use `--verbose` mode for more details.
This is how it works with 3.6.0 or 3.6.2 :bug:
```bash
CodeceptJS v3.6.0 #StandWithUkraine
Using test root "/home/mirao/workspace/codeceptjs/tests/my"
Helpers: Playwright
Plugins: screenshotOnFail, retryFailedStep
My --
[1] Starting recording promises
Timeouts:
› [Session] Starting singleton browser session
test something
I see element ".blabla"
[1] Error (Non-Terminated) | Error: Element ".blabla" is not visible on page. | (err) => { step.status = 'failed'; step.endTime = ...
[1] Error | Error: Element ".blabla" is not visible on page. undefined...
[1] Stopping recording promises
› Test failed, try to save a screenshot
› Screenshot is saving to /home/mirao/workspace/codeceptjs/tests/my/output/test_something.failed.png
✖ FAILED in 117ms
[2] Starting recording promises
-- FAILURES:
1) My
test something:
Element ".blabla" is not visible on page.
at dontSeeElementError (/home/mirao/workspace/codeceptjs/node_modules/.pnpm/codeceptjs@3.6.0_@babel+core@7.24.7_@babel+preset-env@7.24.7_react@18.2.0_typescript@4.8.2/node_modules/codeceptjs/lib/helper/errors/ElementAssertion.js:23:9)
at Playwright.seeElement (/home/mirao/workspace/codeceptjs/node_modules/.pnpm/codeceptjs@3.6.0_@babel+core@7.24.7_@babel+preset-env@7.24.7_react@18.2.0_typescript@4.8.2/node_modules/codeceptjs/lib/helper/Playwright.js:1464:7)
Scenario Steps:
- I.seeElement(".blabla") at Test. (./My_test.ts:4:7)
Artifacts:
- screenshot: /home/mirao/workspace/codeceptjs/tests/my/output/test_something.failed.png
FAIL | 0 passed, 1 failed // 574ms
```
> Provide test source code if related
```ts
Feature("My");
Scenario("test something", ({ I }) => {
I.seeElement(".blabla");
});
```
### Details
* CodeceptJS version: 3.6.0 or 3.6.2
* NodeJS Version: 18.20
* Operating System: Ubuntu 22.04
* Playwright Version 1.43.1
* Configuration file:
```ts
export const config: CodeceptJS.MainConfig = {
tests: "./*_test.ts",
output: "./output",
helpers: {
Playwright: {
browser: "chromium",
url: "http://localhost",
show: true,
},
},
plugins: {
retryFailedStep: {
enabled: true,
},
},
name: "my",
};
```
Contributor guide
Assessment
This issue has not been assessed yet.