概要
CapybaraでSeleniumやpoltergeistをつかってjs: true
なテストを書くときに、テストが失敗した瞬間の画面が欲しかったりする。
JavaScriptを使わないテストでは save_and_open_page
と書けばその時の画面を保存してくれるが、CSSやJSが使われていない.htmlが保存されるので、レイアウトも整っていないし、テストの時に実際にどのような画面が表示されていたのか分かりにくい。
そこで save_screenshot
page.save_screenshot 'screenshot.png'
とすると、その時の画面のスクリーンショットがscreenshot.png
という名前で保存されるので便利。
rails_helper.rb
def take_screenshot
page.save_screenshot "tmp/capybara/screenshot-#{DateTime.now}.png"
end
と追記しておくと
foo_spec.rb
it 'save screenshot' js: true do
visit '/bar'
take_screenshot
end
とかけるし、save_and_open_page
した時と同じディレクトリにスクリーンショットが保存されるのでさらに便利。