Ubuntu 13 and Ruby on Rails 4 で、capybara-webkitを使ってcucumberでテスト

2013年9月11日

必要なパッケージをインストールする

たぶん、このインストールだけで済むはず。

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のキャプチャが取得出来ましたでしょうか?