class Applitools::Selenium::RegionProvider

Constants

FF_OLD_VERSION

Attributes

driver[RW]
eye_region[RW]
scroll_position_provider[RW]

Public Class Methods

new(driver, eye_region) click to toggle source
# File lib/applitools/selenium/region_provider.rb, line 10
def initialize(driver, eye_region)
  self.driver = driver
  self.eye_region = eye_region
  self.scroll_position_provider = Applitools::Selenium::ScrollPositionProvider.new driver
end

Public Instance Methods

calculate_frame_window() click to toggle source
# File lib/applitools/selenium/region_provider.rb, line 46
def calculate_frame_window
  return Applitools::Region::EMPTY unless inside_a_frame?
  frame_window_calculator.frame_window(driver.frame_chain)
end
coordinate_type() click to toggle source
# File lib/applitools/selenium/region_provider.rb, line 42
def coordinate_type
  nil
end
region(include_borders = true) click to toggle source
# File lib/applitools/selenium/region_provider.rb, line 16
def region(include_borders = true)
  region = if include_borders
             location = eye_region.location.offset_negative(
               Applitools::Location.new(eye_region.padding_left, eye_region.padding_top)
             )
             size = eye_region.size.tap do |s|
               s.width += eye_region.padding_left + eye_region.padding_right
               s.height += eye_region.padding_top + eye_region.padding_bottom
             end
             Applitools::Region.from_location_size(location, size)
           else
             Applitools::Region.from_location_size(eye_region.location, eye_region.size)
           end
  if inside_a_frame?
    frame_window = calculate_frame_window
    return frame_window if eye_region.is_a?(Applitools::Region) && eye_region.empty?
    region.location = region.location.offset(frame_window.location)
    region.intersect(frame_window) unless frame_window.empty?
    # exception if empty
  else
    region.location = region.location.offset_negative scroll_position_provider.current_position
  end
  return eye_region if eye_region.is_a?(Applitools::Region) && eye_region.empty?
  region
end

Private Instance Methods

frame_window_calculator() click to toggle source
# File lib/applitools/selenium/region_provider.rb, line 57
def frame_window_calculator
  return FirefoxFrameWindowCalculator if
      driver.browser.running_browser_name == :firefox &&
          (Gem::Version.new(driver.capabilities.version) <=> Gem::Version.new(FF_OLD_VERSION)) > 0
  FrameWindowCalculator
end
inside_a_frame?() click to toggle source
# File lib/applitools/selenium/region_provider.rb, line 53
def inside_a_frame?
  !driver.frame_chain.empty?
end