Image by petcoffr.
Phantomjs is a great tool for end-to-end tests of your application. It provides a headless browser based on webkit that allows your tests to navigate through the web application. At Codeship we use its capybara integration, but Phantomjs can be used for lots of purposes.
Throughout the lifetime of our codebase we have tried various Capybaradrivers to find the one that suits our test environment and workflow. We started off with akephalos, moved on to Selenium and switched that for capybara-webkit.
All of them have their benefits, but also their quirks. Selenium broke frequently when new Firefox versions were released which were incompatible with older versions of the selenium-webdriver gem. Another issue was that Selenium had problems with links covered by modal panels. One of our customers experienced the same behavior in capybara-webkit. Phantomjs correctly failed and provided the right error messages.
Finally we started using Phantomjs with great success.
Following is a minimal setup gist to get you started. The Poltergeist gem integrates Phantomjs with Capybara and provides a lot of great extensions. Take a look at their customization options to get a better understanding of what you can do.
Here is the Capybara config with the parallel_tests gem setup we use for Codeship:
Give Phantomjs a try for your test environment! It is a stable, easy to use and a powerful friend.