I've been facing the following problem for about a week without any updates to CodeceptJS (or other dependencies) or the application code.
- test clicks on the account icon in the page header
- login form opens
- CodeceptJS should verify that a certain element exists
- it doesn't find it within 10 seconds even though it's definitely there; in open mode I can see it and inspect the DOM and it's there
- this happens 95% of time, very rarely it works
- it worked fine until about a week ago
This is the login method in the page object. The selector it doesn't find is the loginFormSelector.
login(email, password) {
this.openLoginForm()
this.fillLoginForm(email, password)
}
openLoginForm() {
I.waitForClickable(this.navigationLinks.responsiveLogin, 10)
I.click(this.navigationLinks.responsiveLogin)
I.waitForElement(this.loginFormSelector, 10) // selector is '#LoginForm'
}
fillLoginForm(email, password) {
I.fillField(this.customerData.loginCustomerEmail, email)
I.click(this.buttons.loginSubmit)
}
The HTML looks like this:
<div id="AccountLogin">
<section>
<section>...</section>
<section id="LoginForm">
<header>...</header>
<form>...</form>
</section>
</section>
</div>
What found out so far:
- no iframe
- no shadow DOM
- if I print the DOM with grabHTML in headless mode, the element is there
- if I inspect the DOM in headed mode, the element is there
- if I pause the test after it enters the login page, I can use I.seeElement in the terminal and it find the element, yet the test fails upon continuation
Does not help:
- waitForVisible instead of waitForElement
- upping the timeout to 20
- adding a hard 3 second wait
- using an older version of Firefox (I tried 145, 144 and 142)
- running it locally or in the CI pipeline does not make a difference
- using a different selector
Does help:
- going to the login page by navigating to it with I.amOnPage() instead of clicking a link to get there
- using Chrome instead of Firefox
CodeceptJS: 3.7.5
Webdriver: 9.19.2
Browser: Firefox 145 (and 144 and 142)
I've been facing the following problem for about a week without any updates to CodeceptJS (or other dependencies) or the application code.
This is the login method in the page object. The selector it doesn't find is the loginFormSelector.
The HTML looks like this:
What found out so far:
Does not help:
Does help:
CodeceptJS: 3.7.5
Webdriver: 9.19.2
Browser: Firefox 145 (and 144 and 142)