Class: Applitools::Selenium::Eyes
- Inherits:
-
EyesBase
- Object
- EyesBase
- Applitools::Selenium::Eyes
- Extended by:
- Forwardable
- Defined in:
- lib/applitools/selenium/eyes.rb
Overview
The main API gateway for the SDK
Constant Summary collapse
- DEFAULT_DEVICE_PIXEL_RATIO =
The pixel ratio will be used if detection of device pixel ratio is failed
1
- DEFAULT_WAIT_BEFORE_SCREENSHOTS =
Seconds
0.1
- USE_DEFAULT_MATCH_TIMEOUT =
-1
- DEFAULT_STITCHING_OVERLAP =
Pixels
50
- ENTIRE_ELEMENT_SCREENSHOT =
0
- FULLPAGE_SCREENSHOT =
1
- VIEWPORT_SCREENSHOT =
2
Instance Attribute Summary collapse
-
#base_agent_id ⇒ Object
Returns the value of attribute base_agent_id.
-
#debug_screenshot_provider ⇒ Object
Returns the value of attribute debug_screenshot_provider.
-
#debug_screenshots ⇒ Object
Returns the value of attribute debug_screenshots.
-
#disable_horizontal_scrolling ⇒ Object
Returns the value of attribute disable_horizontal_scrolling.
-
#disable_vertical_scrolling ⇒ Object
Returns the value of attribute disable_vertical_scrolling.
-
#driver ⇒ Object
readonly
Returns the value of attribute driver.
-
#enable_patterns ⇒ Object
Returns the value of attribute enable_patterns.
-
#explicit_entire_size ⇒ Object
Returns the value of attribute explicit_entire_size.
-
#force_full_page_screenshot ⇒ boolean
Forces a full page screenshot (by scrolling and stitching) if the browser only supports viewport screenshots.
-
#full_page_capture_algorithm_left_top_offset ⇒ Object
Returns the value of attribute full_page_capture_algorithm_left_top_offset.
-
#hide_scrollbars ⇒ boolean
Turns on/off hiding scrollbars before taking a screenshot.
-
#screenshot ⇒ Object
Returns the value of attribute screenshot.
-
#screenshot_type ⇒ Object
Returns the value of attribute screenshot_type.
-
#send_dom ⇒ Object
Returns the value of attribute send_dom.
-
#stitch_mode ⇒ boolean
May be set to :CSS or :SCROLL (:SCROLL is default).
-
#stitching_overlap ⇒ Object
Returns the value of attribute stitching_overlap.
-
#use_dom ⇒ Object
Returns the value of attribute use_dom.
-
#wait_before_screenshots ⇒ Float
Sets the time to wait just before taking a screenshot (e.g., to allow positioning to stabilize when performing a full page stitching).
Class Method Summary collapse
- .eyes_driver(driver, eyes = nil) ⇒ Object
- .obtain_screenshot_type(is_element, inside_a_frame, stitch_content, force_fullpage) ⇒ Object
- .position_provider(stitch_mode, driver, disable_horizontal = false, disable_vertical = false, explicit_entire_size = nil) ⇒ Object
-
.set_viewport_size(driver, viewport_size) ⇒ Object
Set the viewport size.
Instance Method Summary collapse
- #add_mouse_trigger(mouse_action, element) ⇒ Object
-
#add_mouse_trigger_by_region_and_location(mouse_action, control, cursor) ⇒ Object
control - Region cursor - Location.
- #add_text_trigger(control, text) ⇒ Object
-
#check(name, target) ⇒ Applitools::MatchResult
Takes a snapshot and matches it with the expected output.
-
#check_frame(options = {}) ⇒ Applitools::MatchResult
Validates the contents of an iframe and matches it with the expected output.
-
#check_region(element, how = nil, what = nil, options = {}) ⇒ Object
Takes a snapshot of the application under test and matches a region of a specific element with the expected region output.
-
#check_region_in_frame(options = {}) ⇒ Applitools::MatchResult
Validates the contents of a region in an iframe and matches it with the expected output.
-
#check_window(tag = nil, match_timeout = USE_DEFAULT_MATCH_TIMEOUT) ⇒ Object
Takes a snapshot of the application under test and matches it with the expected output.
- #dom_data ⇒ Object
-
#initialize(server_url = nil) ⇒ Eyes
constructor
Creates a new (possibly disabled) Eyes instance that interacts with the Eyes Server at the specified url.
-
#open(options = {}) ⇒ Applitools::Selenium::Driver
Starts a test.
-
#test(options = {}) {|driver| ... } ⇒ Object
Use this method to perform seamless testing with selenium through eyes driver.
Constructor Details
#initialize(server_url = nil) ⇒ Eyes
Creates a new (possibly disabled) Eyes instance that interacts with the Eyes Server at the specified url.
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 136 |
# File 'lib/applitools/selenium/eyes.rb', line 110 def initialize(server_url = nil) super self.base_agent_id = "eyes.selenium.ruby/#{Applitools::VERSION}".freeze self.check_frame_or_element = false self.region_to_check = nil self.force_full_page_screenshot = false self.dont_get_title = false self. = false self.device_pixel_ratio = UNKNOWN_DEVICE_PIXEL_RATIO self.stitch_mode = Applitools::STITCH_MODE[:scroll] self.wait_before_screenshots = DEFAULT_WAIT_BEFORE_SCREENSHOTS self.region_visibility_strategy = MoveToRegionVisibilityStrategy.new self.debug_screenshots = false self.debug_screenshot_provider = Applitools::DebugScreenshotProvider.new .tag_access { tag_for_debug } .debug_flag_access { debug_screenshots } self.disable_horizontal_scrolling = false self.disable_vertical_scrolling = false self.explicit_entire_size = nil self. = false self.stitching_overlap = DEFAULT_STITCHING_OVERLAP self.full_page_capture_algorithm_left_top_offset = Applitools::Location::TOP_LEFT self.send_dom = false self.use_dom = false self.enable_patterns = false self.prevent_dom_processing = false end |
Instance Attribute Details
#base_agent_id ⇒ Object
Returns the value of attribute base_agent_id.
98 99 100 |
# File 'lib/applitools/selenium/eyes.rb', line 98 def base_agent_id @base_agent_id end |
#debug_screenshot_provider ⇒ Object
Returns the value of attribute debug_screenshot_provider.
98 99 100 |
# File 'lib/applitools/selenium/eyes.rb', line 98 def debug_screenshot_provider @debug_screenshot_provider end |
#debug_screenshots ⇒ Object
Returns the value of attribute debug_screenshots.
98 99 100 |
# File 'lib/applitools/selenium/eyes.rb', line 98 def debug_screenshots @debug_screenshots end |
#disable_horizontal_scrolling ⇒ Object
Returns the value of attribute disable_horizontal_scrolling.
98 99 100 |
# File 'lib/applitools/selenium/eyes.rb', line 98 def disable_horizontal_scrolling @disable_horizontal_scrolling end |
#disable_vertical_scrolling ⇒ Object
Returns the value of attribute disable_vertical_scrolling.
98 99 100 |
# File 'lib/applitools/selenium/eyes.rb', line 98 def disable_vertical_scrolling @disable_vertical_scrolling end |
#driver ⇒ Object (readonly)
Returns the value of attribute driver.
102 103 104 |
# File 'lib/applitools/selenium/eyes.rb', line 102 def driver @driver end |
#enable_patterns ⇒ Object
Returns the value of attribute enable_patterns.
98 99 100 |
# File 'lib/applitools/selenium/eyes.rb', line 98 def enable_patterns @enable_patterns end |
#explicit_entire_size ⇒ Object
Returns the value of attribute explicit_entire_size.
98 99 100 |
# File 'lib/applitools/selenium/eyes.rb', line 98 def explicit_entire_size @explicit_entire_size end |
#force_full_page_screenshot ⇒ boolean
Forces a full page screenshot (by scrolling and stitching) if the browser only supports viewport screenshots.
98 99 100 101 |
# File 'lib/applitools/selenium/eyes.rb', line 98 attr_accessor :base_agent_id, :screenshot, :force_full_page_screenshot, :hide_scrollbars, :wait_before_screenshots, :debug_screenshots, :stitch_mode, :disable_horizontal_scrolling, :disable_vertical_scrolling, :explicit_entire_size, :debug_screenshot_provider, :stitching_overlap, :full_page_capture_algorithm_left_top_offset, :screenshot_type, :send_dom, :use_dom, :enable_patterns |
#full_page_capture_algorithm_left_top_offset ⇒ Object
Returns the value of attribute full_page_capture_algorithm_left_top_offset.
98 99 100 |
# File 'lib/applitools/selenium/eyes.rb', line 98 def full_page_capture_algorithm_left_top_offset @full_page_capture_algorithm_left_top_offset end |
#hide_scrollbars ⇒ boolean
Turns on/off hiding scrollbars before taking a screenshot
98 99 100 101 |
# File 'lib/applitools/selenium/eyes.rb', line 98 attr_accessor :base_agent_id, :screenshot, :force_full_page_screenshot, :hide_scrollbars, :wait_before_screenshots, :debug_screenshots, :stitch_mode, :disable_horizontal_scrolling, :disable_vertical_scrolling, :explicit_entire_size, :debug_screenshot_provider, :stitching_overlap, :full_page_capture_algorithm_left_top_offset, :screenshot_type, :send_dom, :use_dom, :enable_patterns |
#screenshot ⇒ Object
Returns the value of attribute screenshot.
98 99 100 |
# File 'lib/applitools/selenium/eyes.rb', line 98 def screenshot @screenshot end |
#screenshot_type ⇒ Object
Returns the value of attribute screenshot_type.
98 99 100 |
# File 'lib/applitools/selenium/eyes.rb', line 98 def screenshot_type @screenshot_type end |
#send_dom ⇒ Object
Returns the value of attribute send_dom.
98 99 100 |
# File 'lib/applitools/selenium/eyes.rb', line 98 def send_dom @send_dom end |
#stitch_mode ⇒ boolean
May be set to :CSS or :SCROLL (:SCROLL is default). When :CSS - SDK will use CSS transitions to perform scrolling, otherwise it will use Javascript window.scroll_to() function for scrolling purposes
98 99 100 101 |
# File 'lib/applitools/selenium/eyes.rb', line 98 attr_accessor :base_agent_id, :screenshot, :force_full_page_screenshot, :hide_scrollbars, :wait_before_screenshots, :debug_screenshots, :stitch_mode, :disable_horizontal_scrolling, :disable_vertical_scrolling, :explicit_entire_size, :debug_screenshot_provider, :stitching_overlap, :full_page_capture_algorithm_left_top_offset, :screenshot_type, :send_dom, :use_dom, :enable_patterns |
#stitching_overlap ⇒ Object
Returns the value of attribute stitching_overlap.
98 99 100 |
# File 'lib/applitools/selenium/eyes.rb', line 98 def stitching_overlap @stitching_overlap end |
#use_dom ⇒ Object
Returns the value of attribute use_dom.
98 99 100 |
# File 'lib/applitools/selenium/eyes.rb', line 98 def use_dom @use_dom end |
#wait_before_screenshots ⇒ Float
Sets the time to wait just before taking a screenshot (e.g., to allow positioning to stabilize when performing a full page stitching).
98 99 100 101 |
# File 'lib/applitools/selenium/eyes.rb', line 98 attr_accessor :base_agent_id, :screenshot, :force_full_page_screenshot, :hide_scrollbars, :wait_before_screenshots, :debug_screenshots, :stitch_mode, :disable_horizontal_scrolling, :disable_vertical_scrolling, :explicit_entire_size, :debug_screenshot_provider, :stitching_overlap, :full_page_capture_algorithm_left_top_offset, :screenshot_type, :send_dom, :use_dom, :enable_patterns |
Class Method Details
.eyes_driver(driver, eyes = nil) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/applitools/selenium/eyes.rb', line 28 def eyes_driver(driver, eyes = nil) if driver.respond_to? :driver_for_eyes driver.driver_for_eyes eyes else unless driver.is_a?(Applitools::Selenium::Driver) Applitools::EyesLogger.warn("Unrecognized driver type: (#{driver.class.name})!") is_mobile_device = driver.respond_to?(:capabilities) && driver.capabilities['platformName'] Applitools::Selenium::Driver.new(eyes, driver: driver, is_mobile_device: is_mobile_device) end raise Applitools::EyesError.new "Unknown driver #{driver}!" end end |
.obtain_screenshot_type(is_element, inside_a_frame, stitch_content, force_fullpage) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/applitools/selenium/eyes.rb', line 41 def obtain_screenshot_type(is_element, inside_a_frame, stitch_content, force_fullpage) if stitch_content || force_fullpage unless inside_a_frame return FULLPAGE_SCREENSHOT if force_fullpage && !stitch_content return FULLPAGE_SCREENSHOT if stitch_content && !is_element end return ENTIRE_ELEMENT_SCREENSHOT if inside_a_frame return ENTIRE_ELEMENT_SCREENSHOT if stitch_content else return VIEWPORT_SCREENSHOT unless stitch_content || force_fullpage end VIEWPORT_SCREENSHOT end |
.position_provider(stitch_mode, driver, disable_horizontal = false, disable_vertical = false, explicit_entire_size = nil) ⇒ Object
840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 |
# File 'lib/applitools/selenium/eyes.rb', line 840 def position_provider(stitch_mode, driver, disable_horizontal = false, disable_vertical = false, explicit_entire_size = nil) max_width = nil max_height = nil unless explicit_entire_size.nil? max_width = explicit_entire_size.width max_height = explicit_entire_size.height end case stitch_mode when :SCROLL Applitools::Selenium::ScrollPositionProvider.new(driver, disable_horizontal, disable_vertical, max_width, max_height) when :CSS Applitools::Selenium::CssTranslatePositionProvider.new(driver, disable_horizontal, disable_vertical, max_width, max_height) end end |
.set_viewport_size(driver, viewport_size) ⇒ Object
Set the viewport size.
59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/applitools/selenium/eyes.rb', line 59 def (driver, ) Applitools::ArgumentGuard.not_nil(driver, 'Driver') Applitools::ArgumentGuard.not_nil(, 'viewport_size') Applitools::ArgumentGuard.is_a?(, 'viewport_size', Applitools::RectangleSize) begin Applitools::Utils::EyesSeleniumUtils. eyes_driver(driver), rescue => e Applitools::EyesLogger.error e.class Applitools::EyesLogger.error e. raise Applitools::EyesError.new 'Failed to set viewport size!' end end |
Instance Method Details
#add_mouse_trigger(mouse_action, element) ⇒ Object
717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 |
# File 'lib/applitools/selenium/eyes.rb', line 717 def add_mouse_trigger(mouse_action, element) if disabled? logger.info "Ignoring #{mouse_action} (disabled)" return end if element.is_a? Hash return add_mouse_trigger_by_region_and_location(mouse_action, element[:region], element[:location]) if element.key?(:location) && element.key?(:region) raise Applitools::EyesIllegalArgument.new 'Element[] doesn\'t contain required keys!' end Applitools::ArgumentGuard.not_nil element, 'element' Applitools::ArgumentGuard.is_a? element, 'element', Applitools::Selenium::Element pl = element.location ds = element.size element_region = Applitools::Region.new(pl.x, pl.y, ds.width, ds.height) unless last_screenshot logger.info "Ignoring #{mouse_action} (no screenshot)" return end unless driver.frame_chain.same_frame_chain? last_screenshot.frame_chain logger.info "Ignoring #{mouse_action} (different_frame)" return end add_mouse_trigger_base(mouse_action, element_region, element_region.middle_offset) end |
#add_mouse_trigger_by_region_and_location(mouse_action, control, cursor) ⇒ Object
control - Region cursor - Location
752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 |
# File 'lib/applitools/selenium/eyes.rb', line 752 def add_mouse_trigger_by_region_and_location(mouse_action, control, cursor) unless last_screenshot logger.info "Ignoring #{mouse_action} (no screenshot)" return end Applitools::ArgumentGuard.is_a? control, 'control', Applitools::Region Applitools::ArgumentGuard.is_a? cursor, 'cursor', Applitools::Location if driver.frame_chain.same_frame_chain? last_screenshot.frame_chain logger.info "Ignoring #{mouse_action} (different_frame)" return end add_mouse_trigger_base(mouse_action, control, cursor) end |
#add_text_trigger(control, text) ⇒ Object
700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 |
# File 'lib/applitools/selenium/eyes.rb', line 700 def add_text_trigger(control, text) if disabled? logger.info "Ignoring #{text} (disabled)" return end Applitools::ArgumentGuard.not_nil control, 'control' return _add_text_trigger(control, text) if control.is_a? Applitools::Region pl = control.location ds = control.size element_region = Applitools::Region.new(pl.x, pl.y, ds.width, ds.height) return _add_text_trigger(element_region, text) if control.is_a? Applitools::Selenium::Element end |
#check(name, target) ⇒ Applitools::MatchResult
Takes a snapshot and matches it with the expected output.
250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 |
# File 'lib/applitools/selenium/eyes.rb', line 250 def check(name, target) logger.info "check(#{name}) is called" self.tag_for_debug = name Applitools::ArgumentGuard.is_a? target, 'target', Applitools::Selenium::Target target_to_check = target.finalize original_overflow = nil original_position_provider = position_provider original_force_full_page_screenshot = force_full_page_screenshot eyes_element = nil timeout = target_to_check.[:timeout] || USE_DEFAULT_MATCH_TIMEOUT self.eyes_screenshot_factory = lambda do |image| Applitools::Selenium::ViewportScreenshot.new( image, region_provider: region_to_check ) end # self.prevent_dom_processing = !((!target.options[:send_dom].nil? && target.options[:send_dom]) || # send_dom || stitch_mode == Applitools::STITCH_MODE[:css]) self.prevent_dom_processing = !((!target.[:send_dom].nil? && target.[:send_dom]) || send_dom) check_in_frame target_frames: target_to_check.frames do begin match_data = Applitools::MatchWindowData.new match_data.tag = name update_default_settings(match_data) eyes_element = target_to_check.region_to_check.call(driver) unless force_full_page_screenshot region_visibility_strategy.move_to_region original_position_provider, Applitools::Location.new(eyes_element.location.x.to_i, eyes_element.location.y.to_i) driver.find_element(:css, 'html').scroll_data_attribute = true end region_provider = Applitools::Selenium::RegionProvider.new(driver, region_for_element(eyes_element)) self.region_to_check = region_provider match_data.read_target(target_to_check, driver) match_data.use_dom = use_dom unless match_data.use_dom match_data.enable_patterns = enable_patterns unless match_data.enable_patterns is_element = eyes_element.is_a? Applitools::Selenium::Element inside_a_frame = !driver.frame_chain.empty? self.screenshot_type = self.class.obtain_screenshot_type( is_element, inside_a_frame, target_to_check.[:stitch_content], force_full_page_screenshot ) case screenshot_type when ENTIRE_ELEMENT_SCREENSHOT if eyes_element.is_a? Applitools::Selenium::Element original_overflow = eyes_element.overflow eyes_element.overflow = 'hidden' eyes_element.scroll_data_attribute = true eyes_element.overflow_data_attribute = original_overflow self.position_provider = Applitools::Selenium::CssTranslateElementPositionProvider.new( driver, eyes_element ) end end check_window_base( region_provider, timeout, match_data ) ensure eyes_element.overflow = original_overflow unless original_overflow.nil? self.check_frame_or_element = false self.force_full_page_screenshot = original_force_full_page_screenshot self.position_provider = original_position_provider self.region_to_check = nil self.full_page_capture_algorithm_left_top_offset = Applitools::Location::TOP_LEFT region_visibility_strategy.return_to_original_position original_position_provider end # rubocop:enable BlockLength end self.prevent_dom_processing = false end |
#check_frame(options = {}) ⇒ Applitools::MatchResult
Validates the contents of an iframe and matches it with the expected output.
439 440 441 442 443 444 |
# File 'lib/applitools/selenium/eyes.rb', line 439 def check_frame( = {}) = { timeout: USE_DEFAULT_MATCH_TIMEOUT, tag: nil }.merge!() frame = [:frame] || [:frame_element] || [:name_or_id] target = Applitools::Selenium::Target.frame(frame).timeout([:timeout]).fully check([:tag], target) end |
#check_region(element, how = nil, what = nil, options = {}) ⇒ Object
Takes a snapshot of the application under test and matches a region of a specific element with the expected region output.
422 423 424 425 426 427 |
# File 'lib/applitools/selenium/eyes.rb', line 422 def check_region(*args) = { timeout: USE_DEFAULT_MATCH_TIMEOUT, tag: nil }.merge! Applitools::Utils.(args) target = Applitools::Selenium::Target.new.region(*args).timeout([:match_timeout]) target.fully if [:stitch_content] check([:tag], target) end |
#check_region_in_frame(options = {}) ⇒ Applitools::MatchResult
Validates the contents of a region in an iframe and matches it with the expected output.
457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 |
# File 'lib/applitools/selenium/eyes.rb', line 457 def check_region_in_frame( = {}) = { timeout: USE_DEFAULT_MATCH_TIMEOUT, tag: nil, stitch_content: false }.merge!() Applitools::ArgumentGuard.not_nil [:by], 'options[:by]' Applitools::ArgumentGuard.is_a? [:by], 'options[:by]', Array how_what = .delete(:by) frame = [:frame] || [:frame_element] || [:name_or_id] target = Applitools::Selenium::Target.new.timeout([:timeout]) target.frame(frame) if frame target.fully if [:stitch_content] target.region(*how_what) check([:tag], target) end |
#check_window(tag = nil, match_timeout = USE_DEFAULT_MATCH_TIMEOUT) ⇒ Object
Takes a snapshot of the application under test and matches it with the expected output.
222 223 224 225 226 227 228 |
# File 'lib/applitools/selenium/eyes.rb', line 222 def check_window(tag = nil, match_timeout = USE_DEFAULT_MATCH_TIMEOUT) target = Applitools::Selenium::Target.window.tap do |t| t.timeout(match_timeout) t.fully if force_full_page_screenshot end check(tag, target) end |
#dom_data ⇒ Object
506 507 508 509 510 511 512 513 514 |
# File 'lib/applitools/selenium/eyes.rb', line 506 def dom_data return {} if prevent_dom_processing begin Applitools::Selenium::DomCapture.get_window_dom(driver, logger) rescue Applitools::EyesError => e logger.error "DOM capture failed! #{e.}" return {} end end |
#open(options = {}) ⇒ Applitools::Selenium::Driver
Starts a test
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 |
# File 'lib/applitools/selenium/eyes.rb', line 151 def open( = {}) original_driver = .delete(:driver) [:viewport_size] = Applitools::RectangleSize.from_any_argument [:viewport_size] if [:viewport_size] Applitools::ArgumentGuard.not_nil original_driver, 'options[:driver]' Applitools::ArgumentGuard.hash , 'open(options)', [:app_name, :test_name] if disabled? logger.info('Ignored') return driver end @driver = self.class.eyes_driver(original_driver, self) perform_driver_specific_settings(original_driver) self.device_pixel_ratio = UNKNOWN_DEVICE_PIXEL_RATIO self.position_provider = self.class.position_provider( stitch_mode, driver, disable_horizontal_scrolling, disable_vertical_scrolling, explicit_entire_size ) self.eyes_screenshot_factory = lambda do |image| Applitools::Selenium::ViewportScreenshot.new( image, driver: @driver, force_offset: position_provider.force_offset ) end open_base() do self. = nil if ensure_running_session end @driver end |
#test(options = {}) {|driver| ... } ⇒ Object
Use this method to perform seamless testing with selenium through eyes driver. It yields a block and passes to it an Applitools::Selenium::Driver instance, which wraps standard driver. Using Selenium methods inside the ‘test’ block will send the messages to Selenium after creating the Eyes triggers for them. Options are similar to #open
484 485 486 487 488 489 490 |
# File 'lib/applitools/selenium/eyes.rb', line 484 def test( = {}, &_block) open() yield(driver) close ensure abort_if_not_closed end |