LoginSignup
34
33

More than 5 years have passed since last update.

RailsテストCucumber+Capybara+Poltergeistでスクリーンショット画像ファイル保存

Last updated at Posted at 2014-07-17

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

qiita.png

■GitHubリンク
自動スクリーンショットスクリプト
https://github.com/ryosy383/AutoScreenCaputure

34
33
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
33