35
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

CapybaraでJSを使ったテストは save_screenshot が便利

概要

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した時と同じディレクトリにスクリーンショットが保存されるのでさらに便利。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
35
Help us understand the problem. What are the problem?