If that's not it keep looking. If there's a thing you want to do, odds are Gleb has a video or blog post about it.
Anyway its subjective, I don't like Cypress.
I figure there must be a way to do that, but it's very possible I'm misunderstanding what you're trying to solve!
And Cypress gives a great API surface where almost everything can be done with just this declarative API, and it enables them to show the full plan in a UI even while it's executing.
But if you actually need custom control flow, with code you control... you need to "pause" your action-enqueueing to let Cypress catch up. Which means you're going to be nesting callbacks, or sprinkling awaits in all the places that aren't logically awaiting, because you need an explicit yield point out of your JS block. Our team finds this rare enough that it's acceptable. But... yeah, it's far from a perfect solution.
Both of these issues are well documented in git issues with hundreds of replies and work arounds that just don’t always work.
I’m ready to throw in the towel and rewrite everything in playwright. Maybe b I’ll have different issues there…
I have only seen this issue with JS based VDOM frameworks.
I really really like the cy.intercept() for intercepting and modifying requests.
- The Test Runner lets you retrace your actions with a visual UI and interact with the page as you rewind, with access to Dev Tools the whole time. It also has an excellent tool for targeting elements. (Although you'll eventually lean more on Dev Tools once you're fluent with CSS selectors.)
- There's very little boilerplate for anything. Several useful libraries are packed in and available globally.
- You can easily spy on and interact with fetch and XHR on the page
- You can easily execute Node stuff
- They have a great Dashboard (their only pay feature)