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