Ubuntu 13 and Ruby on Rails 4 で、capybara-webkitを使ってcucumberでテスト
必要なパッケージをインストールする
たぶん、このインストールだけで済むはず。
sudo apt-get install libqtwebkit-dev xvfb ttf-kochi-mincho-naga10 ttf-kochi-gothic-naga10
入れている物は、
libqtwebkit-dev
qtwebkitの開発用モジュール
Qtはデスクトップと組込み開発向けのクロスプラットフォームアプリケーション開発フレームワーク
らしい
xvfb
仮想フレームバッファ
ttf-kochi-mincho-naga10
ttf-kochi-gothic-naga10
日本語フォント
済まなかったら以下を追加
sudo apt-get install libqt4-dev
Gemfileにgem追加
group :development, :test do gem 'rspec' gem 'rspec-rails' gem 'factory_girl_rails' gem 'database_cleaner' gem 'cucumber-rails', :require => false gem 'capybara-webkit' gem 'headless' end
bundle実行
bundle
インストール完了
続いて、実行です。
rails g cucumber:install
lib/tasks/cucumber.rakeファイルが出来ているので、開く
test:prepare
というタスクがあるので、この中に以下の様にheadless起動の処理を書く
task 'test:prepare' do headless = Headless.new(display:99) headless.start end
以上で、cucumberの設定は完了
続いて、サンプル的に。
Googleのトップページへアクセスして、スクリーンショットを撮って終了するという処理を書いてみます。
features/step_definitions/steps.rb
というファイルを作成します。
この中身は以下の様にします。
## -*- coding: utf-8 -*- gem 'capybara' gem 'capybara-webkit' require 'capybara' require 'capybara/dsl' require 'capybara-webkit' Capybara.default_driver = :webkit include Capybara::DSL 前提 /\"(.+)\"を表示/ do |url| visit(url) end ならば /スクリーンショットを取得し\"(.+)\"に保存/ do |filename| page.save_screenshot "./#{filename}" end
続いて、
/features/example.feature
というファイルを作成します。
中身は以下の様に。
# language:ja 機能: Googleのキャプチャを取得する シナリオ: 表示してキャプチャを取得 前提 "http://www.google.co.jp/"を表示 ならば スクリーンショットを取得し"google.png"に保存
最後に、cucumberを実行します。
rake cucumber
これで、www.google.co.jpのキャプチャが取得出来ましたでしょうか?