Skip to content

Instantly share code, notes, and snippets.

@hoverlover
Created March 4, 2011 21:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hoverlover/855723 to your computer and use it in GitHub Desktop.
Save hoverlover/855723 to your computer and use it in GitHub Desktop.
Place this somewhere that gets loaded when RSpec starts and your browser will automatically show the contents of the webpage when an acceptance spec fails.
module Capybara
def auto_save_and_open_page=(val)
@auto_save_and_open_page = !!val
end
def auto_save_and_open_page?
@auto_save_and_open_page ||= false
end
end
module Capybara::Node::Finders
alias :orig_find :find
def find(*args)
begin
orig_find *args
rescue Capybara::ElementNotFound => e
session.save_and_open_page if Capybara.auto_save_and_open_page?
raise e
end
end
end
module Capybara::Node::Matchers
%w[has has_no].each do |has_has_no|
alias :"orig_#{has_has_no}_selector?" :"#{has_has_no}_selector?"
class_eval <<-METH, __FILE__, __LINE__ + 1
def #{has_has_no}_selector?(*args)
if !(result = orig_#{has_has_no}_selector?(*args)) && Capybara.auto_save_and_open_page?
session.save_and_open_page
end
result
end
METH
end
end
# Somewhere in the file
Capybara.auto_save_and_open_page = true if 'true' == ENV['CAPYBARA_AUTO_SAVE_AND_OPEN_PAGE']
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment