-
Notifications
You must be signed in to change notification settings - Fork 674
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Logging in to Gmail results in a JS error, halts rest of the test #4857
Comments
Hi @di5ko At present, the 'login via Google' functionality is not supported. It will be available after the Add the capability to perform testing in multiple browser windows feature is implemented. Track the #912 issue to be notified about our progress. |
I re-test the scenario and confirm that the problem with 'ResizeObserver' is reproduced with Firefox 73.0.1. |
Can be reproduced with https://mdn.github.io/dom-examples/resize-observer/resize-observer-text.html |
UPDATE fixture("Gmail login test")
.skipJsErrors(
({ message }) => {
return message === 'ResizeObserver loop completed with undelivered notifications.' ||
message === 'ResizeObserver loop limit exceeded';
}
);
test(...) Or even use a RegExp: fixture("Gmail login test")
.skipJsErrors({message: /ResizeObserver loop/ig});
test(...) Read more about the skip JS error adjustment ways in the Docs. As far as I understand, this error occurs when Chrome and Firefox don't display it by default. You can only catch it when you set an explicit window.onerror = e => console.log(e); You can see that this error is reproduced on the Google Sign In page without TestCafe. I added an As a workaround, you can specify the A more reliable way is to add a global window error handler explicitly in your tests via client scripts: import { Selector, t } from 'testcafe';
// Constants
const gmailEmailInput = Selector("#identifierId");
const gmailNextButton = Selector(".CwaK9");
const gmailPasswordInput = Selector("input[type='password']");
const explicitErrorHandler = () => {
window.addEventListener('error', e => {
if(e.message === 'ResizeObserver loop completed with undelivered notifications.' ||
e.message === 'ResizeObserver loop limit exceeded') {
e.stopImmediatePropagation();
}
})
}
fixture("Gmail login test")
.clientScripts({ content: `(${explicitErrorHandler.toString()})()` });
test("Not trigger JS error when logging in to Gmail", async testController => {
await testController
.navigateTo("https://mail.google.com")
.typeText(gmailEmailInput, "someuser@gmail.com")
.click(gmailNextButton)
.typeText(gmailPasswordInput, "password")
}); |
Many thanks for diving into this and the extensive reply. I created the bug report because I wanted to prevent having to run my tests with |
Fixes #269 Opens #254 A workaround is present here: DevExpress/testcafe#4857 (comment)
This issue does not relate to TestCafe, so I will close it. You can see a detailed explanation at #4857 (comment). |
Fixes #269 Opens #254 A workaround is present here: DevExpress/testcafe#4857 (comment)
As part of a 'forgot password functionality' test, I want to login go Gmail and fetch the latest e-mail. The Google/Gmail login interface renders a JS error with Testcafe.
What is your Test Scenario?
What is the Current behavior?
Step 3 renders a JS error, and step 4 will not work (the
.typeText
function will not do anything to insert text in the password field).What is the Expected behavior?
Being able to continue to populate the password field with
.typeText
.How would you reproduce the current behavior?
Test code:
Environment details
testcafe firefox gmail.test.js
The text was updated successfully, but these errors were encountered: