eyes_core 3.15.39 → 3.15.40
Sign up to get free protection for your applications and to get access to all the features.
- 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
|