PhantomJSのインストール
環境: Ubuntu 14.04LTS
$ sudo apt-get install phantomjs
Capybara + Poltergeist + Cucumberのインストール
以下のGemをインストールする。
$ gem install capybara capybara-webkit poltergeist headless cucumber rspec --no-ri --no-rdoc
Railsプロジェクトのテスト構造構築
Railsプロジェクトに以下のような構造のDirectoryとFileを作成します。
test/
├── Rakefile
└── features
├── screen_shot.feature
└── step_definitions
└── steps_ja.rb
Rakefile
Rakefileには以下のように記述します。
require 'rubygems'
require 'headless'
require 'cucumber'
require 'cucumber/rake/task'
headless = Headless.new(display:99)
headless.start
Cucumber::Rake::Task.new(:features) do |t|
t.cucumber_opts = "features --format pretty --format html -o features.html"
end
screen_shot.feature
screen_shot.featureには以下のように記述します。
# language:ja
機能: 指定したURLのスクリーンショットを保存
シナリオ: 画面表示をしてスクリーンショットを保存する
もし "http://qiita.com/ryosy383/"を表示
ならば スクリーンショットを撮って"screen_shot.png"に保存
steps_ja.rb
steps_ja.rbには以下のように記述します。
#coding: utf-8
require 'capybara-webkit'
require 'capybara/poltergeist'
Capybara.default_driver = :poltergeist
include Capybara::DSL
もし /\"(.+)\"を表示/ do |url|
visit(url)
end
ならば /スクリーンショットを撮って\"(.+)\"に保存/ do |filename|
page.save_screenshot "./#{filename}"
end
Cucumberの実行
testディレクトリ配下でCucumberを実行します。
$ cucumber
そうするとシナリオ通りにテストが実行されて、
screen_shot.pngが生成されます。
■screen_shot.png
■GitHubリンク
自動スクリーンショットスクリプト
https://github.com/ryosy383/AutoScreenCaputure