codeceptjs / codeceptjs/CodeceptJS

Self healing AI capability doesn't repeat waitForVisible/waitForElement step healing for more than 1 BDD scenario (test)

Open
#4,527 1 comment 0 reactions 0 assignees View on GitHub
stale
Dominant language
JavaScript
Stars
4.2k
Forks
757
Avg merge
2d 9h
Merged PRs (30d)
16

Description

#### What are you trying to achieve?

We would like to use self healing AI capability https://codecept.io/ai/#self-healing-tests on CI with non default steps (waitForVisible/waitForElement) for more then 1 BDD scenario (test)

```
@test
Feature: Check that self healing works for more then 1 scenario

Scenario: Self-healing test 1
Given The tests is logged into Application

Scenario: Self-healing test 2
Given The tests is logged into Application
```

#### What do you get instead?

Self-healing is being invoked for the first scenario (test) on waitForVisible step and doesn't for the second on the same step.

- logs from 1st scenario:
```
[1] Error (Non-Terminated) | Error: element ({id: usernameee}) still not present on page after 15 sec
locator.waitFor: Timeout 15000ms exceeded.
Call log:
- waiting for locator('#usernameee').first()
| async (err) => { isHealing = true if (caughtError ...
codeceptjs:heal Self-healing started I.waitForElement({"id":"usernameee"}, 15) +0ms
› Trying to heal I.waitForElement({"id":"usernameee"}, 15) step
```

- logs from 2nd scenario:
```
[3] Error (Non-Terminated) | Error: element ({id: usernameee}) still not present on page after 15 sec
locator.waitFor: Timeout 15000ms exceeded.
Call log:
- waiting for locator('#usernameee').first()
| (err) => { step.status = 'failed'; step.endTime = ...
[3] Error | Error: element ({id: usernameee}) still not present on page after 15 sec
locator.waitFor: Timeout 15000ms exceeded.
Call log:
- waiting for locator('#usernameee').first()
undefined...
[3] Stopping recording promises
```

```js
heal.addRecipe('ai', {
priority: 1,
prepare: {
html: ({ I }) => I.grabHTMLFrom('body'),
},
steps: [
'waitForVisible',
'waitForInvisible',
'waitForElement',
],
fn: async args => {
return ai.healFailedStep(args);
},
});
```

### Details

* CodeceptJS version:3.6.6
* NodeJS Version:18.17.0
* Operating System:MacOS
* Playwright: 1.46

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.