Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

Rubu on Rails | FactoryGril + RSPec + Capybara構成で画面キャプチャの取得

概要

FactoryGril + RSPec + Capybara構成で画面キャプチャの取得

内容

画面キャプチャを利用するには以下のコマンドを利用します。

page.save_screenshot('file_path/file_name.png')

この際、ヘッドレス環境ではキャプチャ不可能なため
普段のテストで速度重視のためにヘッドレス環境を利用している場合は
環境面での切り替えが必要です。

ヘッドレスの場合

各ケースに記載されている
describe "discribe", js: true do
のjs:trueが不要

spec_helperの設定を下記にする

config.use_transactional_fixtures = true # キャプチャが必要ない場合 true
# config.use_transactional_fixtures = false # キャプチャが必要な場合 false
:
:
# Capybara.javascript_driver = :selenium # キャプチャが必要な場合はselenium
Capybara.javascript_driver = :poltergeist # キャプチャが不要な場合はpoltergeist

トランザクション管理不要
暗黙でロールバックされるため特に配慮する必要なし。

ブラウザを起動してキャプチャする場合

各ケースに記載されている
describe "discribe", js: true do
のjs:trueが必要

spec_helperの設定を下記にする

# config.use_transactional_fixtures = true # キャプチャが不要な場合 true
config.use_transactional_fixtures = false # キャプチャが必要な場合 false
:
:
# Capybara.javascript_driver = :poltergeist # キャプチャが不要な場合はpoltergeist
Capybara.javascript_driver = :selenium # キャプチャが必要な場合はselenium

※便宜上seleniumとpoltergeistを引き合いに出しているが他のドライバでもよい
トランザクション管理が必要
テスト実行後にtrancateするロジックを追加するなどの対応が必要。
※この対応をしないとFactoryGirlが作成したデータとSelneium-WebDriverが別プロセスで
起動するため同一トランザクションのデータを見ることができません。
そのため、ヘッドレスでは通っていたテストが通らなくなります。

必要な箇所でキャプチャを呼び出す
page.save_screenshot('file_path/file_name.png')

実際にCapybaraでキャプチャした画像