class Applitools::Selenium::VisualGridRunner

Constants

EMPTY_QUEUE

rubocop:disable Style/MutableConstant

Attributes

all_eyes[RW]
put_cache[RW]
queue[RW]
render_queue[RW]
rendering_info[RW]
resource_cache[RW]

Public Class Methods

new(concurrent_open_sessions = 10) click to toggle source
Calls superclass method
# File lib/applitools/selenium/visual_grid/visual_grid_runner.rb, line 12
def initialize(concurrent_open_sessions = 10)
  super()
  self.all_eyes = []
  self.render_queue = []
  @thread_pool = Applitools::Selenium::VGThreadPool.new(concurrent_open_sessions)
  self.resource_cache = Applitools::Selenium::ResourceCache.new
  self.put_cache = Applitools::Selenium::ResourceCache.new
  init
end

Public Instance Methods

enqueue_render_task(render_task) click to toggle source
# File lib/applitools/selenium/visual_grid/visual_grid_runner.rb, line 33
def enqueue_render_task(render_task)
  render_queue.push render_task if render_task.is_a? Applitools::Selenium::RenderTask
end
get_all_test_results(throw_exception = false) click to toggle source
Calls superclass method
# File lib/applitools/selenium/visual_grid/visual_grid_runner.rb, line 46
def get_all_test_results(throw_exception = false)
  all_tasks_completed = proc do
    all_running_tests.count == 0 ||
      (states = all_running_tests.map(&:state_name).uniq).count == 1 && states.first == :completed
  end

  sleep 0.5 until all_tasks_completed.call

  failed_results = all_test_results.select { |r| !r.as_expected? }
  failed_results.each do |r|
    exception = Applitools::NewTestError.new new_test_error_message(r), r if r.new?
    exception = Applitools::DiffsFoundError.new diffs_found_error_message(r), r if r.unresolved? && !r.new?
    exception = Applitools::TestFailedError.new test_failed_error_message(r), r if r.failed?
    aggregate_exceptions(r, exception)
  end
  super
end
init() click to toggle source
# File lib/applitools/selenium/visual_grid/visual_grid_runner.rb, line 22
def init
  @thread_pool.on_next_task_needed do
    (task = get_task_queue.pop).is_a?(Applitools::Selenium::VGTask) ? task : nil
  end
  @thread_pool.start
end
open(eyes) click to toggle source
# File lib/applitools/selenium/visual_grid/visual_grid_runner.rb, line 29
def open(eyes)
  all_eyes << eyes
end
stop() click to toggle source
# File lib/applitools/selenium/visual_grid/visual_grid_runner.rb, line 37
def stop
  sleep 0.5 while all_running_tests.map(&:score).reduce(0, :+) > 0
  @thread_pool.stop
end
universal_eyes_manager_config() click to toggle source
# File lib/applitools/selenium/visual_grid/visual_grid_runner.rb, line 64
def universal_eyes_manager_config
  Applitools::UniversalEyesManagerConfig.vg(@thread_pool.concurrency)
end

Private Instance Methods

all_running_tests() click to toggle source
# File lib/applitools/selenium/visual_grid/visual_grid_runner.rb, line 70
def all_running_tests
  all_eyes.collect(&:test_list).flatten
end
all_running_tests_by_score() click to toggle source
# File lib/applitools/selenium/visual_grid/visual_grid_runner.rb, line 74
def all_running_tests_by_score
  all_running_tests.sort { |x, y| y.score <=> x.score }
end
diffs_found_error_message(result) click to toggle source
# File lib/applitools/selenium/visual_grid/visual_grid_runner.rb, line 96
def diffs_found_error_message(result)
  original_results = result.original_results
  "Test '#{original_results['name']}' " \
      "of '#{original_results['appname']}' " \
      "detected differences! See details at #{original_results['appUrls']['session']}"
end
get_task_queue() click to toggle source

rubocop:disable Style/AccessorMethodName

# File lib/applitools/selenium/visual_grid/visual_grid_runner.rb, line 79
def get_task_queue
  test_to_run = if render_queue.empty?
                  all_running_tests_by_score.first
                else
                  self
                end
  test_to_run ? test_to_run.queue : EMPTY_QUEUE
end
new_test_error_message(result) click to toggle source

rubocop:enable Style/AccessorMethodName

# File lib/applitools/selenium/visual_grid/visual_grid_runner.rb, line 89
def new_test_error_message(result)
  original_results = result.original_results
  "New test '#{original_results['name']}' " \
      "of '#{original_results['appName']}' " \
      "Please approve the baseline at #{original_results['appUrls']['session']} "
end
test_failed_error_message(result) click to toggle source
# File lib/applitools/selenium/visual_grid/visual_grid_runner.rb, line 103
def test_failed_error_message(result)
  original_results = result.original_results
  "Test '#{original_results['name']}' of '#{original_results['appName']}' " \
      "is failed! See details at #{original_results['appUrls']['session']}"
end