no_picture

cucumber で PhantomJS を使う

Cucumber で使うブラウザを PhantomJS にしたい。 Cucumber -> Capybara -> Poltergeist -> PhantomJS という感じに利用します。 PhantomJS は画面のないブラウザと言うと、伝わりやすいでしょうか。 統合的なテストを行う場合、Rails プロジェクトでは Cucumber がよく使われています。 Cucumberのシナリオに @javascript というタグをつけると Selenium を利用して Firefox を制御してテストを行うことができます。 非常に便利なのですが、処理が長かったり、また、X11の起動してない Linux などで動かそうとするとちょっと問題がおきます。 そこで、画面の表示をしないブラウザでテストしたくなります。 また、実際によく使うわれるのはレンダリングエンジンは Webkit です。 そのためのブラウザとしての有力候補が PhantomJS です。 PhantomJS のレンダリングエンジンは Webkit で、必要であればスクリーンショットがとれます。 Travis CI でも利用できるようです。(未確認) 利用までの手順としては PhantomJS のインストール Rails プロジェクトに Poltergeistを追加 featrue/support/env.rb を設定 となります。 PhantomJS のインストール http://phantomjs.org/download.html から ダウンロードできます。 Mac であれば Homebrew や Macport でインストール可能なようです。ダウンロードしても bin/phantomjs を 環境変数PATH に入っているところに配置するだけです。 Rails プロジェクトに Poltergeist を追加 Gemfile に group :test do gem 'poltergeist' end と追記すれば良いです。 feature/support/env.rb を設定 設定しないと使えません。 feature/support/env.rb に以下を追記すればよいでしょう。 require 'capybara/poltergeist' Capybara.javascript_driver = :poltergeist @javascript つけるのがめんどくさい!