I just switched the capybara-driver from selenium to webkit in my Rails 3.2.2 application / WAT

I was so tired watching this firefox-window popping up several times each time running the rspec-suite. With capybara-webkit it’s so much faster and so less boring now.

On Mac OS X

… I had to install some things, tho. I did this from within my rvm-environment for the WAT-project.

  cd ~/Development/wat # move to your project's root-path
  rvm use 1.9.2-p290@rails32  # use the propper rvm-environment
  ## change the two lines above to fit your needs
  
  rvmsudo brew install Qt
  rvmsudo gem install capybara-webkit

And now it worked just as mentioned in all the docs and blogs out there:

Add the gem to your Gemfile

  group :test do
   ...
   gem 'capybara-webkit'
   ...
  end

Then

  bundle

And finally config capybara to use the webkit-driver.

Change file spec/spec_helper and add the following lines

 ....
 RSpec.configure do |config|
      ...
      config.before(:suite) do
         ....
         Capybara.javascript_driver = :webkit
      end
      ... 
  end
  ....

spec-example

Here is an example how you can test a controller with Ajax-requests

it "switches personal information and authentication providers", :js => true, :driver => :webkit do
      visit user_path(@user1)
      click_link 'Personal information'
      page.should have_content "No personal information stored yet"
      click_link 'Assign authentication providers'
      page.should have_content "Identity"
    end

both click_link actions clicks on a link with :remote => true which end’s up in a remote-call to the server. If I remove the :js => true-parameter from the spec the test will fail obviously.