We respect the will of Cypress.io devs to create a testing framework from scratch, because we have first-hand experience of how non-trivial this task is. We haven’t encountered any detailed comparisons with TestCafe yet, neither made one ourselves. So let’s quickly sum it up.
At the first glance both tools have similar basics. They don't require Selenium and don't need browser plugins. They both support all-in-one principle (starting browsers, actions, assertions, reporting). They don't require any additional tools to run tests.
One of the major points is to create stable tests and avoid manual waits. Both tools have mechanisms to wait for elements to appear performing acitons and assertions.
There are some differences too. But we can speak with 100% confidence only for TestCafe, so we’ll focus on that.
TestCafe allows to run tests in any browser (desktop (UI or headless), mobile, remote and cloud). More about it here.
The two tools have different test APIs. TestCafe supports JS with the latest JS features (ES2017) and TypeScript.
TestCafe provides some high-level actions (like drag and pressKey). Cypress has some more low-level commands for such purposes (like trigger).
TestCafe’s selectors are designed to enable creating tests with PageModel pattern. This pattern makes tests readable and allows to spend less time on creating and supporting the tests.
TestCafe supports some features that are not implemented in Cypress yet (at the time we’re writing this). E.g. testing in iframes, working with file upload input elements via an Upload action, concurrent test execution, built-in Authentication.
Cypress also has features that aren’t yet in TestCafe, like recording videos or GUI displaying the current test state.
The first version of TestCafe was a commercial product. It has been around for several years and has a community with real projects using it. In 2015 it was completely rewritten as an open source Node.js tool, which has the same name and principles. Cypress is in beta today.
In the thread you’ve linked I saw a couple of notes about difficulties of URL-rewriting approach (like working with localStorage, Cookie, XHR security policy & etc.) We’ve dealt with those issues in our core, if anyone’s in the details we can write more about how we did it.
We eat our own dog food in DevExpress and test our Web components with TestCafe. But we’d love to hear from people who are not affiliated with any of the two tools, and have tried them both in real projects. If anyone wants to write about it, that’d be awesome.
And you’re welcome to ask further technical questions about TestCafe in this thread.