class Applitools::Selenium::RunningTest

Attributes

browser_info[RW]
close_queue[RW]
driver[RW]
eyes[RW]
on_results[RW]
open_queue[RW]
pending_exceptions[RW]
render_queue[RW]
task_lock[RW]
task_queue[RW]
test_result[RW]
test_uuid[RW]
watch_close[RW]
watch_open[RW]
watch_render[RW]
watch_task[RW]

Public Class Methods

new(eyes, browser_info, driver) click to toggle source
Calls superclass method
# File lib/applitools/selenium/visual_grid/running_test.rb, line 138
def initialize(eyes, browser_info, driver)
  Applitools::ArgumentGuard.is_a? eyes, 'eyes', Applitools::Selenium::EyesConnector

  self.eyes = eyes
  self.browser_info = browser_info
  self.driver = driver

  self.open_queue = []
  self.task_queue = []
  self.render_queue = []
  self.close_queue = []

  self.watch_open = {}
  self.watch_task = {}
  self.watch_render = {}
  self.watch_close = {}

  self.task_lock = nil

  self.pending_exceptions = []
  super()
  init
end

Public Instance Methods

abort() click to toggle source
# File lib/applitools/selenium/visual_grid/running_test.rb, line 166
def abort
  return unless close_queue.empty?
  self.test_result = nil
  close_task = Applitools::Selenium::VGTask.new("abort #{browser_info}") do
    eyes.abort
  end
  close_task.on_task_error do |e|
    pending_exceptions << e
  end
  close_task.on_task_completed do
    watch_close[close_task] = true
    becomes_completed if all_tasks_completed?(watch_close)
  end
  close_queue << close_task
  watch_close[close_task] = false
end
all_tasks_completed?(watch) click to toggle source
# File lib/applitools/selenium/visual_grid/running_test.rb, line 263
def all_tasks_completed?(watch)
  return true if state_name == :completed
  uniq_values = watch.values.uniq
  uniq_values.count == 1 && uniq_values.first == true
end
check(tag, target, render_task, title) click to toggle source
# File lib/applitools/selenium/visual_grid/running_test.rb, line 200
def check(tag, target, render_task, title)
  eyes.title = title
  result_index = render_task.add_running_test(self)

  check_task = VGTask.new("perform check #{tag} #{target}") do
    eyes.check(tag, target, render_task.uuid)
  end

  check_task.on_task_completed do
    watch_task[check_task] = true
    self.task_lock = nil if task_lock.uuid == check_task.uuid
    becomes_tested if all_tasks_completed?(watch_task)
  end

  task_queue.insert(0, check_task)
  watch_task[check_task] = false

  render_task.on_task_succeeded do |r|
    if r[result_index] && r[result_index]['status'] == 'rendered'
      eyes.render_status_for_task(render_task.uuid, r[result_index])
      watch_render[render_task] = true
      becomes_rendered if all_tasks_completed?(watch_render)
    elsif r[result_index] && r[result_index]['status'] == 'error'
      watch_render[render_task] = true

      task_queue.clear
      watch_task.clear

      close_queue.clear
      watch_close.clear

      check_task = VGTask.new("perform check #{tag} #{target}") do
        logger.error('Running empty test due to render error...')
        eyes.ensure_running_session
      end

      check_task.on_task_completed do
        watch_task[check_task] = true
        self.task_lock = nil if task_lock.uuid == check_task.uuid
        becomes_tested if all_tasks_completed?(watch_task)
      end

      eyes.render_status_for_task(
        render_task.uuid,
        r[result_index].merge('deviceSize' => browser_info.viewport_size)
      )

      eyes.current_uuid = render_task.uuid
      task_queue.insert(0, check_task)
      watch_task[check_task] = false
      abort
      becomes_rendered if all_tasks_completed?(watch_render)
    else
      logger.error "Wrong render status! Render returned status #{r[result_index]['status']}"
      becomes_completed
    end
  end
  render_task.on_task_error do
    becomes_completed
  end
  watch_render[render_task] = false
end
close() click to toggle source
# File lib/applitools/selenium/visual_grid/running_test.rb, line 16
def close
  becomes_completed
end
init() click to toggle source
# File lib/applitools/selenium/visual_grid/running_test.rb, line 183
def init
  open_task = Applitools::Selenium::VGTask.new("open #{browser_info}") { eyes.open(driver, browser_info) }

  open_task.on_task_succeeded do
    watch_open[open_task] = true
    becomes_opened if all_tasks_completed?(watch_open)
  end

  open_task.on_task_error do |e|
    pending_exceptions << e
    becomes_completed
  end

  open_queue << open_task
  watch_open[open_task] = false
end
on_results_received(&block) click to toggle source
# File lib/applitools/selenium/visual_grid/running_test.rb, line 162
def on_results_received(&block)
  self.on_results = block if block_given?
end
queue() click to toggle source
# File lib/applitools/selenium/visual_grid/running_test.rb, line 24
def queue
  Applitools::Selenium::VisualGridRunner::EMPTY_QUEUE
end
score() click to toggle source
# File lib/applitools/selenium/visual_grid/running_test.rb, line 20
def score
  0
end