class Applitools::Eyes
Override create driver to inject into capybara’s driver
Constants
- AGENT_ID
- DEFAULT_MATCH_TIMEOUT
Attributes
config[RW]
aborted[RW]
agent_connector[R]
app_name[RW]
branch_name[RW]
disabled[R]
driver[RW]
failure_reports[RW]
host_app[RW]
host_os[RW]
is_open[RW]
match_level[RW]
match_timeout[RW]
match_window_task[RW]
parent_branch_name[RW]
session[RW]
session_start_info[RW]
should_match_window_run_once_on_timeout[RW]
test_batch[RW]
test_name[RW]
viewport_size[RW]
Public Class Methods
new(params={})
click to toggle source
# File lib/eyes_selenium_ruby/eyes/eyes.rb, line 24 def initialize(params={}) raise "Please supply an apikey: Eyes.config[:apikey] = ..." unless config[:apikey] @disabled = params[:disabled] @driver = create_driver(params) return if disabled? @agent_connector = Applitools::AgentConnector.new(config[:server_url], config[:user], config[:apikey]) @match_timeout = DEFAULT_MATCH_TIMEOUT @failure_reports = Applitools::FailureReports::ON_CLOSE end
Public Instance Methods
abort_if_not_closed()
click to toggle source
# File lib/eyes_selenium_ruby/eyes/eyes.rb, line 132 def abort_if_not_closed return if disabled? self.is_open = false if session begin agent_connector.stop_session(session,true) rescue Applitools::EyesError => e EyesLogger.info "Failed to abort server session -> #{e.message} " ensure self.session = nil end end end
check_window(tag)
click to toggle source
# File lib/eyes_selenium_ruby/eyes/eyes.rb, line 64 def check_window(tag) return if disabled? raise Applitools::EyesError.new("Eyes not open") if !open? if !session start_session self.match_window_task = Applitools::MatchWindowTask.new(agent_connector, session, driver, match_timeout) end as_expected = match_window_task.match_window(tag, should_match_window_run_once_on_timeout) if !as_expected self.should_match_window_run_once_on_timeout = true if !session.new_session? #EyesLogger.info %( "mismatch! #{ tag ? "" : "(#{tag})" } ) if failure_reports.to_i == Applitools::FailureReports::IMMEDIATE raise Applitools::TestFailedError.new("Mismatch found in '#{start_info.scenario_id_or_name}'"\ " of '#{start_info.app_id_or_name}'") end end end end
close()
click to toggle source
# File lib/eyes_selenium_ruby/eyes/eyes.rb, line 85 def close return if disabled? self.is_open = false return Applitools::TestResults.new if !session session_results_url = session.url results = agent_connector.stop_session(session,false) new_session = session.new_session? self.session = nil if new_session instructions = "Please approve the new baseline at #{session_results_url}" EyesLogger.info "--- New test ended. #{instructions}" message = "' #{session_start_info.scenario_id_or_name} of"\ " #{session_start_info.app_id_or_name}. #{instructions}" raise Applitools::NewTestError.new(message, results) elsif 0 < results.mismatches || 0 < results.missing EyesLogger.info "--- Failed test ended. See details at #{session_results_url}" message = "' #{session_start_info.scenario_id_or_name} of"\ " #{session_start_info.app_id_or_name}'. See details at #{session_results_url}" raise Applitools::TestFailedError.new(message, results) end EyesLogger.info "--- Test passed. See details at #{session_results_url}" end
config()
click to toggle source
# File lib/eyes_selenium_ruby/eyes/eyes.rb, line 20 def config self.class.config end
create_driver(params)
click to toggle source
# File lib/eyes_selenium_ruby/eyes/eyes.rb, line 37 def create_driver(params) Applitools::Driver.new(browser: params.fetch(:browser, nil)) end
open(params={})
click to toggle source
# File lib/eyes_selenium_ruby/eyes/eyes.rb, line 41 def open(params={}) return driver if disabled? if open? abort_if_not_closed msg = 'a test is alread running' EyesLogger.info(msg) and raise Applitools::EyesError.new(msg) end self.app_name = params.fetch(:app_name) self.failure_reports = params.fetch(:failure_reports, self.failure_reports) self.match_level = params.fetch(:match_level,MatchLevel::EXACT) self.test_name = params.fetch(:test_name) self.viewport_size = params.fetch(:viewport_size, nil) self.is_open = true driver end
open?()
click to toggle source
# File lib/eyes_selenium_ruby/eyes/eyes.rb, line 60 def open? self.is_open end
test(params={}) { |self, driver| ... }
click to toggle source
# File lib/eyes_selenium_ruby/capybara.rb, line 5 def test(params={}, &block) begin previous_driver = Capybara.current_driver previous_browser = Capybara.current_session.driver.instance_variable_get(:@browser) Capybara.current_driver = :selenium Capybara.current_session.driver.instance_variable_set(:@browser, driver) open(params) yield(self, driver) close rescue Applitools::EyesError ensure abort_if_not_closed Capybara.current_session.driver.instance_variable_set(:@browser, previous_browser) Capybara.current_driver = previous_driver end end
Private Instance Methods
assign_viewport_size()
click to toggle source
# File lib/eyes_selenium_ruby/eyes/eyes.rb, line 169 def assign_viewport_size if viewport_size? self.viewport_size = Applitools::ViewportSize.new(driver, viewport_size) self.viewport_size.set else self.viewport_size = Applitools::ViewportSize.new(driver).extract_viewport_from_browser! end end
disabled?()
click to toggle source
# File lib/eyes_selenium_ruby/eyes/eyes.rb, line 148 def disabled? disabled end
start_session()
click to toggle source
# File lib/eyes_selenium_ruby/eyes/eyes.rb, line 152 def start_session assign_viewport_size test_batch ||= Applitools::BatchInfo.new app_env = Applitools::Environment.new(host_os, host_app, viewport_size) application = driver.create_application self.session_start_info = Applitools::StartInfo.new(AGENT_ID, app_name, test_name, test_batch, app_env, application, match_level,nil, branch_name, parent_branch_name ) self.session = agent_connector.start_session(session_start_info) self.should_match_window_run_once_on_timeout = session.new_session? end
to_hash()
click to toggle source
# File lib/eyes_selenium_ruby/eyes/eyes.rb, line 178 def to_hash Hash[dimension.each_pair.to_a] end
viewport_size?()
click to toggle source
# File lib/eyes_selenium_ruby/eyes/eyes.rb, line 165 def viewport_size? self.viewport_size end