Class: Applitools::Images::Eyes
- Inherits:
-
EyesBase
- Object
- EyesBase
- Applitools::Images::Eyes
- Defined in:
- lib/applitools/images/eyes.rb
Overview
A class to perform visual validation on images. Allows to handle user data like Mouse trigger and Text trigger
Class Method Summary collapse
Instance Method Summary collapse
-
#add_mouse_trigger(action, control, cursor) ⇒ Object
Adds a mouse trigger.
-
#add_text_trigger(control, text) ⇒ Object
Adds a keyboard trigger.
- #check(*args) ⇒ Object
-
#check_image(options) ⇒ Object
Matches the input image with the next expected image.
- #check_it(name, target, match_window_data) ⇒ Object
-
#check_region(options) ⇒ Object
Performs visual validation for the current image.
- #check_single(name, target, options = {}) ⇒ Object
- #configure {|config| ... } ⇒ Object
- #get_app_output_with_screenshot(*_args) ⇒ Object
- #get_region_provider(target) ⇒ Object
-
#initialize(server_url = Applitools::Connectivity::ServerConnector::DEFAULT_SERVER_URL) ⇒ Eyes
constructor
Creates a new eyes object.
-
#open(options = {}) ⇒ Object
Starts a test.
- #open_and_close(*args) ⇒ Object
-
#test(options = {}, &_block) ⇒ Object
Opens eyes using passed options, yields the block and then closes eyes session.
Constructor Details
#initialize(server_url = Applitools::Connectivity::ServerConnector::DEFAULT_SERVER_URL) ⇒ Eyes
Creates a new eyes object
27 28 29 30 31 |
# File 'lib/applitools/images/eyes.rb', line 27 def initialize(server_url = Applitools::Connectivity::ServerConnector::DEFAULT_SERVER_URL) super self.base_agent_id = "eyes.images.ruby/#{Applitools::VERSION}".freeze self.runner = Applitools::ClassicRunner.new end |
Class Method Details
.environment_sdk ⇒ Object
38 39 40 41 42 43 |
# File 'lib/applitools/images/eyes.rb', line 38 def self.environment_sdk { name: :eyes_images, currentVersion: Applitools::EyesImages::VERSION } end |
Instance Method Details
#add_mouse_trigger(action, control, cursor) ⇒ Object
Adds a mouse trigger
220 221 222 |
# File 'lib/applitools/images/eyes.rb', line 220 def add_mouse_trigger(action, control, cursor) add_mouse_trigger_base action, control, cursor end |
#add_text_trigger(control, text) ⇒ Object
Adds a keyboard trigger
227 228 229 |
# File 'lib/applitools/images/eyes.rb', line 227 def add_text_trigger(control, text) add_text_trigger_base control, text end |
#check(*args) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/applitools/images/eyes.rb', line 77 def check(*args) args.compact! case (first_arg = args.shift) when String name = first_arg target = args.shift when Applitools::Selenium::Target target = first_arg when Hash target = first_arg[:target] name = first_arg[:name] || first_arg[:tag] end result = check_it(name, target, Applitools::MatchWindowData.new(default_match_settings)) result.nil? ? result : result.as_expected? # from v4 nil end |
#check_image(options) ⇒ Object
Matches the input image with the next expected image. Takes a hash as an argument. Returns boolean
as result of matching.
182 183 184 185 186 187 |
# File 'lib/applitools/images/eyes.rb', line 182 def check_image() = { tag: '', ignore_mismatch: false }.merge # image = get_image_from_options(options) target = Applitools::Images::Target.any().ignore_mismatch([:ignore_mismatch]) check([:tag], target) end |
#check_it(name, target, match_window_data) ⇒ Object
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/applitools/images/eyes.rb', line 108 def check_it(name, target, match_window_data) Applitools::ArgumentGuard.not_nil(name, 'name') return universal_check(name, target) region_provider = get_region_provider(target) match_window_data.tag = name match_window_data.read_target(target, nil) image = target.image self. = Applitools::RectangleSize.new image.width, image.height if .nil? self.screenshot = EyesImagesScreenshot.new image if match_window_data.is_a? Applitools::MatchSingleCheckData return check_single_base( region_provider, target.[:timeout] || Applitools::EyesBase::USE_DEFAULT_TIMEOUT, match_window_data ) end check_window_base( region_provider, target.[:timeout] || Applitools::EyesBase::USE_DEFAULT_TIMEOUT, match_window_data ) end |
#check_region(options) ⇒ Object
Performs visual validation for the current image.
204 205 206 207 208 209 210 211 212 |
# File 'lib/applitools/images/eyes.rb', line 204 def check_region() = { tag: '', ignore_mismatch: false }.merge Applitools::ArgumentGuard.not_nil [:region], 'options[:region] can\'t be nil!' # image = get_image_from_options options target = Applitools::Images::Target.any().ignore_mismatch([:ignore_mismatch]) target.region([:region]) logger.info "check_region(image, #{[:region]}, #{[:tag]}, #{[:ignore_mismatch]})" check([:tag], target) end |
#check_single(name, target, options = {}) ⇒ Object
94 95 96 97 98 |
# File 'lib/applitools/images/eyes.rb', line 94 def check_single(name, target, = {}) open_and_close(name, target, ) do |n, t| check_it(n, t, Applitools::MatchSingleCheckData.new) end end |
#configure {|config| ... } ⇒ Object
33 34 35 36 |
# File 'lib/applitools/images/eyes.rb', line 33 def configure return unless block_given? yield(config) end |
#get_app_output_with_screenshot(*_args) ⇒ Object
231 232 233 234 235 |
# File 'lib/applitools/images/eyes.rb', line 231 def get_app_output_with_screenshot(*_args) result = super self.screenshot_url = nil result end |
#get_region_provider(target) ⇒ Object
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
# File 'lib/applitools/images/eyes.rb', line 137 def get_region_provider(target) if (region_to_check = target.region_to_check).nil? Object.new.tap do |prov| prov.instance_eval do define_singleton_method :region do Applitools::Region::EMPTY end define_singleton_method :coordinate_type do nil end end end else Object.new.tap do |prov| prov.instance_eval do define_singleton_method :region do region_to_check end define_singleton_method :coordinate_type do Applitools::EyesScreenshot::COORDINATE_TYPES[:context_relative] end end end end end |
#open(options = {}) ⇒ Object
Starts a test.
54 55 56 57 58 59 |
# File 'lib/applitools/images/eyes.rb', line 54 def open( = {}) Applitools::ArgumentGuard.hash , 'open(options)', [:app_name, :test_name] [:viewport_size] = Applitools::RectangleSize.from_any_argument [:viewport_size] # options = Applitools::Utils.extract_options!(args) universal_open() end |
#open_and_close(*args) ⇒ Object
100 101 102 103 104 105 106 |
# File 'lib/applitools/images/eyes.rb', line 100 def open_and_close(*args) = Applitools::Utils.(args) open() result = yield(*args) close(true, true) result end |
#test(options = {}, &_block) ⇒ Object
Opens eyes using passed options, yields the block and then closes eyes session. Use Applitools::Images::Eyes method inside the block to perform the test. If the block throws an exception, eyes session will be closed correctly.
69 70 71 72 73 74 75 |
# File 'lib/applitools/images/eyes.rb', line 69 def test( = {}, &_block) open() yield close ensure abort_if_not_closed end |