eyes_core 3.15.39 → 3.15.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/applitools/connectivity/server_connector.rb +22 -14
- data/lib/applitools/core/abstract_configuration.rb +3 -1
- data/lib/applitools/core/accessibility_level.rb +1 -1
- data/lib/applitools/core/accessibility_region.rb +3 -1
- data/lib/applitools/core/accessibility_region_type.rb +1 -1
- data/lib/applitools/core/classic_runner.rb +7 -4
- data/lib/applitools/core/eyes_base.rb +3 -5
- data/lib/applitools/core/eyes_base_configuration.rb +14 -9
- data/lib/applitools/core/eyes_configuration_dsl.rb +16 -12
- data/lib/applitools/core/eyes_runner.rb +4 -3
- data/lib/applitools/core/future.rb +6 -4
- data/lib/applitools/core/jsonable.rb +14 -14
- data/lib/applitools/core/match_level.rb +3 -1
- data/lib/applitools/core/match_level_setter.rb +3 -2
- data/lib/applitools/core/match_window_data.rb +17 -6
- data/lib/applitools/core/rectangle_size.rb +5 -0
- data/lib/applitools/core/region.rb +5 -1
- data/lib/applitools/core/session_types.rb +3 -1
- data/lib/applitools/core/test_result_summary.rb +3 -3
- data/lib/applitools/utils/eyes_selenium_utils.rb +2 -1
- data/lib/applitools/utils/utils.rb +1 -1
- data/lib/applitools/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f287ee6b9af278790d07eee670dfe45e402603b4da97e2e28780351a1c2e1d9f
|
|
4
|
+
data.tar.gz: a542a05b7bf9c4d911bcac1ee9f456fdb7250b03c74b54ca1b455c6b08f61c19
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4a0a95ca5cf486ff3b45c5e7560c23dc9c6df106a00aba4cfa0cca4bc85eb27c98f8f46b614b41fd29e434a669d7b16b115c2afae35e973cd708960d2b5ee1b8
|
|
7
|
+
data.tar.gz: 40a60b73a2db57f99c8eef611286b376d1410db5b9cb151915dc34705af358e393a0f0d6beaaf0f3c5086a9a330a0f82370cdb15de78e0f0e2dcec614d3c05b0
|
|
@@ -17,7 +17,7 @@ module Applitools::Connectivity
|
|
|
17
17
|
API_SESSIONS_RUNNING = API_SESSIONS + '/running/'.freeze
|
|
18
18
|
API_SINGLE_TEST = API_SESSIONS + '/'.freeze
|
|
19
19
|
|
|
20
|
-
RENDER_INFO_PATH = API_SESSIONS +
|
|
20
|
+
RENDER_INFO_PATH = API_SESSIONS + '/renderinfo'.freeze
|
|
21
21
|
RENDER = '/render'.freeze
|
|
22
22
|
|
|
23
23
|
RESOURCES_SHA_256 = '/resources/sha256/'.freeze
|
|
@@ -42,7 +42,9 @@ module Applitools::Connectivity
|
|
|
42
42
|
|
|
43
43
|
def rendering_info
|
|
44
44
|
response = get(server_url + RENDER_INFO_PATH, content_type: 'application/json')
|
|
45
|
-
|
|
45
|
+
unless response.status == HTTP_STATUS_CODES[:ok]
|
|
46
|
+
raise Applitools::EyesError, "Error getting render info (#{response.status}})"
|
|
47
|
+
end
|
|
46
48
|
Oj.load response.body
|
|
47
49
|
end
|
|
48
50
|
|
|
@@ -57,14 +59,16 @@ module Applitools::Connectivity
|
|
|
57
59
|
},
|
|
58
60
|
timeout: 10
|
|
59
61
|
)
|
|
60
|
-
|
|
62
|
+
unless response.status == HTTP_STATUS_CODES[:ok]
|
|
63
|
+
raise Applitools::EyesError, "Error render processing (#{response.status}, #{response.body})"
|
|
64
|
+
end
|
|
61
65
|
Oj.load response.body
|
|
62
66
|
end
|
|
63
67
|
|
|
64
68
|
def render_put_resource(service_url, access_key, resource, render)
|
|
65
69
|
uri = URI(service_url)
|
|
66
70
|
uri.path = RESOURCES_SHA_256 + resource.hash
|
|
67
|
-
Applitools::EyesLogger.debug("PUT resource: #{uri}")
|
|
71
|
+
Applitools::EyesLogger.debug("PUT resource: (#{resource.url}) - #{uri}")
|
|
68
72
|
# Applitools::EyesLogger.debug("Resource content: #{resource.content}")
|
|
69
73
|
response = dummy_put(
|
|
70
74
|
uri,
|
|
@@ -73,9 +77,11 @@ module Applitools::Connectivity
|
|
|
73
77
|
headers: {
|
|
74
78
|
'X-Auth-Token' => access_key
|
|
75
79
|
},
|
|
76
|
-
query: {'render-id' => render['renderId']}
|
|
80
|
+
query: { 'render-id' => render['renderId'] }
|
|
77
81
|
)
|
|
78
|
-
|
|
82
|
+
unless response.status == HTTP_STATUS_CODES[:ok]
|
|
83
|
+
raise Applitools::EyesError, "Error putting resource: #{response.status}, #{response.body}"
|
|
84
|
+
end
|
|
79
85
|
resource.hash
|
|
80
86
|
end
|
|
81
87
|
|
|
@@ -87,11 +93,14 @@ module Applitools::Connectivity
|
|
|
87
93
|
body: running_renders_json,
|
|
88
94
|
content_type: 'application/json',
|
|
89
95
|
headers: {
|
|
90
|
-
|
|
96
|
+
'X-Auth-Token' => access_key
|
|
91
97
|
},
|
|
92
98
|
timeout: 2
|
|
93
99
|
)
|
|
94
|
-
|
|
100
|
+
unless response.status == HTTP_STATUS_CODES[:ok]
|
|
101
|
+
raise Applitools::EyesError, "Error getting server status, #{response.status} #{response.body}"
|
|
102
|
+
end
|
|
103
|
+
|
|
95
104
|
Oj.load(response.body)
|
|
96
105
|
end
|
|
97
106
|
|
|
@@ -109,7 +118,7 @@ module Applitools::Connectivity
|
|
|
109
118
|
end
|
|
110
119
|
response = resp_proc.call(url)
|
|
111
120
|
redirect_count = 10
|
|
112
|
-
while response.status == 301 && redirect_count > 0
|
|
121
|
+
while response.status == 301 && redirect_count > 0
|
|
113
122
|
redirect_count -= 1
|
|
114
123
|
response = resp_proc.call(response.headers['location'])
|
|
115
124
|
end
|
|
@@ -126,7 +135,7 @@ module Applitools::Connectivity
|
|
|
126
135
|
Applitools::ArgumentGuard.not_nil(batch_id, 'batch_id')
|
|
127
136
|
Applitools::EyesLogger.info("Called with #{batch_id}")
|
|
128
137
|
url = CLOSE_BATCH % batch_id
|
|
129
|
-
response = delete(URI.join(endpoint_url,url))
|
|
138
|
+
response = delete(URI.join(endpoint_url, url))
|
|
130
139
|
Applitools::EyesLogger.info "delete batch is done with #{response.status} status"
|
|
131
140
|
end
|
|
132
141
|
|
|
@@ -296,9 +305,9 @@ module Applitools::Connectivity
|
|
|
296
305
|
|
|
297
306
|
def dummy_request(url, method, options = {})
|
|
298
307
|
Faraday::Connection.new(
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
308
|
+
url,
|
|
309
|
+
ssl: { ca_file: SSL_CERT },
|
|
310
|
+
proxy: @proxy.nil? ? nil : @proxy.to_hash
|
|
302
311
|
).send(method) do |req|
|
|
303
312
|
req.options.timeout = options[:timeout] || DEFAULT_TIMEOUT
|
|
304
313
|
req.headers = DEFAULT_HEADERS.merge(options[:headers] || {})
|
|
@@ -349,4 +358,3 @@ module Applitools::Connectivity
|
|
|
349
358
|
end
|
|
350
359
|
end
|
|
351
360
|
end
|
|
352
|
-
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require_relative 'eyes_runner'
|
|
2
4
|
module Applitools
|
|
3
5
|
class ClassicRunner < EyesRunner
|
|
4
6
|
attr_accessor :all_test_results, :all_pending_exceptions
|
|
5
|
-
def initialize
|
|
7
|
+
def initialize
|
|
6
8
|
super
|
|
7
9
|
self.all_test_results = []
|
|
10
|
+
self.all_pending_exceptions = {}
|
|
8
11
|
end
|
|
9
12
|
|
|
10
13
|
def aggregate_result(test_result)
|
|
@@ -18,15 +21,15 @@ module Applitools
|
|
|
18
21
|
|
|
19
22
|
def get_all_test_results(throw_exception = false)
|
|
20
23
|
begin
|
|
21
|
-
if
|
|
24
|
+
if throw_exception
|
|
22
25
|
all_pending_exceptions.each do |_result, exception|
|
|
23
26
|
raise exception
|
|
24
27
|
end
|
|
25
28
|
end
|
|
26
29
|
ensure
|
|
27
30
|
delete_all_batches
|
|
28
|
-
all_test_results
|
|
29
31
|
end
|
|
32
|
+
all_test_results
|
|
30
33
|
end
|
|
31
34
|
end
|
|
32
|
-
end
|
|
35
|
+
end
|
|
@@ -40,10 +40,8 @@ module Applitools
|
|
|
40
40
|
# Default value is false.
|
|
41
41
|
# @return [boolean] verbose_results flag
|
|
42
42
|
|
|
43
|
-
|
|
44
43
|
# attr_accessor :agent_id, :session_type, :app_name, :test_name,
|
|
45
44
|
|
|
46
|
-
|
|
47
45
|
attr_accessor :batch, :full_agent_id,
|
|
48
46
|
:match_timeout, :save_new_tests, :save_failed_tests, :failure_reports, :default_match_settings, :cut_provider,
|
|
49
47
|
:scale_ratio, :position_provider, :viewport_size, :verbose_results,
|
|
@@ -196,7 +194,7 @@ module Applitools
|
|
|
196
194
|
|
|
197
195
|
logger.info "Agent = #{full_agent_id}"
|
|
198
196
|
logger.info "openBase(app_name: #{app_name}, test_name: #{test_name}," \
|
|
199
|
-
" viewport_size: #{viewport_size
|
|
197
|
+
" viewport_size: #{viewport_size})"
|
|
200
198
|
|
|
201
199
|
raise Applitools::EyesError.new 'API key is missing! Please set it using api_key=' if
|
|
202
200
|
api_key.nil? || (api_key && api_key.empty?)
|
|
@@ -459,8 +457,8 @@ module Applitools
|
|
|
459
457
|
#
|
|
460
458
|
private
|
|
461
459
|
|
|
462
|
-
attr_accessor :running_session, :last_screenshot, :scale_provider, :session_start_info,
|
|
463
|
-
:failed
|
|
460
|
+
attr_accessor :running_session, :last_screenshot, :scale_provider, :session_start_info,
|
|
461
|
+
:should_match_window_run_once_on_timeout, :app_output_provider, :failed
|
|
464
462
|
|
|
465
463
|
attr_reader :user_inputs, :properties
|
|
466
464
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'applitools/core/rectangle_size'
|
|
2
4
|
require 'applitools/core/session_types'
|
|
3
5
|
require 'applitools/core/batch_info'
|
|
@@ -14,11 +16,13 @@ module Applitools
|
|
|
14
16
|
parent_branch_name: ENV['APPLITOOLS_PARENT_BRANCH'] || '',
|
|
15
17
|
baseline_branch_name: ENV['APPLITOOLS_BASELINE_BRANCH'] || '',
|
|
16
18
|
save_diffs: false,
|
|
17
|
-
server_url: ENV['APPLITOOLS_SERVER_URL'] ||
|
|
19
|
+
server_url: ENV['APPLITOOLS_SERVER_URL'] ||
|
|
20
|
+
ENV['bamboo_APPLITOOLS_SERVER_URL'] || 'https://eyessdk.applitools.com',
|
|
18
21
|
api_key: ENV['APPLITOOLS_API_KEY'] || ENV['bamboo_APPLITOOLS_API_KEY'] || '',
|
|
19
22
|
match_level: Applitools::MatchLevel::STRICT,
|
|
20
23
|
scale: 0,
|
|
21
|
-
remainder: 0
|
|
24
|
+
remainder: 0,
|
|
25
|
+
save_new_tests: false
|
|
22
26
|
}.freeze
|
|
23
27
|
|
|
24
28
|
class << self
|
|
@@ -33,7 +37,7 @@ module Applitools
|
|
|
33
37
|
end
|
|
34
38
|
|
|
35
39
|
def merge(other_config)
|
|
36
|
-
return if
|
|
40
|
+
return if object_id == other_config.object_id
|
|
37
41
|
(config_keys + other_config. config_keys).uniq do |k|
|
|
38
42
|
merge_key(other_config, k)
|
|
39
43
|
end
|
|
@@ -41,8 +45,8 @@ module Applitools
|
|
|
41
45
|
|
|
42
46
|
def merge_key(other_config, key)
|
|
43
47
|
return unless other_config.send("defined_#{key}?")
|
|
44
|
-
return unless
|
|
45
|
-
|
|
48
|
+
return unless respond_to?("#{key}=")
|
|
49
|
+
send("#{key}=", other_config.send(key))
|
|
46
50
|
end
|
|
47
51
|
|
|
48
52
|
def config_keys
|
|
@@ -89,6 +93,7 @@ module Applitools
|
|
|
89
93
|
string_field :agent_id
|
|
90
94
|
string_field :environment_name
|
|
91
95
|
boolean_field :save_diffs
|
|
96
|
+
boolean_field :save_new_tests
|
|
92
97
|
enum_field :session_type, Applitools::SessionTypes.enum_values
|
|
93
98
|
object_field :batch_info, Applitools::BatchInfo
|
|
94
99
|
string_field :baseline_env_name
|
|
@@ -105,7 +110,6 @@ module Applitools
|
|
|
105
110
|
int_field :scale
|
|
106
111
|
int_field :remainder
|
|
107
112
|
|
|
108
|
-
|
|
109
113
|
methods_to_delegate.delete(:batch_info)
|
|
110
114
|
methods_to_delegate.delete(:batch_info=)
|
|
111
115
|
|
|
@@ -119,7 +123,8 @@ module Applitools
|
|
|
119
123
|
|
|
120
124
|
def match_level=(value)
|
|
121
125
|
return config_hash[:match_level] = value if Applitools::MatchLevel.enum_values.include?(value)
|
|
122
|
-
return config_hash[:match_level] = Applitools::MATCH_LEVEL[value.to_sym] if
|
|
126
|
+
return config_hash[:match_level] = Applitools::MATCH_LEVEL[value.to_sym] if
|
|
127
|
+
Applitools::MATCH_LEVEL.keys.include?(value.to_sym)
|
|
123
128
|
raise Applitools::EyesError, "Unknown match level #{value}"
|
|
124
129
|
end
|
|
125
130
|
|
|
@@ -132,7 +137,7 @@ module Applitools
|
|
|
132
137
|
extra_keys = value.keys - match_level_keys
|
|
133
138
|
unless extra_keys.empty?
|
|
134
139
|
raise Applitools::EyesIllegalArgument.new(
|
|
135
|
-
|
|
140
|
+
"Pasiing extra keys is prohibited! Passed extra keys: #{extra_keys}"
|
|
136
141
|
)
|
|
137
142
|
end
|
|
138
143
|
result = default_match_settings.merge!(value)
|
|
@@ -160,4 +165,4 @@ module Applitools
|
|
|
160
165
|
methods_to_delegate.push(:default_match_settings=)
|
|
161
166
|
methods_to_delegate.push(:default_match_settings)
|
|
162
167
|
end
|
|
163
|
-
end
|
|
168
|
+
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Applitools
|
|
2
4
|
module EyesConfigurationDSL
|
|
3
5
|
def methods_to_delegate
|
|
@@ -23,11 +25,7 @@ module Applitools
|
|
|
23
25
|
|
|
24
26
|
define_method("#{field_name}=") do |*args|
|
|
25
27
|
value = args.shift
|
|
26
|
-
|
|
27
|
-
config_hash[field_name] = true
|
|
28
|
-
else
|
|
29
|
-
config_hash[field_name] = false
|
|
30
|
-
end
|
|
28
|
+
config_hash[field_name] = value ? true : false
|
|
31
29
|
end
|
|
32
30
|
|
|
33
31
|
define_method("defined_#{field_name}?") do
|
|
@@ -43,7 +41,9 @@ module Applitools
|
|
|
43
41
|
|
|
44
42
|
define_method("#{field_name}=") do |*args|
|
|
45
43
|
value = args.shift
|
|
46
|
-
|
|
44
|
+
unless value.is_a? String
|
|
45
|
+
raise Applitools::EyesIllegalArgument, "Expected #{field_name} to be a String but got #{value.class} instead"
|
|
46
|
+
end
|
|
47
47
|
config_hash[field_name.to_sym] = value.freeze
|
|
48
48
|
end
|
|
49
49
|
|
|
@@ -61,10 +61,12 @@ module Applitools
|
|
|
61
61
|
end
|
|
62
62
|
define_method("#{field_name}=") do |*args|
|
|
63
63
|
value = args.shift
|
|
64
|
-
|
|
64
|
+
unless value.is_a? klass
|
|
65
|
+
raise(
|
|
65
66
|
Applitools::EyesIllegalArgument,
|
|
66
67
|
"Expected #{klass} but got #{value.class}"
|
|
67
|
-
|
|
68
|
+
)
|
|
69
|
+
end
|
|
68
70
|
config_hash[field_name.to_sym] = value
|
|
69
71
|
end
|
|
70
72
|
define_method("defined_#{field_name}?") do
|
|
@@ -104,11 +106,13 @@ module Applitools
|
|
|
104
106
|
|
|
105
107
|
define_method("#{field_name}=") do |*args|
|
|
106
108
|
value = args.shift
|
|
107
|
-
|
|
109
|
+
unless available_values_array.include? value
|
|
110
|
+
raise(
|
|
108
111
|
Applitools::EyesIllegalArgument,
|
|
109
112
|
"Unknown #{field_name} #{value}. Allowed session types: " \
|
|
110
|
-
|
|
111
|
-
|
|
113
|
+
"#{available_values_array.join(', ')}"
|
|
114
|
+
)
|
|
115
|
+
end
|
|
112
116
|
config_hash[field_name.to_sym] = value
|
|
113
117
|
end
|
|
114
118
|
|
|
@@ -117,4 +121,4 @@ module Applitools
|
|
|
117
121
|
end
|
|
118
122
|
end
|
|
119
123
|
end
|
|
120
|
-
end
|
|
124
|
+
end
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Applitools
|
|
2
4
|
class EyesRunner
|
|
3
5
|
attr_accessor :batches_server_connectors_map
|
|
4
6
|
|
|
5
|
-
def initialize
|
|
7
|
+
def initialize
|
|
6
8
|
self.batches_server_connectors_map = {}
|
|
7
9
|
end
|
|
8
10
|
|
|
9
11
|
def add_batch(batch_id, &block)
|
|
10
|
-
puts batch_id
|
|
11
12
|
batches_server_connectors_map[batch_id] ||= block if block_given?
|
|
12
13
|
end
|
|
13
14
|
|
|
@@ -15,4 +16,4 @@ module Applitools
|
|
|
15
16
|
batches_server_connectors_map.each_value { |v| v.call if v.respond_to? :call }
|
|
16
17
|
end
|
|
17
18
|
end
|
|
18
|
-
end
|
|
19
|
+
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Applitools
|
|
2
4
|
class Future
|
|
3
5
|
attr_accessor :result, :semaphore, :block, :thread
|
|
@@ -8,11 +10,11 @@ module Applitools
|
|
|
8
10
|
self.semaphore = semaphore
|
|
9
11
|
self.thread = Thread.new do
|
|
10
12
|
begin
|
|
11
|
-
self.result =
|
|
13
|
+
self.result = yield(semaphore)
|
|
12
14
|
rescue StandardError => e
|
|
13
|
-
Applitools::EyesLogger.logger.error
|
|
15
|
+
Applitools::EyesLogger.logger.error 'Failed to execute future'
|
|
14
16
|
Applitools::EyesLogger.logger.error e.message
|
|
15
|
-
Applitools::EyesLogger.logger.error e.backtrace.join(
|
|
17
|
+
Applitools::EyesLogger.logger.error e.backtrace.join(' ')
|
|
16
18
|
end
|
|
17
19
|
end
|
|
18
20
|
end
|
|
@@ -22,4 +24,4 @@ module Applitools
|
|
|
22
24
|
result
|
|
23
25
|
end
|
|
24
26
|
end
|
|
25
|
-
end
|
|
27
|
+
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'oj'
|
|
2
4
|
module Applitools
|
|
3
5
|
module Jsonable
|
|
@@ -17,17 +19,15 @@ module Applitools
|
|
|
17
19
|
field = args.first.to_sym
|
|
18
20
|
options = { method: field }.merge! options
|
|
19
21
|
json_methods[field] = options[:method]
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
end
|
|
30
|
-
end
|
|
22
|
+
return unless options[:method].to_sym == field
|
|
23
|
+
attr_accessor field
|
|
24
|
+
ruby_style_field = Applitools::Utils.underscore(field.to_s)
|
|
25
|
+
return if field.to_s == ruby_style_field
|
|
26
|
+
define_method(ruby_style_field) do
|
|
27
|
+
send(field)
|
|
28
|
+
end
|
|
29
|
+
define_method("#{ruby_style_field}=") do |v|
|
|
30
|
+
send("#{field}=", v)
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
|
|
@@ -37,7 +37,7 @@ module Applitools
|
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def json_data
|
|
40
|
-
self.class.json_methods.sort.map {|k,v| [k, json_value(send(v))]}.to_h
|
|
40
|
+
self.class.json_methods.sort.map { |k, v| [k, json_value(send(v))] }.to_h
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
def json
|
|
@@ -49,7 +49,7 @@ module Applitools
|
|
|
49
49
|
def json_value(value)
|
|
50
50
|
case value
|
|
51
51
|
when Hash
|
|
52
|
-
value.map { |k,v| [k, json_value(v)] }.sort {|a,b| a.first.to_s <=> b.first.to_s}.to_h
|
|
52
|
+
value.map { |k, v| [k, json_value(v)] }.sort { |a, b| a.first.to_s <=> b.first.to_s }.to_h
|
|
53
53
|
when Array
|
|
54
54
|
value.map { |el| json_value(el) }
|
|
55
55
|
else
|
|
@@ -57,4 +57,4 @@ module Applitools
|
|
|
57
57
|
end
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
|
-
end
|
|
60
|
+
end
|
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
module Applitools::MatchLevelSetter
|
|
4
4
|
def match_level_with_exact(value, exact_options = {})
|
|
5
|
-
raise Applitools::EyesError unless
|
|
5
|
+
raise Applitools::EyesError unless
|
|
6
|
+
Applitools::MATCH_LEVEL.keys.include?(value) | Applitools::MatchLevel.enum_values.include?(value)
|
|
6
7
|
|
|
7
8
|
if value != :exact && value != Applitools::MatchLevel::EXACT && (exact_options && !exact_options.empty?)
|
|
8
9
|
raise Applitools::EyesError.new(
|
|
9
10
|
'Exact options are accepted only for EXACT match level'
|
|
10
11
|
)
|
|
11
12
|
end
|
|
12
|
-
match_level_value = if
|
|
13
|
+
match_level_value = if Applitools::MatchLevel.enum_values.include?(value)
|
|
13
14
|
value
|
|
14
15
|
else
|
|
15
16
|
Applitools::MATCH_LEVEL[value]
|
|
@@ -49,7 +49,8 @@ module Applitools
|
|
|
49
49
|
'IgnoreMismatch' => false,
|
|
50
50
|
'Trim' => {
|
|
51
51
|
'Enabled' => false
|
|
52
|
-
}
|
|
52
|
+
},
|
|
53
|
+
'RenderId' => ''
|
|
53
54
|
},
|
|
54
55
|
'Id' => nil,
|
|
55
56
|
'UserInputs' => [],
|
|
@@ -64,7 +65,8 @@ module Applitools
|
|
|
64
65
|
'Y' => 0
|
|
65
66
|
}
|
|
66
67
|
},
|
|
67
|
-
'Tag' => nil
|
|
68
|
+
'Tag' => nil,
|
|
69
|
+
'RenderId' => ''
|
|
68
70
|
}
|
|
69
71
|
end
|
|
70
72
|
|
|
@@ -222,6 +224,15 @@ module Applitools
|
|
|
222
224
|
current_data['Options']['ImageMatchSettings']['IgnoreDisplacements'] = value
|
|
223
225
|
end
|
|
224
226
|
|
|
227
|
+
def render_id
|
|
228
|
+
current_data['Options']['RenderId']
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
def render_id=(value)
|
|
232
|
+
current_data['Options']['RenderId'] = value
|
|
233
|
+
current_data['RenderId'] = value
|
|
234
|
+
end
|
|
235
|
+
|
|
225
236
|
def exact=(value)
|
|
226
237
|
raise Applitools::EyesError.new('You should pass a hash as a value!') unless value.nil? || value.is_a?(Hash)
|
|
227
238
|
return current_data['Options']['ImageMatchSettings']['Exact'] = nil if value.nil?
|
|
@@ -413,25 +424,25 @@ module Applitools
|
|
|
413
424
|
def to_hash
|
|
414
425
|
if @need_convert_accessibility_regions_coordinates
|
|
415
426
|
raise Applitools::EyesError.new(
|
|
416
|
-
|
|
427
|
+
'You should convert coordinates for content_regions!'
|
|
417
428
|
)
|
|
418
429
|
end
|
|
419
430
|
|
|
420
431
|
if @need_convert_content_regions_coordinates
|
|
421
432
|
raise Applitools::EyesError.new(
|
|
422
|
-
|
|
433
|
+
'You should convert coordinates for content_regions!'
|
|
423
434
|
)
|
|
424
435
|
end
|
|
425
436
|
|
|
426
437
|
if @need_convert_strict_regions_coordinates
|
|
427
438
|
raise Applitools::EyesError.new(
|
|
428
|
-
|
|
439
|
+
'You should convert coordinates for strict_regions!'
|
|
429
440
|
)
|
|
430
441
|
end
|
|
431
442
|
|
|
432
443
|
if @need_convert_layout_regions_coordinates
|
|
433
444
|
raise Applitools::EyesError.new(
|
|
434
|
-
|
|
445
|
+
'You should convert coordinates for layout_regions!'
|
|
435
446
|
)
|
|
436
447
|
end
|
|
437
448
|
|
|
@@ -58,6 +58,7 @@ module Applitools
|
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
def square
|
|
61
|
+
return 0 if width.nil? || height.nil?
|
|
61
62
|
width * height
|
|
62
63
|
end
|
|
63
64
|
|
|
@@ -72,6 +73,10 @@ module Applitools
|
|
|
72
73
|
def to_hash
|
|
73
74
|
to_h
|
|
74
75
|
end
|
|
76
|
+
|
|
77
|
+
def empty?
|
|
78
|
+
square.zero?
|
|
79
|
+
end
|
|
75
80
|
end
|
|
76
81
|
# rubocop:enable Metrics/BlockLength
|
|
77
82
|
end
|
|
@@ -105,6 +105,10 @@ module Applitools
|
|
|
105
105
|
self.class.sub_regions_with_varying_size self, subregion_size
|
|
106
106
|
end
|
|
107
107
|
|
|
108
|
+
def [](value)
|
|
109
|
+
send value if respond_to? value
|
|
110
|
+
end
|
|
111
|
+
|
|
108
112
|
def to_hash
|
|
109
113
|
{
|
|
110
114
|
x: left,
|
|
@@ -116,7 +120,7 @@ module Applitools
|
|
|
116
120
|
}
|
|
117
121
|
end
|
|
118
122
|
|
|
119
|
-
alias
|
|
123
|
+
alias json_data to_hash
|
|
120
124
|
|
|
121
125
|
def to_s
|
|
122
126
|
"(#{left}, #{top}), #{width} x #{height}"
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Applitools
|
|
2
4
|
class TestResultSummary
|
|
3
|
-
|
|
4
5
|
attr_accessor :results, :passed, :unresolved, :failed, :exceptions, :mismatches, :missing, :matches
|
|
5
6
|
def initialize(results)
|
|
6
7
|
Applitools::ArgumentGuard.is_a?(results, 'results', Array)
|
|
7
8
|
results.each_with_index do |r, i|
|
|
8
9
|
Applitools::ArgumentGuard.is_a?(r, "results[#{i}]", Applitools::TestResults)
|
|
9
10
|
end
|
|
10
|
-
|
|
11
11
|
end
|
|
12
12
|
end
|
|
13
|
-
end
|
|
13
|
+
end
|
|
@@ -260,7 +260,8 @@ module Applitools::Utils
|
|
|
260
260
|
end
|
|
261
261
|
|
|
262
262
|
def set_transforms(executor, value)
|
|
263
|
-
root_element =
|
|
263
|
+
root_element =
|
|
264
|
+
executor.browser.running_browser_name == :internet_explorer ? 'document.body' : 'document.documentElement'
|
|
264
265
|
script = value.keys.map do |k|
|
|
265
266
|
JS_SET_TRANSFORM_VALUE % {
|
|
266
267
|
element: root_element,
|
|
@@ -78,7 +78,7 @@ module Applitools::Utils
|
|
|
78
78
|
when Array
|
|
79
79
|
value.map { |el| stringify_for_hash(el) }.join('')
|
|
80
80
|
when Hash
|
|
81
|
-
value.keys.sort { |a, b| b.to_s <=> a.to_s }.map { |k| "#{k}#{stringify_for_hash(value[k])}"}.join('')
|
|
81
|
+
value.keys.sort { |a, b| b.to_s <=> a.to_s }.map { |k| "#{k}#{stringify_for_hash(value[k])}" }.join('')
|
|
82
82
|
else
|
|
83
83
|
value.to_s
|
|
84
84
|
end
|
data/lib/applitools/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: eyes_core
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.15.
|
|
4
|
+
version: 3.15.40
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Applitools Team
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-
|
|
11
|
+
date: 2019-12-03 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: oily_png
|