RoadMovie

write down memos or something I found about tech things

CapybaraでE2Eテストを始める

WAFに依存しない形でCapybaraを導入してE2Eテストを書けるようになるところまでの導入です。テストの実行自体はRSpecを使います。

$ mkdir capybara-test
$ cd capybara-test

適当にGemfileを作ってbundle installで入れます

# Gemfile
source "http://rubygems.org"

gem "rspec"
gem "capybara"
gem "capybara-webkit"

今回はcapybaraのドライバーはcapybara-webkitを使用しています。

※capybaraのドライバについては下記リンクが詳しいです。
poltergeist - Capybaraを使う際に知っておきたいこと - Qiita [キータ]

 

$ bundle install

ここでqtがないからインストールできない的なエラーが出るかもしれません。上記リンクに記述がある通りcapybara-webkitがqtに依存しているからです。 その場合は下記リンクより自分の環境に合わせた解決策を実行してみてください。(私の場合はmacだったので、brew install qtでできました)

Installing Qt and compiling capybara webkit · thoughtbot/capybara-webkit Wiki · GitHub

 

インストールできたら、次にrspec initでspecディレクトリとspec_helper.rbを作ります。

$ bundle exec rspec --init

capybaraを使うためspec_helperに次の記述を追加します。

# spec_helper.rb
require 'capybara/rspec'
require 'capybara-webkit'

# ここは各自合わせて下さい
Capybara.app_host = 'url'
Capybara.javascript_driver = :webkit

RSpec.configure do |config|
  …

  config.include Capybara::DSL
end

ここまでできたらあとはspecファイルをsepcディレクトリ内に作っていってテストを実行していきます。

# spec/login_spec.rb

require 'spec_helper'

describe 'login', :type => :feature, :js => true do
  it do
    visit 'http://test.com/login'
    fill_in 'login', :with => 'test_user'
    fill_in 'password', :with => 'password'
    click_button 'Login'
    expect(page).to have_content('Logged in as')
  end
end

詳しい書き方はREADMEを見て下さい。

https://github.com/jnicklas/capybara

 

あとはアサーションを書いてキャプチャを撮ったりも簡単にできるのでどんどん書いて実行していってみてください。