I write tests using chromedriver. Ends up being really simple to write, and if I want to debug something, it's just a chrome instance that I can use normally if I make the tests wait.
Only downside is you have to make it run with xvfb on the CI server, but that's pretty easy to set up in your config file usually.
Only downside is you have to make it run with xvfb on the CI server, but that's pretty easy to set up in your config file usually.