class Applitools::ViewportSize

Constants

DOCUMENT_CLEAR_SCROLL_BARS_JAVASCRIPT
DOCUMENT_RESET_SCROLL_BARS_JAVASCRIPT
DOCUMENT_RETURN_JAVASCRIPT
GET_VIEWPORT_HEIGHT_JAVASCRIPT_FOR_BAD_BROWSERS
GET_VIEWPORT_HEIGHT_JAVASCRIPT_FOR_NORMAL_BROWSER
GET_VIEWPORT_WIDTH_JAVASCRIPT_FOR_BAD_BROWSERS
GET_VIEWPORT_WIDTH_JAVASCRIPT_FOR_NORMAL_BROWSER

Attributes

dimension[RW]
driver[R]

Public Class Methods

new(driver, dimension=nil) click to toggle source
# File lib/eyes_selenium_ruby/eyes/viewport_size.rb, line 25
def initialize(driver, dimension=nil)
  @driver = driver
  @dimension = dimension
end

Public Instance Methods

browser_size() click to toggle source
# File lib/eyes_selenium_ruby/eyes/viewport_size.rb, line 93
def browser_size
  driver.manage.window.size
end
browser_size=(other) click to toggle source
# File lib/eyes_selenium_ruby/eyes/viewport_size.rb, line 97
def browser_size=(other)
  self.driver.manage.window.size = other
end
extract_viewport_from_browser() click to toggle source
# File lib/eyes_selenium_ruby/eyes/viewport_size.rb, line 54
def extract_viewport_from_browser
  width  = extract_viewport_width 
  height = extract_viewport_height
  Applitools::Dimension.new(width,height)
rescue => e
  EyesLogger.info "getViewportSize(): only window size is available (#{e.message})"
  width, height = *browser_size.values
  Applitools::Dimension.new(width,height)
end
Also aliased as: viewport_size
extract_viewport_from_browser!() click to toggle source
# File lib/eyes_selenium_ruby/eyes/viewport_size.rb, line 50
def extract_viewport_from_browser!
  self.dimension = extract_viewport_from_browser
end
extract_viewport_height() click to toggle source
# File lib/eyes_selenium_ruby/eyes/viewport_size.rb, line 40
def extract_viewport_height
   begin
     return driver.execute_script(GET_VIEWPORT_HEIGHT_JAVASCRIPT_FOR_NORMAL_BROWSER)
   rescue  => e 
     EyesLogger.info "getViewportSize(): Browser does not support innerHeight (#{e.message})"
   end

  driver.execute_script(GET_VIEWPORT_WIDTH_JAVASCRIPT_FOR_BAD_BROWSERS)
end
extract_viewport_width() click to toggle source
# File lib/eyes_selenium_ruby/eyes/viewport_size.rb, line 30
def extract_viewport_width
   begin
     return driver.execute_script(GET_VIEWPORT_WIDTH_JAVASCRIPT_FOR_NORMAL_BROWSER)
   rescue => e 
     EyesLogger.info "getViewportSize(): Browser does not support innerWidth (#{e.message})"
   end

  driver.execute_script(GET_VIEWPORT_WIDTH_JAVASCRIPT_FOR_BAD_BROWSERS)
end
set() click to toggle source
# File lib/eyes_selenium_ruby/eyes/viewport_size.rb, line 65
def set
  if dimension.is_a?(Hash) && dimension.has_key?(:width) && dimension.has_key?(:height)
    # If dimension is hash of width/height, we convert it to a struct with width/height properties.
    self.dimension = Struct.new(:width, :height).new(dimension[:width], dimension[:height])
  elsif !dimension.respond_to?(:width) || !dimension.respond_to?(:height)
    raise ArgumentError, "expected #{dimension.inspect}:#{dimension.class}" +
                         " to respond to #width and #height, or be a hash with these keys"
  end
  self.browser_size = dimension
  verify_size(:browser_size)
  cur_viewport_size = extract_viewport_from_browser
  self.browser_size = Applitools::Dimension.new(
                        (2 * browser_size.width) - cur_viewport_size.width,
                        (2 * browser_size.height) - cur_viewport_size.height
                      )
  verify_size(:viewport_size)
end
to_hash() click to toggle source
# File lib/eyes_selenium_ruby/eyes/viewport_size.rb, line 101
def to_hash
  Hash[dimension.each_pair.to_a]
end
verify_size(to_verify, sleep_time=1, retries=3) click to toggle source
# File lib/eyes_selenium_ruby/eyes/viewport_size.rb, line 83
def verify_size(to_verify, sleep_time=1, retries=3)
  retries.times do
    sleep(sleep_time) 
    cur_size = send(to_verify)
    return if cur_size.values == dimension.values
  end
  EyesLogger.info(err_msg = "Failed setting #{to_verify} to #{dimension.values}")
  raise Applitools::TestFailedError.new(err_msg)
end
viewport_size()