class Applitools::Selenium::DomSnapshotScript::DomSnapshotScript

Constants

DOM_EXTRACTION_TIMEOUT

Attributes

compress_resources[RW]
dont_fetch_resources[RW]
driver[RW]
serialize_resources[RW]
urls_to_skip[RW]

Public Class Methods

new(driver, urls_to_skip, dont_fetch_resources, serialize_resources = false, compress_resources = false) click to toggle source
# File lib/applitools/selenium/visual_grid/dom_snapshot_script.rb, line 42
def initialize(driver, urls_to_skip, dont_fetch_resources, serialize_resources = false, compress_resources = false)
  self.driver = driver
  self.urls_to_skip = urls_to_skip
  self.dont_fetch_resources = dont_fetch_resources
  self.compress_resources = compress_resources
  self.serialize_resources = serialize_resources
end

Public Instance Methods

process_page_script() click to toggle source
# File lib/applitools/selenium/visual_grid/dom_snapshot_script.rb, line 50
def process_page_script
  ''
  # Applitools::Selenium::Scripts::PROCESS_PAGE_AND_POLL
end
run() click to toggle source
# File lib/applitools/selenium/visual_grid/dom_snapshot_script.rb, line 68
def run
  Applitools::EyesLogger.info 'Trying to get DOM snapshot...'

  script_thread = Thread.new do
    result = {}
    while result['status'] != 'SUCCESS'
      Thread.current[:script_result] = driver.execute_script(script)
      begin
        Thread.current[:result] = result = Oj.load(Thread.current[:script_result])
        sleep 0.5
      rescue Oj::ParseError => e
        Applitools::EyesLogger.warn e.message
      end
    end
  end
  sleep 0.5
  script_thread_result = script_thread.join(DOM_EXTRACTION_TIMEOUT)
  raise ::Applitools::EyesError.new 'Timeout error while getting dom snapshot!' unless script_thread_result
  Applitools::EyesLogger.info 'Done!'

  script_thread_result[:result]['value']
end
script() click to toggle source
# File lib/applitools/selenium/visual_grid/dom_snapshot_script.rb, line 64
def script
  "#{process_page_script} return __processPageAndSerializePoll(#{script_options});"
end
script_options() click to toggle source
# File lib/applitools/selenium/visual_grid/dom_snapshot_script.rb, line 55
def script_options
  options = []
  options.push("dontFetchResources: #{dont_fetch_resources}")
  options.push("skipResources: [#{urls_to_skip}]")
  options.push("compressResources: #{compress_resources}")
  options.push("serializeResources: #{serialize_resources}")
  "{#{options.join(', ')}}"
end