-
Notifications
You must be signed in to change notification settings - Fork 3.3k
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
doc.createTreeWalker is not a function #20813
Comments
Thanks for opening an issue! I see that you are using an older version of Cypress. Please update to the current version of Cypress and let us know if this is still happening for you. Your issue may have already been fixed. Thanks! |
I upgraded Cypress to v.9.5.4 but keep receiveing this "TypeError: doc.createTreeWalker is not a function". |
Hmm...looks like it is an unhandled case where querying the shadow dom doesn't work correctly. Do you think you might be able to create a simple test failure repro based on that possible root cause? That would help out a lot, thanks! |
Hi there, I can reproduce this issue consistently on my project. Please find an example here: https://gitlab.com/jesperancinha/moving-objects-service-root/-/jobs/3043475557. I'm not sure if this has anything to do with cypress. I can only reproduce it consistently with Edge and this happens while upgrading an okta library. It seems pretty random, but it would be great if cypress could handle this in any way. This is what I'm getting: moving-objects-service-root-e2e-edge-1 | TypeError: doc.createTreeWalker is not a function
moving-objects-service-root-e2e-edge-1 | at findShadowRoots (http://192.168.0.15:8080/__cypress/runner/cypress_runner.js:169004:22)
moving-objects-service-root-e2e-edge-1 | at collectRoots (http://192.168.0.15:8080/__cypress/runner/cypress_runner.js:168984:24)
moving-objects-service-root-e2e-edge-1 | at Object.findAllShadowRoots (http://192.168.0.15:8080/__cypress/runner/cypress_runner.js:168994:10)
moving-objects-service-root-e2e-edge-1 | at getElements (http://192.168.0.15:8080/__cypress/runner/cypress_runner.js:143111:93)
moving-objects-service-root-e2e-edge-1 | at tryCatcher (http://192.168.0.15:8080/__cypress/runner/cypress_runner.js:11318:23)
moving-objects-service-root-e2e-edge-1 | at Function.Promise.attempt.Promise.try (http://192.168.0.15:8080/__cypress/runner/cypress_runner.js:8592:29) |
Any news on this? It's blocking our tests, and we run into it often. Any workaround? We have paid support. Thanks |
Hi @steve-schreiner. I am starting to take a look into this issue. I am trying to run @jesperancinha 's repository but I am having trouble getting it going this time (was able to start it before for a different issue). Are either of you able to help me provide a small reproduction to consistently reproduce the issue? My guess is the |
Hi Bill,
I'm adding 3 people from my QA team that can assist you.
Thanks,
Steve
…On Mon, Oct 24, 2022 at 5:11 PM Bill Glesias ***@***.***> wrote:
Hi @steve-schreiner <https://github.com/steve-schreiner>. I am starting
to take a look into this issue. I am trying to run @jesperancinha
<https://github.com/jesperancinha> 's repository but I am having trouble
getting it going this time (was able to start it before for a different
issue). Are either of you able to help me provide a small reproduction to
consistently reproduce the issue?
My guess is the includeShadowDom option is set to true, and when looking
up the shadow root within cypress in the case stability may/may not be
achieved, the root returns null and causes a createTreeWalker is not a
function error. I could be wrong, but I can likely confirm this suspicion
with a reproduction.
—
Reply to this email directly, view it on GitHub
<#20813 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AWQ2VXJIOOSZ4QWDJBFQBT3WE33QXANCNFSM5R4SF62Q>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Hi Bill and Matt, how are you? As Steve mentioned, we have been encountering this |
Thanks @laradiaz, unfortunately, I haven't been able to recreate the issue. If anyone has a project I can look at and debug or if you are able to create the issue using the cypress-test-tiny project that would be great. |
Hi everyone, would just like to leave my two cents on this issue as I am also experiencing it. I have noticed in my tests that the |
@mschile @aquanow-rtran we have it repeated in this and the following runs as well https://dashboard.cypress.io/projects/zz1ryi/runs/3684/overview/411c1463-3742-46aa-9ff7-1c200c3a9363 |
@yarmakR, unfortunately, I don't have access to view your project. Do you have a link to your project code that I could debug? |
No, I'm sorry. But this approach #20813 (comment) help us to resolve the issue for now. Thank you! |
This looks suspiciously like another manifestation of the same underlaying bug as #7306. We've spent a lot of work looking into that for Cypress 12.0.0 - my hope is that this issue will be resolved in Cy12, which should come out next week. Going to assign myself so I remember to follow up here after release. |
Hi there, I'm not sure if this is helpful at the moment since you are going to release version 12 at some point, I'm looking forward to that, but just wanted to share a build where this is now almost always happening: This is part of a dependabot PR: |
Does anyone know how I could work with iframes in cypress without calling the |
Thanks to @aquanow-rtran for the hint:
Rather than target the element you want to work with directly a decent work around is to target the nearest parent you know to be already loaded (or unaffected by dynamic JavaScript) and do a preliminary loading check first. Here is an example that relies on the waitForStableDom plugin in TypeScript using the PageObject pattern (I know I know, POs are now an anti pattern, don't @ me) abstract class BasePage {
get finishedLoading(): Cypress.Chainable {
return cy.get('[loading="true"]').should('have.length', 0);
}
waitForDomReady(): Cypress.Chainable {
return this.finishedLoading.waitForStableDOM();
} You might want to check for disabled too depending on your use case. My problem was updating an item inside a shopping cart which involved updating the image and other product details, hence the item would become disabled and still be loading after the the requests we're waited on: // ... derived class ...
saveEdits() {
cy.intercept('POST', BasePage.urls.api).as('graphql');
this.saveEditsButton.click();
cy.wait(['@graphql', '@graphql']);
this.waitForDomReady(); // ensures items finish loading and DOM has settled
return this;
} |
This issue has not had any activity in 180 days. Cypress evolves quickly and the reported behavior should be tested on the latest version of Cypress to verify the behavior is still occurring. It will be closed in 14 days if no updates are provided. |
Closing. Hopefully this is resolved in v12, but there wasn’t a reproducible example provided here to investigate. |
Current behavior
When running a Cypress test via the Test Runner:
node ./cypress/cypress.js -- open
I'm seeing this error thrown from cypress:
Desired behavior
No error is thrown
Test code to reproduce
I can't share the full source code due to my company's policies. Maybe a simpler repro could be made once I have some idea of where this issue is coming from.
The line of code where this is failing is
cy.findByRole('tabpanel', { hidden: false }).findByTestId('RichCommandFooter').contains('runtime');
Cypress Version
8.1.0
Other
Happy to provide more details. Our
cypress.js
file has a good amount going on it, but I'm not sure what would be most relevant to help debug.@testing-library/cypress
is on version 8.0.1The text was updated successfully, but these errors were encountered: