codeceptjs / codeceptjs/CodeceptJS

Plugin "retryFailedStep" doesn't work in --debug or --verbose mode, searching for element fails immediately

Đang mở
#4,384 7 bình luận 0 reaction 0 người được giao Xem trên GitHub
stale
Ngôn ngữ chính
JavaScript
Star
4.2k
Fork
757
Merge trung bình
2 ngày 9 giờ
Pull request đã merge (30 ngày)
16

Mô tả

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",
};

```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Trước tiên, hãy tái hiện kịch bản TypeScript được cung cấp với plugin retryFailedStep trong CodeceptJS 3.6.x, sử dụng cả --debug và --verbose, sau đó so sánh với 3.5.15. Được xem là hoàn tất khi bước I.seeElement bị lỗi in ra các lần thử lại ожида vọng trước lỗi cuối cùng.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
javascript, nodejs, playwright
Lĩnh vực
testing-qa
Loại issue
Lỗi
Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.