class Applitools::Selenium::CssTranslatePositionProvider

Attributes

disable_horizontal[RW]
disable_vertical[RW]
executor[RW]
last_state_position[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

Initialize a class instance.

@param [Applitools::Selenium::Driver] executor The driver instance. @param [Boolean] disable_horizontal Whether to disable horizontal movement or not. @param [Boolean] disable_vertical Whether to disable vertical movement or not. @param [Integer] max_width The max width. @param [Integer] max_height The max height.

# File lib/applitools/selenium/css_translate_position_provider.rb, line 21
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
# File lib/applitools/selenium/css_translate_position_provider.rb, line 29
def current_position
  last_state_position
end
entire_size(_image_width, _image_height) click to toggle source

Gets the entire size of the frame.

@return [Applitools::RectangleSize] The entire size of the frame.

# File lib/applitools/selenium/css_translate_position_provider.rb, line 74
def entire_size(_image_width, _image_height)
  viewport_size = Applitools::Utils::EyesSeleniumUtils.extract_viewport_size(executor)
  result = Applitools::Utils::EyesSeleniumUtils.current_frame_content_entire_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}"
  result

  # return result unless executor.frame_chain.empty?

  # spp = Applitools::Selenium::ScrollPositionProvider.new(executor)
  # original_scroll_position = spp.current_position
  # spp.scroll_to_bottom_right
  # bottom_right_position = spp.current_position
  # spp.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/css_translate_position_provider.rb, line 64
def force_offset
  Applitools::Location.from_any_attribute last_state_position
  # Applitools::Location::TOP_LEFT
end
position=(value) click to toggle source
# File lib/applitools/selenium/css_translate_position_provider.rb, line 54
def position=(value)
  Applitools::ArgumentGuard.not_nil(value, 'value')
  logger.info "Setting position to: #{value}"
  Applitools::Utils::EyesSeleniumUtils.translate_to(executor, value)
  logger.info 'Done!'
  self.last_state_position = value
end
Also aliased as: scroll_to, scroll_to
restore_state(value) click to toggle source

Restore last state position.

@param [Applitools::Location] value The location.

# File lib/applitools/selenium/css_translate_position_provider.rb, line 40
def restore_state(value)
  Applitools::Utils::EyesSeleniumUtils.set_current_transforms(executor, 'translate(10px, 0px)')

  transforms = value.values.compact.map(&:to_s).select { |el| !el.empty? }
  Applitools::Utils::EyesSeleniumUtils.set_transforms(executor, value)
  if transforms.empty?
    self.last_state_position = Applitools::Location::TOP_LEFT
  else
    positions = transforms.map { |s| get_position_from_transform(s) }
    positions.each { |p| raise Applitools::EyesError.new 'Got different css positions!' unless p == positions[0] }
    self.last_state_position = positions[0]
  end
end
scroll_to(value)
Alias for: position=
state() click to toggle source
# File lib/applitools/selenium/css_translate_position_provider.rb, line 33
def state
  Applitools::Utils::EyesSeleniumUtils.current_transforms(executor)
end