概要
RailsのブラウザテストのためCapybaraをインストール
内容
インストール
・Gemfileに下記を追加
gem "capybara", "~> 2.1.0" gem "capybara-webkit", "~> 1.0.0" gem "poltergeist", "~> 1.3.0" gem "launchy", "~> 2.3.0"
capybara-webkitとpoltergeistはJavaScriptのドライバ。
後者はヘッドレスで実行されるため高速。
・bundlerの実行
※エラーになる場合は
sudo apt-get update sudo apt-get upgrade sudo apt-get install libqt4-dev
を実行してからbundlerを再実行すること。
設定
spec_helperに下記を追記。
コメントアウト部はpoltergeistを利用する際に有効化する
require 'capybara/rspec' Capybara.javascript_driver = :webkit Capybara.register_driver :rack_test do |app| Capybara::RackTest::Driver.new(app, :browser => :firefox) end # Capybara.javascript_driver = :poltergeist # Capybara.register_driver :poltergeist do |app| # Capybara::Poltergeist::Driver.new(app, :js_errors => false, :timeout => 60) # end
テスト用フォルダを作成
spec/integrationフォルダを作成
mkdir integration
問題
実行時に
undefined method `visit'
のようなエラーが発生する場合は、spec_helper.rbに
RSpec.configure do |config| config.include(Capybara::DSL) end
を含めれば動作します。
サンプル
下記記事のログイン認証処理を対象にテストするサンプルを作成しました。
Ruby on Rails | ユーザー認証時にBCryptによる暗号化を行う
http://d.hatena.ne.jp/tbpg/20130713/1373714405
sample_spec.rb
require "spec_helper" describe "sample describe", :type => :feature do include Capybara::DSL it "sample it" do visit "/signin/index" fill_in "signin_form_login", :with => 'hoge' fill_in "signin_form_password", :with => 'hoge' click_on 'サインイン' current_path.should =~ /signin\/signin/ page.should have_content('Login:[hoge]は存在しないユーザーアカウントです') end end
テスト結果
. Finished in 0.15246 seconds 1 example, 0 failures Randomized with seed 0