In our last project we also evaluated different tools among these were also Cypress and Selenium. At the end we decided for Selenium, because we were testing front end applications and for us Cross-Browser testing was one of the most important reasons, why we made the decision for selenium. Furthermore our test management had the requirement to integrate one of the evaluated tools in our test management tool.
So it is difficult just to say, selenium or cypress is better. From my point of view this also depends on your project which you have (just E2E test, Unit test, etc. focus on cross browser testing?) and also on the circumstances. As already said in our case it was cross-browser testing and ingetration with other test management tools.
Let me highlight some of the differences between both (and why at the end we used selenium):
We had to test different browsers since we had to test a front end application. This should be run with every version & kind of browsers e.g. Opera, Firefox, IE, Chrome etc, and Cypress is just running with Chrome (by the way this was nearly a k.o. critera for us as front end testers)
EDIT: With Cypress Version 4.0 Cypress introduced also the browser MS Edge and Firefox but that was before our implementation (around 2018/2019) see link: Introducing Firefox Cypress
Most of us were familiar with Java. Furthermore selenium is also supporting C#, JavaScript, Python etc. And Cypress is just supporting JavaScript. But since most of our guys were familiar with Java - most of our testers voted for Selenium.
We also thougth about documentation about both tools. So what would happen, if we set up a large framework (at least we got around > 30 testers in different departments) and we e.g. need more information about creating automated test cases? So is are there plenty of documentation? I think in both cases - in Selenium you got a robust community, mulitple bindings and also best practices, in Cypress.io you have only a "good documentation" but In my opinion it is not widespread as Selenium. (Furthermore our department - we have a large software quality department / It-department - was thinking also introducing Selenium as standard test automation tool for front end applications)
- Breadth of testing options & binding with commercial tools
This question was also important for us. Can we do also other testing stuff e.g not just E2E tests also e.g. Unit test? We don't wanted to introduce a tool for E2E test, a different tool for Unit test, a different tool for security test....with Selenium we were also able to execute unit tests. And with Cypress.io you just can execute E2E tests.
Furthermore the adaption with other tools is relevant. For example for our test management tool we used Tricentis. Also most commercial tools (e.g. test management tools) are supporting selenium and unfortunately not Cypres.io.
But of course, from our lessons learned we also found out that selenium (sometimes) is not as fast as Cypress.io. Seems that Cypress.io is more related to developers than to testers. (see also link Aplitools Selenium vs. Cypress )
If you need more readings there are some links which can help you in your decision which tool to use:
Cypress-vs.Selenium