Switch from Selenium+Firefox to Poltergeist+Phantomjs and speed up your test suite

Selenium is a great tool for integration testing but it has two major drawbacks :*it relies on Firefox engine, so every time Firefox updates, you have to cross your finger and praise your test suite will still be usable

it is f*** slow Solve those 2 problems in just a few minutes, switch to phantomjs ! Phantomjs is a headless browser that uses a webkit engine, just grab the binary according to your plateform here. In my case (ubuntu 64 bits) , I installed it on my system this way :

$ tar jxvf  phantomjs-1.9.0-linux-x8664.tar.bz2 $ sudo ln -s /home/guillaume/phantomjs-1.9.0-linux-x8664/bin/phantomjs /usr/sbin/phantomjs What just really matters here is that the binary should be accessible from your PATH.

Second step, for Rails users, install poltergeist to use phantomjs from your app :

Gemfile

gem ‘poltergeist’ …and then “bundle install”.  You also have to change slightly your Rspec settings  :

spec/spec_helper.rb

Before :

require 'selenium-webdriver’ Capybara.default_driver = :selenium

Change to :

require 'capybara/poltergeist’ Capybara.javascript_driver = :poltergeist Ok, easy enough ? That’ll all ! Enjoy your integration tests :

Selenium

Finished in 35.52 seconds 14 examples, 0 failures

Phantomjs

Finished in 18.47 seconds 14 examples, 0 failures Yes, almost 2x faster :-)