Class: Applitools::MatchWindowTask
- Inherits:
-
Object
- Object
- Applitools::MatchWindowTask
- Defined in:
- lib/applitools/core/match_window_task.rb
Defined Under Namespace
Classes: AppOuptut
Constant Summary collapse
- MATCH_INTERVAL =
0.5
Instance Attribute Summary collapse
-
#app_output_provider ⇒ Object
readonly
Returns the value of attribute app_output_provider.
-
#default_retry_timeout ⇒ Object
readonly
Returns the value of attribute default_retry_timeout.
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
-
#running_session ⇒ Object
readonly
Returns the value of attribute running_session.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(logger, running_session, retry_timeout, app_output_provider) ⇒ MatchWindowTask
constructor
A new instance of MatchWindowTask.
- #match_window(options = {}) ⇒ Object
Constructor Details
#initialize(logger, running_session, retry_timeout, app_output_provider) ⇒ MatchWindowTask
Returns a new instance of MatchWindowTask.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/applitools/core/match_window_task.rb', line 21 def initialize(logger, running_session, retry_timeout, app_output_provider) @logger = logger @running_session = running_session # @driver = driver @default_retry_timeout = retry_timeout @app_output_provider = app_output_provider ArgumentGuard.not_nil logger, 'logger' ArgumentGuard.not_nil running_session, 'running_session' ArgumentGuard.not_nil app_output_provider, 'app_output_provider' ArgumentGuard.greater_than_or_equal_to_zero retry_timeout, 'retry_timeout' return if app_output_provider.respond_to? :app_output raise Applitools::EyesIllegalArgument.new 'MatchWindowTask.new(): app_output_provider doesn\'t' / ' respond to :app_output' end |
Instance Attribute Details
#app_output_provider ⇒ Object (readonly)
Returns the value of attribute app_output_provider.
7 8 9 |
# File 'lib/applitools/core/match_window_task.rb', line 7 def app_output_provider @app_output_provider end |
#default_retry_timeout ⇒ Object (readonly)
Returns the value of attribute default_retry_timeout.
7 8 9 |
# File 'lib/applitools/core/match_window_task.rb', line 7 def default_retry_timeout @default_retry_timeout end |
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
7 8 9 |
# File 'lib/applitools/core/match_window_task.rb', line 7 def logger @logger end |
#running_session ⇒ Object (readonly)
Returns the value of attribute running_session.
7 8 9 |
# File 'lib/applitools/core/match_window_task.rb', line 7 def running_session @running_session end |
Class Method Details
.convert_coordinates(regions, screenshot) ⇒ Object
10 11 12 13 14 15 16 17 18 |
# File 'lib/applitools/core/match_window_task.rb', line 10 def convert_coordinates(regions, screenshot) regions.map do |r| screenshot.convert_region_location( Applitools::Region.from_location_size(r.location, r.size), Applitools::EyesScreenshot::COORDINATE_TYPES[:context_relative], Applitools::EyesScreenshot::COORDINATE_TYPES[:screenshot_as_is] ).to_hash end end |
Instance Method Details
#match_window(options = {}) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/applitools/core/match_window_task.rb', line 38 def match_window( = {}) user_inputs = [:user_inputs] last_screenshot = [:last_screenshot] region_provider = [:region_provider] tag = [:tag] should_match_window_run_once_on_timeout = [:should_match_window_run_once_on_timeout] ignore_mismatch = [:ignore_mismatch] retry_timeout = [:retry_timeout] ignore = [:ignore] || [] trim = [:trim] || false match_level = [:match_level] exact = [:exact] retry_timeout = default_retry_timeout if retry_timeout < 0 logger.info "retry_timeout = #{retry_timeout}" elapsed_time_start = Time.now if retry_timeout.zero? || should_match_window_run_once_on_timeout sleep retry_timeout if should_match_window_run_once_on_timeout app_output = app_output_provider.app_output region_provider, last_screenshot match_result = perform_match( user_inputs: user_inputs, app_output: app_output, tag: tag, ignore_mismatch: ignore_mismatch, ignore: self.class.convert_coordinates(ignore, app_output.screenshot), trim: trim, match_level: match_level, exact: exact ) else app_output = app_output_provider.app_output region_provider, last_screenshot start = Time.now match_result = perform_match( user_inputs: user_inputs, app_output: app_output, tag: tag, ignore_mismatch: true, ignore: self.class.convert_coordinates(ignore, app_output.screenshot), trim: trim, match_level: match_level, exact: exact ) retry_time = Time.now - start while retry_time < retry_timeout && !match_result.as_expected? sleep MATCH_INTERVAL app_output = app_output_provider.app_output region_provider, last_screenshot match_result = perform_match( user_inputs: user_inputs, app_output: app_output, tag: tag, ignore_mismatch: true, ignore: self.class.convert_coordinates(ignore, app_output.screenshot), trim: trim, match_level: match_level, exact: exact ) retry_time = Time.now - start end unless match_result.as_expected? app_output = app_output_provider.app_output region_provider, last_screenshot match_result = perform_match( user_inputs: user_inputs, app_output: app_output, tag: tag, ignore_mismatch: ignore_mismatch, ignore: self.class.convert_coordinates(ignore, app_output.screenshot), trim: trim, match_level: match_level, exact: exact ) end end logger.info "Completed in #{format('%.2f', Time.now - elapsed_time_start)} seconds" match_result.screenshot = app_output.screenshot match_result end |