class Applitools::Selenium::ScrollPositionProvider

@!visibility private

Attributes

disable_horizontal[RW]
disable_vertical[RW]
executor[RW]
max_height[RW]
max_width[RW]

Public Class Methods

new(executor, disable_horizontal = false, disable_vertical = false, max_width = nil, max_height = nil) click to toggle source

Creates a new Applitools::Selenium::ScrollPositionProvider instance.

@param [Applitools::Selenium::Driver] executor The instance that of the driver. @param [Boolean] disable_horizontal Whether to disable horizontal movement or not. @param [Boolean] disable_vertical Whether to disable vertical movement or not.

# File lib/applitools/selenium/scroll_position_provider.rb, line 15
def initialize(executor, disable_horizontal = false, disable_vertical = false, max_width = nil, max_height = nil)
  self.executor = executor
  self.disable_horizontal = disable_horizontal
  self.disable_vertical = disable_vertical
  self.max_width = max_width
  self.max_height = max_height
end

Public Instance Methods

current_position() click to toggle source

The scroll position of the current frame.

@return [Applitools::Location] The current position of the ScrollPositionProvider.

# File lib/applitools/selenium/scroll_position_provider.rb, line 26
def current_position
  logger.info 'current_position()'
  result = Applitools::Utils::EyesSeleniumUtils.current_scroll_position(executor)
  logger.info "Current position: #{result}"
  result
rescue Applitools::EyesDriverOperationException
  raise 'Failed to extract current scroll position!'
end
entire_size(image_width, image_height) click to toggle source

Returns the entire size of the viewport.

@return [Applitools::RectangleSize] The viewport size.

# File lib/applitools/selenium/scroll_position_provider.rb, line 54
def entire_size(image_width, image_height)
  viewport_size = Applitools::Utils::EyesSeleniumUtils.extract_viewport_size(executor)
  result = Applitools::Utils::EyesSeleniumUtils.entire_page_size(executor)
  logger.info "Entire size: #{result}"

  result.width = max_width unless max_width.nil?
  result.height = max_height unless max_height.nil?

  result.width = [viewport_size.width, result.width].min if disable_horizontal
  result.height = [viewport_size.height, result.height].min if disable_vertical
  logger.info "Actual size to scroll: #{result}"
  return result unless executor.frame_chain.empty?
  original_scroll_position = current_position
  scroll_to_bottom_right
  bottom_right_position = current_position
  restore_state(original_scroll_position)
  Applitools::RectangleSize.new(bottom_right_position.x + image_width, bottom_right_position.y + image_height)
end
force_offset() click to toggle source
# File lib/applitools/selenium/scroll_position_provider.rb, line 77
def force_offset
  Applitools::Location.new(0, 0)
end
position=(value) click to toggle source
# File lib/applitools/selenium/scroll_position_provider.rb, line 43
def position=(value)
  logger.info "Scrolling to #{value}"
  Applitools::Utils::EyesSeleniumUtils.scroll_to(executor, value)
  logger.info 'Done scrolling!'
end
Also aliased as: scroll_to
restore_state(value) click to toggle source
# File lib/applitools/selenium/scroll_position_provider.rb, line 39
def restore_state(value)
  self.position = value
end
scroll_to(value)
Alias for: position=
scroll_to_bottom_right() click to toggle source
# File lib/applitools/selenium/scroll_position_provider.rb, line 73
def scroll_to_bottom_right
  Applitools::Utils::EyesSeleniumUtils.scroll_to_bottom_right(executor)
end
state() click to toggle source
# File lib/applitools/selenium/scroll_position_provider.rb, line 35
def state
  current_position
end