Rails 테스트를 사용하여 Cucumber+Capybara+Poltergeist를 사용하여 캡처 이미지 파일 저장

PhantomJS 설치


환경: Ubuntu 14.04LTE
$ 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의 실행


테스트 디렉토리에서 Cucumber를 실행합니다.
$ cucumber
이렇게 해서 시험은 대본대로 진행이 됐습니다.
screen_shot.png을 생성합니다.
■screen_shot.png

■ GiitHub 링크
스크립트 자동 캡처
https://github.com/ryosy383/AutoScreenCaputure

좋은 웹페이지 즐겨찾기