Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

Capybara | Rails、RSpec、Capybara, Kickstart, Poltergeist, phantomjsでJavaScriptのテスト環境設定

概要

RailsRSpec、Capybara, Kickstart, Poltergeist, phantomjsでJavaScriptのテスト環境設定

内容

kickstart設定

kickstart.cssのimportをコメントコメントアウトして無効化。

/*---------------------------------
  IMPORTS
-----------------------------------*/
/*@import url(kickstart-buttons.css);
@import url(kickstart-forms.css);
@import url(kickstart-menus.css);
@import url(kickstart-grid.css);
@import url(jquery.fancybox-1.3.4.css);
@import url(kickstart-slideshow.css);
@import url(prettify.css);
@import url(tiptip.css);
@import url(fonts/fontawesome/css/font-awesome.min.css);*/
phantomjsインストール(Ubuntu1204)
sudo apt-get update
sudo apt-get install build-essential chrpath git-core libssl-dev libfontconfig1-dev
git clone git://github.com/ariya/phantomjs.git
cd phantomjs
git checkout 1.9
./build.sh

cd /usr/bin
sudo ln -s /インストールパス/bin/phantomjs

※./build.shの部分で数十分かかります

インストールの確認
phantomjs --version
Gemfile
gem "poltergeist", "~> 1.3.0"
gem "capybara", "~> 2.1.0"
spec_helper
require 'capybara'
require 'capybara/rails'
require 'capybara/rspec'
require 'capybara/dsl'
require 'capybara/poltergeist'

# ENV[:selenium]はrakeタスクで設定する。
def headless?
  return false if ENV[:selenium]
  true
end

RSpec.configure do |config|
  config.use_transactional_fixtures = false
end

if headless?
 SimpleCov.start "rails"
 Capybara.javascript_driver = :poltergeist
 Capybara.register_driver :poltergeist do |app|
   Capybara::Poltergeist::Driver.new(app, :js_errors => false, :timeout => 60)
 end
else
 Capybara.javascript_driver = :selenium
end
RSpec.configure do |config|
 config.before(:suite) do
   DatabaseCleaner.strategy = :truncation
 end

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

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