capybara + Poltergeistでjavascriptをテストするには

  • 6
    Like
  • 0
    Comment
More than 1 year has passed since last update.

前回、capybara-webkitをbundle installしてコケた時の対処法という記事を書いたのですが、Capybaraを使う際に知っておきたいことを読むと、QTというのはなかなか曲者のようです。そこで、同じheadless driverであるPoltergeistを採用することにします。

環境

  • mac OSX10.9.5
  • rails3.2
  • ruby2.1.4
  • Homebrew

手順

Gemfileにgem poltergeistと記述してbundle installします。
データベースのトランザクションの扱いも変わるので、gem database_cleanerも入れておきます。
続いてphantomjsをbrew install phantomjsでインストールしましょう。

今度はセットアップです。

spec/rails_helper.rb
require 'spec_helper'
# ...略
require 'capybara/poltergeist'

RSpec.configure do |config|

  config.include FactoryGirl::Syntax::Methods
  Capybara.javascript_driver = :poltergeist

  config.use_transactional_fixtures = false

   # database_cleaner関連のセットアップ
   require 'database_cleaner'
   config.before(:suite) do
     DatabaseCleaner.strategy = :truncation
     DatabaseCleaner.clean_with(:truncation)
   end

   config.before(:each) do
     DatabaseCleaner.start
   end

   config.after(:each) do
     DatabaseCleaner.clean
   end
end

後はscenarioにjs :trueオプションを付けるとpoltergeistが動作して
javascriptのテストを行うことが出来ます。

参考
http://qiita.com/jnchito/items/bdd80c1085fa082e7d7a#1-3
http://qiita.com/katryo/items/e33197a4fa26de42a3c4