PerlerのRuby日記

Rubyとか

Mac + Webkit + Rails + RSpec + Capybaraによるテスト

昨日のテストを、レンダリングエンジンにWebkit(QtWebKit)を使ってテストする。
こちらのいいところは、完全にheadlessなのでモニタがない環境でもテストしやすいところ。

Gemfile

group :test do
  gem 'rspec-rails'
  gem 'capybara'
  gem 'selenium-webdriver'
  gem 'capybara-webkit' # 追加
end

bundle installでエラーが出るかもしれない。

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /Users/rightgo09/local/rvm/rubies/ruby-2.1.1/bin/ruby extconf.rb
Command 'qmake -spec macx-g++ ' not available

Makefile not found

homebrewでqtを入れておけばok。

brew install qt

spec_helper.rb

require 'capybara/rspec'
Capybara.default_driver = :selenium

↑これを↓こうする

require 'capybara/rspec'
Capybara.default_driver = :webkit
Capybara.javascript_driver = :webkit

Capybara.javascript_driverは、テストに:js => trueまたは@javascriptタグが付いているテストに使われるJSエンジン。デフォルトは:selenium
なので、default_driverが:webkitでも、javascript_driverを変更しない場合、:js => trueのテストはFireFoxでテストされることになる。

describe "the signin process", :type => :feature, :js => true do
  # something
end


Capybara.current_driverやCapybara.javascript_driverを使ってこれらを変更したり、
あるいはJenkinsのマトリクスで外部変数を読み込むようにすれば、
FireFoxChrome(いまは違うっけ?)とSafari辺りは自動テストできるんじゃないかと思う。