Class: Applitools::Selenium::DomSnapshotScript::DomSnapshotScript

Inherits:
Object
  • Object
show all
Defined in:
lib/applitools/selenium/visual_grid/dom_snapshot_script.rb

Constant Summary collapse

DOM_EXTRACTION_TIMEOUT =
300

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(driver, urls_to_skip, dont_fetch_resources, serialize_resources = false, compress_resources = false) ⇒ DomSnapshotScript

Returns a new instance of DomSnapshotScript.



42
43
44
45
46
47
48
# 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

Instance Attribute Details

#compress_resourcesObject

Returns the value of attribute compress_resources.



40
41
42
# File 'lib/applitools/selenium/visual_grid/dom_snapshot_script.rb', line 40

def compress_resources
  @compress_resources
end

#dont_fetch_resourcesObject

Returns the value of attribute dont_fetch_resources.



40
41
42
# File 'lib/applitools/selenium/visual_grid/dom_snapshot_script.rb', line 40

def dont_fetch_resources
  @dont_fetch_resources
end

#driverObject

Returns the value of attribute driver.



40
41
42
# File 'lib/applitools/selenium/visual_grid/dom_snapshot_script.rb', line 40

def driver
  @driver
end

#serialize_resourcesObject

Returns the value of attribute serialize_resources.



40
41
42
# File 'lib/applitools/selenium/visual_grid/dom_snapshot_script.rb', line 40

def serialize_resources
  @serialize_resources
end

#urls_to_skipObject

Returns the value of attribute urls_to_skip.



40
41
42
# File 'lib/applitools/selenium/visual_grid/dom_snapshot_script.rb', line 40

def urls_to_skip
  @urls_to_skip
end

Instance Method Details

#process_page_scriptObject



50
51
52
53
# File 'lib/applitools/selenium/visual_grid/dom_snapshot_script.rb', line 50

def process_page_script
  ''
  # Applitools::Selenium::Scripts::PROCESS_PAGE_AND_POLL
end

#runObject



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# 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

#scriptObject



64
65
66
# File 'lib/applitools/selenium/visual_grid/dom_snapshot_script.rb', line 64

def script
  "#{process_page_script} return __processPageAndSerializePoll(#{script_options});"
end

#script_optionsObject



55
56
57
58
59
60
61
62
# 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