Cypress is very bad. What frustrated me most of all is that you can't use node.js, only 'browser javascript'. Also, absence of promises makes Cypress way behind its alternatives. Don't be fool, use TypeScript + Cucumber + puppeteer/ axios, or Java + Selenium/RestAssured, or any other appropriate tool with open source model and adequate code base, maintained by community
Also (nearly) every command in Cypress is a promise which allows you to make them then-able. [2]
I don't agree with using Cucumber for anything. The way most teams implement Cucumber makes it such a pain to write a test. I do like the suggestion of puppeteer tho. If you haven't heard of playwright [3] I'd look into that. From the same creator as puppeteer but was hired to work on playwright full time. They have the advantage of being to test on gecko, chromium, and webkit browsers which is really nice because IME anything Apple becomes such a pain to setup to properly test.
[1] https://docs.cypress.io/api/utilities/promise.html#Syntax