Instantly share code, notes, and snippets.

What would you like to do?
Cucumber and Capybara-Webkit automatic screenshots on failure
def screen_shot_and_save_page
require 'capybara/util/save_and_open_page'
path = "/#{'%Y-%m-%d-%H-%M-%S')}"
Capybara.save_page body, "#{path}.html"
page.driver.render Rails.root.join "#{Capybara.save_and_open_page_path}" "#{path}.png"
After do |scenario|
screen_shot_and_save_page if scenario.failed?
rescue Exception => e
puts "Snapshots not available for this environment.\n
Have you got gem 'capybara-webkit' in your Gemfile and have you enabled the javascript driver?"
Then /take a snapshot(| and show me the page)/ do |show_me|
page.driver.render Rails.root.join("tmp/capybara/#{'%Y-%m-%d-%H-%M-%S')}.png")
Then %{show me the page} if show_me.present?

This comment has been minimized.


mattheworiordan commented Nov 16, 2011

Please note that this has been superseded by the Capybara-screenshot gem at


This comment has been minimized.

shahmishal commented Jan 7, 2013

How do i change the path of automatic screen shot on failure? currently it saves it in "/" but want to move it to working directory. or How do i turn off automatic screen shot? Thank you!


This comment has been minimized.

Dorian commented Jul 24, 2018

It's screenshot_and_save_page now

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment