Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

cypress cannot find the line number of failed .findBy commands #232

Closed
rmmanseau opened this issue Oct 14, 2022 · 3 comments · Fixed by #239 · May be fixed by turnmodz/suquinnff#22 or turnmodz/suquinnff#23
Closed

cypress cannot find the line number of failed .findBy commands #232

rmmanseau opened this issue Oct 14, 2022 · 3 comments · Fixed by #239 · May be fixed by turnmodz/suquinnff#22 or turnmodz/suquinnff#23
Labels

Comments

@rmmanseau
Copy link

first, to address this:

HI! PLEASE STOP TO READ THIS!! If your issue is regarding one of the query
APIs (`getByText`, `getByLabelText`, etc), then please file it on the
https://github.com/kentcdodds/dom-testing-library repository instead. If you
file it here it will be closed. Thanks :)

the getBy functions do work properly, but when they fail cypress is not able to figure out where the failure is coming from & point to it accurately. This makes for difficult debugging because it's not possible to immediately jump to the failed testing library commands. I believe that this issue does belong here, as the issue is specific to integration with cypress test runner.

  • cypress-testing-library version: 8.0.3
  • cypress version: 10.10.0
  • node version: 14.20
  • npm (or yarn) version: 1.22.19

Relevant code or config

describe('does not show failing assertion', () => {
  it('cy.findByText', () => {
    cy.mount(<App/>);
    cy.findByText(TEXT); // <---- cypress cannot tell that this line is the point of failure
  })

  it('cy.findByTestId', () => {
    cy.mount(<App/>);
    cy.findByTestId("code");
    cy.findByTestId("yeet"); // <---- cypress cannot tell that this line is the point of failure 
  })
})

What you did:

run a test that fails on a cy.findBy* command

What happened:

it creates a TestingLibraryElementError and dumps the entire state of the DOM

image

What I expected:

it generates an Assertion Error and points to the line of the failing assertion.

image

Reproduction repository: https://github.com/rmmanseau/cy-testing-library-repro

Problem description:

@testing-library/cypress doesn't generate the correct assertion type / stack trace / whatever is required by cypress in order for it to point to the location of the failing line.

Suggested solution:

do the thing that cypress expects.

@NicholasBoll
Copy link
Contributor

I can look into this. This plugin takes the error created by DOM Testing Library to give more context to the error, but the stack trace isn't useful. Perhaps we can merge the message from DOM Testing Library and leave the rest of the assertion error alone.

@NicholasBoll
Copy link
Contributor

If I replace the error message instead of the whole error, I can get what you want:

error message

The top portion is the DOM Testing Library message while the Cypress error maintains Cypress context and stack traces.

NicholasBoll added a commit that referenced this issue Nov 15, 2022
Fixes #232

Update the Cypress error message rather than the entire error object. This merges the useful message of DOM Testing Library with the useful context of the Cypress error. This allows Cypress to find the line number of the failure in spec files i
nstead of deep inside DOM Testing Library.
NicholasBoll added a commit that referenced this issue Nov 15, 2022
Fixes #232

Update the Cypress error message rather than the entire error object. This merges the useful message of DOM Testing Library with the useful context of the Cypress error. This allows Cypress to find the line number of the failure in spec files instead of deep inside DOM Testing Library.
@github-actions
Copy link

🎉 This issue has been resolved in version 8.0.6 🎉

The release is available on:

Your semantic-release bot 📦🚀

# for free to join this conversation on GitHub. Already have an account? # to comment