Class: Applitools::Selenium::SeleniumEyes
- Inherits:
-
EyesBase
- Object
- EyesBase
- Applitools::Selenium::SeleniumEyes
- Extended by:
- Forwardable
- Defined in:
- lib/applitools/selenium/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.
-
#config ⇒ Object
Returns the value of attribute config.
-
#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.
- #configure {|config| ... } ⇒ Object
- #dom_data ⇒ Object
- #ensure_config ⇒ Object
-
#initialize(server_url = nil) ⇒ SeleniumEyes
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) ⇒ SeleniumEyes
Creates a new (possibly disabled) Eyes instance that interacts with the Eyes Server at the specified url.
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 137 138 139 |
# File 'lib/applitools/selenium/selenium_eyes.rb', line 112 def initialize(server_url = nil) ensure_config 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/selenium_eyes.rb', line 98 def base_agent_id @base_agent_id end |
#config ⇒ Object
Returns the value of attribute config.
98 99 100 |
# File 'lib/applitools/selenium/selenium_eyes.rb', line 98 def config @config end |
#debug_screenshot_provider ⇒ Object
Returns the value of attribute debug_screenshot_provider.
98 99 100 |
# File 'lib/applitools/selenium/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/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/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/selenium_eyes.rb', line 98 def disable_vertical_scrolling @disable_vertical_scrolling end |
#driver ⇒ Object (readonly)
Returns the value of attribute driver.
103 104 105 |
# File 'lib/applitools/selenium/selenium_eyes.rb', line 103 def driver @driver end |
#enable_patterns ⇒ Object
Returns the value of attribute enable_patterns.
98 99 100 |
# File 'lib/applitools/selenium/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/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 102 |
# File 'lib/applitools/selenium/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, :config |
#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/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 102 |
# File 'lib/applitools/selenium/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, :config |
#screenshot ⇒ Object
Returns the value of attribute screenshot.
98 99 100 |
# File 'lib/applitools/selenium/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/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/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 102 |
# File 'lib/applitools/selenium/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, :config |
#stitching_overlap ⇒ Object
Returns the value of attribute stitching_overlap.
98 99 100 |
# File 'lib/applitools/selenium/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/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 102 |
# File 'lib/applitools/selenium/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, :config |
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/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/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
853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 |
# File 'lib/applitools/selenium/selenium_eyes.rb', line 853 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/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
730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 |
# File 'lib/applitools/selenium/selenium_eyes.rb', line 730 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
765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 |
# File 'lib/applitools/selenium/selenium_eyes.rb', line 765 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
713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 |
# File 'lib/applitools/selenium/selenium_eyes.rb', line 713 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.
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 336 337 338 339 340 341 342 343 344 345 346 347 348 |
# File 'lib/applitools/selenium/selenium_eyes.rb', line 263 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.
452 453 454 455 456 457 |
# File 'lib/applitools/selenium/selenium_eyes.rb', line 452 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.
435 436 437 438 439 440 |
# File 'lib/applitools/selenium/selenium_eyes.rb', line 435 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.
470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 |
# File 'lib/applitools/selenium/selenium_eyes.rb', line 470 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.
235 236 237 238 239 240 241 |
# File 'lib/applitools/selenium/selenium_eyes.rb', line 235 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 |
#configure {|config| ... } ⇒ Object
146 147 148 149 |
# File 'lib/applitools/selenium/selenium_eyes.rb', line 146 def configure return unless block_given? yield(config) end |
#dom_data ⇒ Object
519 520 521 522 523 524 525 526 527 |
# File 'lib/applitools/selenium/selenium_eyes.rb', line 519 def dom_data return {} if prevent_dom_processing begin Applitools::Selenium::DomCapture.full_window_dom(driver, server_connector, logger, position_provider) rescue Applitools::EyesError => e logger.error "DOM capture failed! #{e.}" return {} end end |
#ensure_config ⇒ Object
142 143 144 |
# File 'lib/applitools/selenium/selenium_eyes.rb', line 142 def ensure_config self.config = Applitools::Selenium::Configuration.new end |
#open(options = {}) ⇒ Applitools::Selenium::Driver
Starts a test
164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 |
# File 'lib/applitools/selenium/selenium_eyes.rb', line 164 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 options, '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
497 498 499 500 501 502 503 |
# File 'lib/applitools/selenium/selenium_eyes.rb', line 497 def test( = {}, &_block) open() yield(driver) close ensure abort_if_not_closed end |