Skip to content

Instantly share code, notes, and snippets.

@hoverlover
Created February 16, 2012 21:18
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save hoverlover/1847930 to your computer and use it in GitHub Desktop.
Save hoverlover/1847930 to your computer and use it in GitHub Desktop.
Auto save_and_open_page on failure for Capybara
module Capybara
def Capybara.auto_save_and_open_page=(val)
@auto_save_and_open_page = !!val
end
def Capybara.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
Capybara.auto_save_and_open_page = true if 'true' == ENV['CAPYBARA_AUTO_SAVE_AND_OPEN_PAGE']
@eloyesp
Copy link

eloyesp commented Jan 31, 2017

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