you can’t do everything in cypress so we have a mix of it and puppeteer
cypress for most of the complex tests. puppeteer for more basic things you don’t need to debug / “should always work”. because the debugging experience is much poorer. but the tests are “free” to execute. i’ve only wasted time in selenium and don’t recommend it for any purpose
I've had a lot of success with selenium-webdriver and Jest as the test runner. Use it with Async/Await, write some custom framework around it for stuff like before/after image capture and upload to s3(or wherever), and Bob's your uncle. ffmpeg can also be used to record the xvfb apparently so I may have a play with adding video capture soon. Debugging in VsCode is nice.
It's a shame 4.0 has been in beta forever and people keep taking from the project and not giving back, and that async stacks got broke(but I created a proxy that creates a nested stack and preserves the original test code call site), but it works very well in general.