codeceptjs / codeceptjs/CodeceptJS
Wrong context set when using within
- Vorherrschende Sprache
- JavaScript
- Sterne
- 4.2k
- Forks
- 757
- Ø Merge
- 2 T. 9 Std.
- Gemergte PRs (30 T.)
- 16
Beschreibung
## Description
After updating to CodeceptJS version `3.6.10` (also occurring in `3.7.0`), we noticed that the `within` functionality no longer works correctly when used with a selector like `.modal-dialog`. Instead of setting the context to a page or frame object, it sets it to a locator object, which causes an error when trying to execute certain functions.
The error encountered:
```plaintext
context.waitForFunction is not a function
```
This error occurred in the waitForEnabled function, which expects context to be a page object, but instead it is passed as a locator because of the changes introduced with: #4557
Other helper functions that we found that produce the same error: `waitForDisabled, waitNumberOfVisibleElements, waitForValue`.
We also observed other functions like waitForText not working correctly inside within (e.g. not finding text inside the within context although it was obviously there).
Specifically this line in the `_getContext` function breaks this use case, since it now returns this.context even if it is a locator object:
```javascript
async _getContext() {
if ((this.context && this.context.constructor.name === 'FrameLocator') || this.context) {
return this.context
}
...
```
Everything worked fine again after reverting the changes that were introduced by this commit.
## Steps to Reproduce
1. Use the `within` function with a selector such as `.modal-dialog`.
2. Attempt to run a command inside the `within` block, like `waitForEnabled`.
3. Observe the error message.
### Example test case:
```javascript
Feature('Modal Test');
Scenario('Test modal within', async ({ I }) => {
I.amOnPage('https://example.com');
I.click('.open-modal');
within('.modal-dialog', async () => {
I.waitForEnabled('.button')
});
});
```
## Details
- CodeceptJS version: 3.6.10 and 3.7.0
- NodeJS Version: 23.7.0
- playwright-core version: 1.49.1
Beitragsleitfaden
Bewertung
Dieses Issue wurde noch nicht bewertet.