Comments (8)
I also noticed $el
isn't set correctly in the Cypress.log
which means debugging won't give you the element returned by the query in the UI even if it shows up in the Yielded
of the consoleProps
from cypress-testing-library.
I also noticed the command does not retry queries even though there is a comment that says it doesn't retry for get*
queries...
from cypress-testing-library.
These are fantastic recommendations! Would you be willing to make contributions to improve things as you suggest?
from cypress-testing-library.
Yes! Working on those now
from cypress-testing-library.
@kentcdodds Question: I read up on all the query types and looked through implementations in this repository: findBy
, findByAll
, queryBy
, queryByAll
, getBy
, and getByAll
.
getBy
and getByAll
have already been removed from this repo stating it doesn't make as much sense in the context of Cypress.
findBy
and findByAll
are actually delegating to the queryBy
and queryByAll
since Cypress handles retries.
queryBy
and queryByAll
synchronously resolve normally where findBy
and findByAll
resolve asynchronously. This is somewhat enforced in the code here by only allowing the find
types to retry and not letting the query
types retry. Does this make sense? All normal Cypress commands always retry. One of the stated usefulness of query
resolving synchronously in the docs is to verify non-existence, but Cypress allows testing existence through .should('exist')
and non-existence through .should('not.exist')
.
Does it make still make sense to not retry query*
matchers? cy.find*
already doesn't match the documentation because it can be modified by .should('not.exist')
.
I'm debating removing the restriction to not retry cy.query*
, but then the functionality is exactly the same as cy.find*
from cypress-testing-library.
find
queries are the most idiomatic in Cypress, we only have the query ones for legacy reasons at this point I think
from cypress-testing-library.
@alexkrolick thanks! I agree. In order to have more useful errors, I changed the logic a bit to follow the same codepath as find queries, but with a 1ms duration. This keeps the messages consistent.
As I was thinking about my original issue with the more complex find[All]ByLabelText
, I realized the get*
query types already have more descriptive error messages. I'll try switching both query*
and find*
queries to use get*
under the hood. Adding a retry-on-error loop will ensure the same retry as before, but with more descriptive error messages straight from @tesing-library/dom
We can see if that seems like the way to go
from cypress-testing-library.
🎉 This issue has been resolved in version 5.2.0 🎉
The release is available on:
npm package (@latest dist-tag)
- GitHub release
Your semantic-release bot 📦🚀
from cypress-testing-library.
Related Issues (20)
- Enable to click to input number -webkit-inner-spin-button HOT 1
- Cypress test errors after upgraing to 9.0.0 and using testIsolation: false HOT 10
- findAllByRole and findByRole don't chain correctly HOT 2
- get/query variants don't exist HOT 3
- Testing library throws uncaught error HOT 24
- @testing-library/cypress causes non-cypress tests to fail HOT 1
- any `find*` command fails when is first to run in a test context HOT 6
- Dependency problem on @testing-library/dom between @testing-library/react and cypress-testing-library HOT 1
- Update @testing-library/dom HOT 1
- Conflicting peer dependency with new Cypress release 13.0.0 HOT 2
- should not exist does not work with findByRole
- Configuring testIdAttribute does not work HOT 1
- Doesn't work with Cypress 13.4.0 due to `addQuery` usage HOT 3
- npx cypress open fails on ubuntu 20.03 for missing GLIBCXX_3.4.29 HOT 1
- Unable to install Cypress version 13
- Property 'findByTestId' does not exist on type 'cy & CyEventEmitter' - only in .cy.tsx (component testing) files HOT 1
- Can't resolve 'process/browser.js'
- cy.findByText doesn't work on Cypress 13.6.4 in some situations HOT 2
- `findByRole` with `name` option does not consider element title when element contains text.
- Update @testing-library/dom to v10
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cypress-testing-library.