Cypress is a superb choice if you're only testing using Chrome. The ability to step through your test makes writing tests easier.
If you want to test with other browsers, like IE, Edge, Firefox, Safari, and any mobile browsers, TestCafe is a way better choice (given that it is browser agnostic). They also offer the studio ($), so you can create the tests without writing it.
In short, I'd say overall the cypress experience is better, but the usefulness of TestCafe is broader.
Debuggability (as in, the ability to step through a test script using the debugger) was harder in TestCafe than I'd hoped (I think mainly due to "async"), would it be easier in Cypress? That would definitely be a big "plus" ...
Have a look their Toggling + Debugging video
You can see that when the assertion fails, it gives you an interface to see the current state of the testing script. Hovering over the failed assertion shows where the failure happened.
In TestCafe, you can use --debug-on-fail flag or debugOnFail:true in config during test creation/debug. This will prevent the test from ending on error and is quite helpful, but the ability for cypress to step through the test after the failure makes debugging test easier.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.