Module: LapisLazuli::WorldModule::Error
- Included in:
- LapisLazuli, Browser
- Defined in:
- lib/lapis_lazuli/world/error.rb
Overview
Module with error handling related functionality
Instance Method Summary collapse
-
#error(settings = nil) ⇒ Object
Throw an error based on some settings.
-
#start_debugger ⇒ Object
If byebug (ruby >= 2.0) or debugger (ruby < 2.0) are installed, start the debugger now.
Instance Method Details
#error(settings = nil) ⇒ Object
Throw an error based on some settings
Examples: ll.error(“Simple message”) => “Simple message” ll.error(:message => “Simple message”) => “Simple message” ll.error(:env => “test”) => “Environment setting ‘test’ not found” ll.error(:env => “test”, :exists => true) => “Environment setting ‘test’ found” ll.error(:screenshot => true, :message => “Simple”) => “Simple”, and screenshot is taken with the message name included.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/lapis_lazuli/world/error.rb', line 23 def error(settings=nil) # Default message = nil groups = nil # Default actions screenshot = false exception = nil # Do we have settings if not settings.nil? # Simple string input if settings.is_a? String = settings elsif settings.is_a? Hash if settings.has_key? :message = settings[:message] end # Environment errors if settings.has_key? :env # Does the value exist or not? exists = "" if not (settings.has_key?(:exists) or settings[:exists]) exists = ' not' end = "Environment setting '#{settings[:env]}'" + exists + " found" end if settings.has_key? :scenario = "Scenario failed: #{settings[:scenario]}" elsif settings.has_key? :not_found = "Not found: #{settings[:not_found]}" end # Grouping of errors if settings.has_key? :groups grouping = settings[:groups] if grouping.is_a? String groups = [grouping] elsif grouping.is_a? Array groups = grouping end end # Exception message shouldn't get lost if settings.has_key? :exception and not settings[:exception].nil? exception = settings[:exception] if .nil? = settings[:exception]. else = "#{} - #{settings[:exception].}" end elsif .nil? = "An unknown error occurred." end # Check if we want to take a screenshot if settings.has_key? :screenshot screenshot = !!settings[:screenshot] end end end # Include URL if we have a browser if self.has_browser? += " [ #{self.browser.url} ]" end # Add the groups to the message if not groups.nil? = "[#{groups.join("][")}] #{}" end # Write the error to the log if self.log self.log.error() end # Take screenshot, if necessary if screenshot self.browser.take_screenshot() end # Start debugger, if necessary if self.env_or_config("breakpoint_on_error") self.start_debugger end # Raise the message if not exception.nil? # message already contains ex.message here - or it should raise exception.class, , exception.backtrace else raise end end |
#start_debugger ⇒ Object
If byebug (ruby >= 2.0) or debugger (ruby < 2.0) are installed, start the debugger now.
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/lapis_lazuli/world/error.rb', line 124 def start_debugger # First try the more modern 'byebug' begin require "byebug" byebug rescue LoadError # If that fails, try the older debugger begin require 'debugger' debugger rescue LoadError self.log.info "No debugger found, can't break on failures." end end end |