こちらの素晴らしい記事では、capybara-webkitを利用して、headlessでjsが動く環境を紹介されています。
capybara-webkitのこれまでリリースされているバージョン(~0.5.0)では、capybara1.0.0系への依存が解決できない為、抗う方法をご紹介されています。が、0.6.0からは上手く依存関係を解決されるようになりました!
■手順
こちらと同様ですが、Xvfbとqtの当たらしいバージョン(qt47)をインストールしておきます。
qt47にする理由はphantomjsも動かしたいからです ^o^
$ sudo yum -y install firefox ★ seleniumで動かす必要があれば
$ sudo yum -y install xorg-x11-server-Xvfb xorg-x11-fonts*
$ sudo vim /etc/yum.repos.d/atrpms.repo
[atrpms]
name= CentOS-$releasever - ATrpms
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/testing/
gpgcheck=1
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
enabled=0
$ sudo rpm --import http://packages.atrpms.net/RPM-GPG-KEY.atrpms
$ sudo yum -y install sqlite --enablerepo=atrpms ★依存関係からインストールする必要がある?
$ sudo yum -y install qt47-devel qt47-webkit qt47-webkit-devel --enablerepo=atrpms
$ sudo ln -s /usr/bin/qmake-qt47 /usr/bin/qmake (コンパイル時に必要とされるので予め作成)
でrailsプロジェクト側で
$ vim Gemfile
group :development, :test do ... gem 'capybara', '1.0.1' gem 'capybara-webkit', '0.6.0' gem 'headless', '0.1.0' ... end$ bundle install
$ vim spec/spec_helper.rb
... require "capybara/rails" require "capybara/rspec" ... RSpec.configure do |config| ... end Capybara.javascript_driver = :webkit$ vim spec/support/headless.rb
if %w(yes y on).include?(ENV['HEADLESS']) require 'headless' headless = Headless.new headless.start at_exit do headless.destroy end end$ vim spec/requests/index_spec.rb
# coding: utf-8 require 'spec_helper' describe "Index" do describe "GET /" do it "/index.html", :js => true do visit "/" click_link "About your application’s environment" page.should have_content("No route matches") end end endで
$ HEADLESS=on bundle exec rspec spec/requests/index_spec.rb
Index GET / /index.html Finished in 4.48 seconds 1 example, 0 failuresという訳でいい感じに実行できました~