It's easy to mock an API and test the front end, but interacting with the real system makes your tests more reliable, even if it is more difficult to set up. Cypress tasks allow executing code in the Node.js environment and, for example, seed the database or read a file on the system and much more.
Custom assertions allow us to reduce the boilerplate of tests, encapsulating logic, like in custom commands.
You can enhance Chai to define new assertions that can be used in the Cypress should command exploiting TypeScript augmentation to make everything typesafe.