概要
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')