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
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(name, target) ⇒ 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
- #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 |
# 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 end |
Instance Method Details
#add_mouse_trigger(action, control, cursor) ⇒ Object
Adds a mouse trigger
191 192 193 |
# File 'lib/applitools/images/eyes.rb', line 191 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
198 199 200 |
# File 'lib/applitools/images/eyes.rb', line 198 def add_text_trigger(control, text) add_text_trigger_base control, text end |
#check(name, target) ⇒ Object
63 64 65 |
# File 'lib/applitools/images/eyes.rb', line 63 def check(name, target) check_it(name, target, Applitools::MatchWindowData.new).as_expected? 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.
153 154 155 156 157 158 |
# File 'lib/applitools/images/eyes.rb', line 153 def check_image() = { tag: '', ignore_mismatch: false }.merge image = () target = Applitools::Images::Target.any(image).ignore_mismatch([:ignore_mismatch]) check([:tag], target) end |
#check_it(name, target, match_window_data) ⇒ Object
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 |
# File 'lib/applitools/images/eyes.rb', line 81 def check_it(name, target, match_window_data) Applitools::ArgumentGuard.not_nil(name, 'name') region_provider = get_region_provider(target) match_window_data.tag = name update_default_settings(match_window_data) 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.
175 176 177 178 179 180 181 182 183 |
# File 'lib/applitools/images/eyes.rb', line 175 def check_region() = { tag: nil, ignore_mismatch: false }.merge Applitools::ArgumentGuard.not_nil [:region], 'options[:region] can\'t be nil!' image = target = Applitools::Images::Target.any(image).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
67 68 69 70 71 |
# File 'lib/applitools/images/eyes.rb', line 67 def check_single(name, target, = {}) open_and_close(name, target, ) do |n, t| check_it(n, t, Applitools::MatchSingleCheckData.new) end end |
#get_region_provider(target) ⇒ 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 |
# File 'lib/applitools/images/eyes.rb', line 108 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.
41 42 43 44 45 |
# File 'lib/applitools/images/eyes.rb', line 41 def open( = {}) Applitools::ArgumentGuard.hash , 'open(options)', [:app_name, :test_name] [:viewport_size] = Applitools::RectangleSize.from_any_argument [:viewport_size] open_base end |
#open_and_close(*args) ⇒ Object
73 74 75 76 77 78 79 |
# File 'lib/applitools/images/eyes.rb', line 73 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.
55 56 57 58 59 60 61 |
# File 'lib/applitools/images/eyes.rb', line 55 def test( = {}, &_block) open() yield close ensure abort_if_not_closed end |