eyes_core 3.18.4 → 4.0.3

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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/lib/applitools/appium/eyes.rb +3 -2
  3. data/lib/applitools/appium/target.rb +218 -193
  4. data/lib/applitools/calabash/calabash_screenshot_provider.rb +23 -23
  5. data/lib/applitools/calabash/full_page_capture_algorithm/base.rb +1 -1
  6. data/lib/applitools/connectivity/proxy.rb +11 -3
  7. data/lib/applitools/connectivity/server_connector.rb +2 -1
  8. data/lib/applitools/core/accessibility_level.rb +11 -0
  9. data/lib/applitools/core/batch_info.rb +24 -2
  10. data/lib/applitools/core/classic_runner.rb +9 -1
  11. data/lib/applitools/core/debug_screenshot_provider.rb +3 -3
  12. data/lib/applitools/core/eyes_base.rb +81 -28
  13. data/lib/applitools/core/eyes_base_configuration.rb +22 -1
  14. data/lib/applitools/core/eyes_runner.rb +12 -0
  15. data/lib/applitools/core/floating_region.rb +17 -8
  16. data/lib/applitools/core/image_match_settings.rb +54 -0
  17. data/lib/applitools/core/match_level.rb +3 -1
  18. data/lib/applitools/core/screenshot.rb +7 -7
  19. data/lib/applitools/core/test_result_summary.rb +17 -4
  20. data/lib/applitools/core/test_results.rb +2 -2
  21. data/lib/applitools/core/universal_eyes_checks.rb +66 -0
  22. data/lib/applitools/core/universal_eyes_open.rb +100 -0
  23. data/lib/applitools/core/universal_new_api.rb +43 -0
  24. data/lib/applitools/universal_sdk/universal_check_settings.rb +190 -0
  25. data/lib/applitools/universal_sdk/universal_client.rb +142 -0
  26. data/lib/applitools/universal_sdk/universal_client_socket.rb +110 -0
  27. data/lib/applitools/universal_sdk/universal_eyes.rb +45 -0
  28. data/lib/applitools/universal_sdk/universal_eyes_config.rb +205 -0
  29. data/lib/applitools/universal_sdk/universal_eyes_manager.rb +40 -0
  30. data/lib/applitools/universal_sdk/universal_eyes_manager_config.rb +62 -0
  31. data/lib/applitools/universal_sdk/universal_server.rb +81 -0
  32. data/lib/applitools/utils/image_utils.rb +7 -7
  33. data/lib/applitools/utils/utils.rb +13 -0
  34. data/lib/applitools/version.rb +2 -1
  35. data/lib/eyes_core.rb +4 -1
  36. metadata +55 -18
  37. data/lib/applitools/chunky_png/resampling.rb +0 -51
  38. data/lib/applitools/chunky_png_patch.rb +0 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2266ac45e6dae719ab54835cf538c92dcc1e26e6
4
- data.tar.gz: 7b979f33539ba0b24134bbea48ff41e969c2b889
3
+ metadata.gz: e1794c043c986eae53c0ec2f544c3927d23e8e35
4
+ data.tar.gz: cdabd0d4c839a670abfe72a506d10ac0328e0fa5
5
5
  SHA512:
6
- metadata.gz: 64183d05aa34724a51c7574d20ffad6488fcbb4d469f142a1d866f4031751bd23adf025bbd2b6b49620885e92770411101a4b96225696d1ee17c57b0c5209ef4
7
- data.tar.gz: 583ce8369b5cfae7b339a7c9b7c68a12d47e590c2e74ee3af7cb4d56d54a5be586bc23933f551f27d698dd138e14f400d6cd259648d175c23e0a2855c68c3ed2
6
+ metadata.gz: abb2ce4f8d46e97979e7e68d075ab5d910512d208c46f6202096e40d8bbe4c4411ded61ceff4e55496b6941d1579ef463917b69803fcdfc196d5fe14c95fee87
7
+ data.tar.gz: 96637eb89ef8c1604aa330eecb3b4155f0aae98d98221008c2bd0e73508881c9b9cd5230c7a6e05c3886fbdc3e1aefb7e767362140bdd8d048d95eb739b15c2a
@@ -36,6 +36,7 @@ class Applitools::Appium::Eyes < Applitools::Selenium::SeleniumEyes
36
36
  self.tag_for_debug = name
37
37
  Applitools::ArgumentGuard.one_of? target, 'target', [Applitools::Selenium::Target, Applitools::Appium::Target]
38
38
 
39
+ return universal_check(name, target)
39
40
  return check_native(name, target) if native_app?
40
41
  super
41
42
  end
@@ -83,8 +84,8 @@ class Applitools::Appium::Eyes < Applitools::Selenium::SeleniumEyes
83
84
  self.screenshot = screenshot_class.new(
84
85
  Applitools::Screenshot.from_image(
85
86
  case scaled_image
86
- when ChunkyPNG::Image
87
- scaled_image
87
+ # when ChunkyPNG::Image
88
+ # scaled_image
88
89
  when Applitools::Screenshot::Datastream
89
90
  scaled_image.image
90
91
  else
@@ -2,207 +2,232 @@
2
2
 
3
3
  module Applitools
4
4
  module Appium
5
- class Target
6
- include Applitools::FluentInterface
7
- attr_accessor :region_to_check, :options, :ignored_regions, :floating_regions, :layout_regions, :content_regions, :strict_regions, :accessibility_regions
8
-
9
- class << self
10
- def window
11
- new
12
- end
13
-
14
- def region(*args)
15
- new.region(*args)
16
- end
17
- end
18
-
19
- def initialize
20
- self.region_to_check = proc { Applitools::Region::EMPTY }
21
- self.ignored_regions = []
22
- self.floating_regions = []
23
- self.layout_regions = []
24
- self.content_regions = []
25
- self.strict_regions = []
26
- self.accessibility_regions = []
27
- self.options = {}
28
- end
29
-
30
- def region(*args)
31
- self.region_to_check = case args.first
32
- when ::Selenium::WebDriver::Element
33
- proc { args.first }
34
- else
35
- proc do |driver|
36
- driver.find_element(*args)
37
- end
38
- end
39
- self
40
- end
5
+ class Target < Applitools::Selenium::Target
41
6
 
42
7
  def ignore(*args)
43
- requested_padding = if args.last.is_a? Applitools::PaddingBounds
44
- args.pop
45
- else
46
- Applitools::PaddingBounds::ZERO_PADDING
47
- end
48
- ignored_regions << case (first_argument = args.first)
49
- when ::Selenium::WebDriver::Element
50
- proc do
51
- Applitools::Region
52
- .from_location_size(first_argument.location, first_argument.size)
53
- .padding(requested_padding)
54
- end
55
- when Applitools::Region
56
- result = first_argument.padding(requested_padding)
57
- if Applitools::Appium::Utils.ios?(Applitools::Appium::Driver::AppiumLib)
58
- def result.converted?
59
- true
60
- end
61
- end
62
- result
63
- else
64
- proc do |driver|
65
- element = driver.find_element(*args)
66
- Applitools::Region
67
- .from_location_size(element.location, element.size)
68
- .padding(requested_padding)
69
- end
70
- end
71
- self
72
- end
73
-
74
- def floating(*args)
75
- value = case args.first
76
- when Applitools::FloatingRegion
77
- args.first
78
- when Applitools::Region
79
- result = Applitools::FloatingRegion.any(*args)
80
- if Applitools::Appium::Utils.ios?(Applitools::Appium::Driver::AppiumLib)
81
- def result.converted?
82
- true
83
- end
84
- end
85
- result
86
- when ::Selenium::WebDriver::Element
87
- args_dup = args.dup
88
- Applitools::FloatingRegion.any(*args_dup)
89
- else
90
- proc do |driver|
91
- args_dup = args.dup
92
- region = driver.find_element(args_dup.shift, args_dup.shift)
93
- Applitools::FloatingRegion.any(
94
- region, *args_dup
95
- )
96
- end
97
- end
98
- floating_regions << value
99
- self
100
- end
101
-
102
- def layout
103
- return match_level(Applitools::MatchLevel::LAYOUT) if args.empty?
104
- region = process_region(*args)
105
- layout_regions << region
106
- self
107
-
108
- end
109
-
110
- def content(*args)
111
- return match_level(Applitools::MatchLevel::CONTENT) if args.empty?
112
- region = process_region(*args)
113
- content_regions << region
114
- self
115
- end
116
-
117
- def strict(*args)
118
- return match_level(Applitools::MatchLevel::STRICT) if args.empty?
119
- region = process_region(*args)
120
- strict_regions << region
121
- self
122
- end
123
-
124
- def exact(*args)
125
- match_level(Applitools::MatchLevel::EXACT, *args)
126
- end
127
-
128
- def accessibility(*args)
129
- options = Applitools::Utils.extract_options! args
130
- unless options[:type]
131
- raise Applitools::EyesError,
132
- 'You should call Target.accessibility(region, type: type). The region_type option is required'
133
- end
134
- unless Applitools::AccessibilityRegionType.enum_values.include?(options[:type])
135
- raise Applitools::EyesIllegalArgument,
136
- "The region type should be one of [#{Applitools::AccessibilityRegionType.enum_values.join(', ')}]"
8
+ if args.empty?
9
+ reset_ignore
10
+ else
11
+ value = convert_to_universal(args)
12
+ value = { type: args[0], selector: args[1] } if value.nil?
13
+ # value = value[:selector] if value.is_a?(Hash) && (value[:type].to_s === 'id') && !is_a?(Applitools::Appium::Target)
14
+ ignored_regions << value
137
15
  end
138
-
139
- accessibility_regions << case args.first
140
- when ::Selenium::WebDriver::Element
141
- element = args.first
142
- Applitools::AccessibilityRegion.new(
143
- element,
144
- options[:type]
145
- )
146
- when Applitools::Region
147
- result = Applitools::AccessibilityRegion.new(
148
- args.first, options[:type]
149
- )
150
- if Applitools::Appium::Utils.ios?(Applitools::Appium::Driver::AppiumLib)
151
- def result.converted?
152
- true
153
- end
154
- end
155
- result
156
- when String
157
- proc do |driver|
158
- element = driver.find_element(name_or_id: args.first)
159
- Applitools::AccessibilityRegion.new(
160
- element,
161
- options[:type]
162
- )
163
- end
164
- else
165
- proc do |driver|
166
- elements = driver.find_elements(*args)
167
- elements.map do |e|
168
- Applitools::AccessibilityRegion.new(
169
- e,
170
- options[:type]
171
- )
172
- end
173
- end
174
- end
175
16
  self
176
17
  end
177
18
 
178
- def finalize
19
+ def region(*args)
20
+ value = convert_to_universal(args)
21
+ value = { type: args[0], selector: args[1] } if value.nil?
22
+ # value = value[:selector] if value.is_a?(Hash) && (value[:type].to_s === 'id') && !is_a?(Applitools::Appium::Target)
23
+ self.region_to_check = value
24
+ self.coordinate_type = Applitools::EyesScreenshot::COORDINATE_TYPES[:context_relative]
25
+ options[:timeout] = nil
26
+ reset_ignore
27
+ reset_floating
179
28
  self
180
29
  end
181
-
182
- private
183
-
184
- def process_region(*args)
185
- r = args.first
186
- case r
187
- when ::Selenium::WebDriver::Element
188
- proc do |driver|
189
- Applitools::Region.from_location_size(r.location, r.size)
190
- end
191
- when Applitools::Region
192
- if Applitools::Appium::Utils.ios?(Applitools::Appium::Driver::AppiumLib)
193
- def r.converted?
194
- true
195
- end
196
- end
197
- r
198
- else
199
- proc do |driver|
200
- element = driver.find_element(*args)
201
- Applitools::Region.from_location_size(element.location, element.size)
202
- end
203
- end
204
- end
205
-
30
+ # class Target
31
+ # include Applitools::FluentInterface
32
+ # attr_accessor :region_to_check, :options, :ignored_regions, :floating_regions, :layout_regions, :content_regions, :strict_regions, :accessibility_regions
33
+ #
34
+ # class << self
35
+ # def window
36
+ # new
37
+ # end
38
+ #
39
+ # def region(*args)
40
+ # new.region(*args)
41
+ # end
42
+ # end
43
+ #
44
+ # def initialize
45
+ # self.region_to_check = proc { Applitools::Region::EMPTY }
46
+ # self.ignored_regions = []
47
+ # self.floating_regions = []
48
+ # self.layout_regions = []
49
+ # self.content_regions = []
50
+ # self.strict_regions = []
51
+ # self.accessibility_regions = []
52
+ # self.options = {}
53
+ # end
54
+ #
55
+ # def region(*args)
56
+ # self.region_to_check = case args.first
57
+ # when ::Selenium::WebDriver::Element
58
+ # proc { args.first }
59
+ # else
60
+ # proc do |driver|
61
+ # driver.find_element(*args)
62
+ # end
63
+ # end
64
+ # self
65
+ # end
66
+ #
67
+ # def ignore(*args)
68
+ # requested_padding = if args.last.is_a? Applitools::PaddingBounds
69
+ # args.pop
70
+ # else
71
+ # Applitools::PaddingBounds::ZERO_PADDING
72
+ # end
73
+ # ignored_regions << case (first_argument = args.first)
74
+ # when ::Selenium::WebDriver::Element
75
+ # proc do
76
+ # Applitools::Region
77
+ # .from_location_size(first_argument.location, first_argument.size)
78
+ # .padding(requested_padding)
79
+ # end
80
+ # when Applitools::Region
81
+ # result = first_argument.padding(requested_padding)
82
+ # if Applitools::Appium::Utils.ios?(Applitools::Appium::Driver::AppiumLib)
83
+ # def result.converted?
84
+ # true
85
+ # end
86
+ # end
87
+ # result
88
+ # else
89
+ # proc do |driver|
90
+ # element = driver.find_element(*args)
91
+ # Applitools::Region
92
+ # .from_location_size(element.location, element.size)
93
+ # .padding(requested_padding)
94
+ # end
95
+ # end
96
+ # self
97
+ # end
98
+ #
99
+ # def floating(*args)
100
+ # value = case args.first
101
+ # when Applitools::FloatingRegion
102
+ # args.first
103
+ # when Applitools::Region
104
+ # result = Applitools::FloatingRegion.any(*args)
105
+ # if Applitools::Appium::Utils.ios?(Applitools::Appium::Driver::AppiumLib)
106
+ # def result.converted?
107
+ # true
108
+ # end
109
+ # end
110
+ # result
111
+ # when ::Selenium::WebDriver::Element
112
+ # args_dup = args.dup
113
+ # Applitools::FloatingRegion.any(*args_dup)
114
+ # else
115
+ # proc do |driver|
116
+ # args_dup = args.dup
117
+ # region = driver.find_element(args_dup.shift, args_dup.shift)
118
+ # Applitools::FloatingRegion.any(
119
+ # region, *args_dup
120
+ # )
121
+ # end
122
+ # end
123
+ # floating_regions << value
124
+ # self
125
+ # end
126
+ #
127
+ # def layout
128
+ # return match_level(Applitools::MatchLevel::LAYOUT) if args.empty?
129
+ # region = process_region(*args)
130
+ # layout_regions << region
131
+ # self
132
+ #
133
+ # end
134
+ #
135
+ # def content(*args)
136
+ # return match_level(Applitools::MatchLevel::CONTENT) if args.empty?
137
+ # region = process_region(*args)
138
+ # content_regions << region
139
+ # self
140
+ # end
141
+ #
142
+ # def strict(*args)
143
+ # return match_level(Applitools::MatchLevel::STRICT) if args.empty?
144
+ # region = process_region(*args)
145
+ # strict_regions << region
146
+ # self
147
+ # end
148
+ #
149
+ # def exact(*args)
150
+ # match_level(Applitools::MatchLevel::EXACT, *args)
151
+ # end
152
+ #
153
+ # def accessibility(*args)
154
+ # options = Applitools::Utils.extract_options! args
155
+ # unless options[:type]
156
+ # raise Applitools::EyesError,
157
+ # 'You should call Target.accessibility(region, type: type). The region_type option is required'
158
+ # end
159
+ # unless Applitools::AccessibilityRegionType.enum_values.include?(options[:type])
160
+ # raise Applitools::EyesIllegalArgument,
161
+ # "The region type should be one of [#{Applitools::AccessibilityRegionType.enum_values.join(', ')}]"
162
+ # end
163
+ #
164
+ # accessibility_regions << case args.first
165
+ # when ::Selenium::WebDriver::Element
166
+ # element = args.first
167
+ # Applitools::AccessibilityRegion.new(
168
+ # element,
169
+ # options[:type]
170
+ # )
171
+ # when Applitools::Region
172
+ # result = Applitools::AccessibilityRegion.new(
173
+ # args.first, options[:type]
174
+ # )
175
+ # if Applitools::Appium::Utils.ios?(Applitools::Appium::Driver::AppiumLib)
176
+ # def result.converted?
177
+ # true
178
+ # end
179
+ # end
180
+ # result
181
+ # when String
182
+ # proc do |driver|
183
+ # element = driver.find_element(name_or_id: args.first)
184
+ # Applitools::AccessibilityRegion.new(
185
+ # element,
186
+ # options[:type]
187
+ # )
188
+ # end
189
+ # else
190
+ # proc do |driver|
191
+ # elements = driver.find_elements(*args)
192
+ # elements.map do |e|
193
+ # Applitools::AccessibilityRegion.new(
194
+ # e,
195
+ # options[:type]
196
+ # )
197
+ # end
198
+ # end
199
+ # end
200
+ # self
201
+ # end
202
+ #
203
+ # def finalize
204
+ # self
205
+ # end
206
+ #
207
+ # private
208
+ #
209
+ # def process_region(*args)
210
+ # r = args.first
211
+ # case r
212
+ # when ::Selenium::WebDriver::Element
213
+ # proc do |driver|
214
+ # Applitools::Region.from_location_size(r.location, r.size)
215
+ # end
216
+ # when Applitools::Region
217
+ # if Applitools::Appium::Utils.ios?(Applitools::Appium::Driver::AppiumLib)
218
+ # def r.converted?
219
+ # true
220
+ # end
221
+ # end
222
+ # r
223
+ # else
224
+ # proc do |driver|
225
+ # element = driver.find_element(*args)
226
+ # Applitools::Region.from_location_size(element.location, element.size)
227
+ # end
228
+ # end
229
+ # end
230
+ #
206
231
  end
207
232
  end
208
233
  end
@@ -44,19 +44,19 @@ module Applitools
44
44
  def capture_screenshot(options = {})
45
45
  sleep WAIT_BEFORE_SCREENSHOT
46
46
  result = nil
47
- Applitools::Calabash::Utils.using_screenshot(context) do |screenshot_path|
48
- screenshot = ::ChunkyPNG::Image.from_file(screenshot_path)
49
- save_debug_screenshot(screenshot, ['original', options[:debug_suffix]])
50
- viewport_size = Applitools::Calabash::EyesSettings.instance.viewport_size
51
- screenshot.crop!(0, 0, viewport_size[:width], viewport_size[:height])
52
- save_debug_screenshot(screenshot, ['cropped', options[:debug_suffix]])
53
- result = Applitools::Calabash::EyesCalabashAndroidScreenshot.new(
54
- Applitools::Screenshot.from_image(
55
- screenshot
56
- ),
57
- density: density
58
- )
59
- end
47
+ # Applitools::Calabash::Utils.using_screenshot(context) do |screenshot_path|
48
+ # screenshot = ::ChunkyPNG::Image.from_file(screenshot_path)
49
+ # save_debug_screenshot(screenshot, ['original', options[:debug_suffix]])
50
+ # viewport_size = Applitools::Calabash::EyesSettings.instance.viewport_size
51
+ # screenshot.crop!(0, 0, viewport_size[:width], viewport_size[:height])
52
+ # save_debug_screenshot(screenshot, ['cropped', options[:debug_suffix]])
53
+ # result = Applitools::Calabash::EyesCalabashAndroidScreenshot.new(
54
+ # Applitools::Screenshot.from_image(
55
+ # screenshot
56
+ # ),
57
+ # density: density
58
+ # )
59
+ # end
60
60
  result
61
61
  end
62
62
  end
@@ -66,16 +66,16 @@ module Applitools
66
66
  def capture_screenshot(options = {})
67
67
  sleep WAIT_BEFORE_SCREENSHOT
68
68
  result = nil
69
- Applitools::Calabash::Utils.using_screenshot(context) do |screenshot_path|
70
- screenshot = ::ChunkyPNG::Image.from_file(screenshot_path)
71
- save_debug_screenshot(screenshot, options[:debug_suffix])
72
- result = Applitools::Calabash::EyesCalabashIosScreenshot.new(
73
- Applitools::Screenshot.from_image(
74
- screenshot
75
- ),
76
- scale_factor: density
77
- )
78
- end
69
+ # Applitools::Calabash::Utils.using_screenshot(context) do |screenshot_path|
70
+ # screenshot = ::ChunkyPNG::Image.from_file(screenshot_path)
71
+ # save_debug_screenshot(screenshot, options[:debug_suffix])
72
+ # result = Applitools::Calabash::EyesCalabashIosScreenshot.new(
73
+ # Applitools::Screenshot.from_image(
74
+ # screenshot
75
+ # ),
76
+ # scale_factor: density
77
+ # )
78
+ # end
79
79
  result
80
80
  end
81
81
  end
@@ -30,7 +30,7 @@ module Applitools
30
30
 
31
31
  def create_entire_image
32
32
  current_entire_size = entire_size
33
- @stitched_image = ::ChunkyPNG::Image.new(current_entire_size.width, current_entire_size.height)
33
+ # @stitched_image = ::ChunkyPNG::Image.new(current_entire_size.width, current_entire_size.height)
34
34
  end
35
35
 
36
36
  def entire_content
@@ -1,12 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Applitools::Connectivity
4
- Proxy = Struct.new(:uri, :user, :password) do
4
+ Proxy = Struct.new(:uri, :user, :password, :is_http_only) do
5
+ # export type Proxy = {
6
+ # url: string
7
+ # username?: string
8
+ # password?: string
9
+ # isHttpOnly?: boolean
10
+ # }
5
11
  def to_hash
6
12
  result = {}
7
- result[:uri] = uri.is_a?(URI) ? uri : URI(uri)
8
- result[:user] = user unless user.nil?
13
+ result[:url] = uri.is_a?(String) ? uri : uri.to_s
14
+ result[:username] = user unless user.nil?
9
15
  result[:password] = password unless password.nil?
16
+ result[:isHttpOnly] = !!is_http_only unless is_http_only.nil?
10
17
  result
11
18
  end
12
19
 
@@ -19,3 +26,4 @@ module Applitools::Connectivity
19
26
  end
20
27
  end
21
28
  end
29
+ # U-Notes : add is_http_only/isHttpOnly flag
@@ -310,10 +310,11 @@ module Applitools::Connectivity
310
310
  private
311
311
 
312
312
  def faraday_connection(url, pass_user_agent_header = true)
313
+ raise Applitools::NotUniversalServerRequestError.new(url)
313
314
  Faraday.new(
314
315
  url: url,
315
316
  ssl: { ca_file: SSL_CERT },
316
- proxy: @proxy.nil? ? nil : @proxy.to_hash
317
+ proxy: @proxy.nil? ? nil : {uri: @proxy.uri}
317
318
  ) do |faraday|
318
319
  if pass_user_agent_header
319
320
  faraday.use(
@@ -42,5 +42,16 @@ module Applitools
42
42
  def json_data
43
43
  to_h
44
44
  end
45
+
46
+ # accessibilitySettings?: {
47
+ # level?: AccessibilityLevel
48
+ # guidelinesVersion?: AccessibilityGuidelinesVersion
49
+ # }
50
+ def to_hash
51
+ {
52
+ level: level,
53
+ guidelinesVersion: version
54
+ }
55
+ end
45
56
  end
46
57
  end
@@ -4,6 +4,8 @@ require 'securerandom'
4
4
  require 'applitools/utils/utils'
5
5
  require_relative 'helpers'
6
6
 
7
+ PROCESS_DEFAULT_BATCH_ID = SecureRandom.uuid # Unique per-process
8
+
7
9
  module Applitools
8
10
  class BatchInfo
9
11
  extend Helpers
@@ -30,7 +32,7 @@ module Applitools
30
32
  if id
31
33
  self.id = id
32
34
  elsif self.id.nil? || self.id.empty?
33
- self.id = SecureRandom.uuid
35
+ self.id = PROCESS_DEFAULT_BATCH_ID
34
36
  end
35
37
  self.properties = properties if properties
36
38
  self.notify_on_completion = 'true'.casecmp(env_notify_on_completion || '') == 0 ? true : false
@@ -47,8 +49,27 @@ module Applitools
47
49
  }
48
50
  end
49
51
 
52
+ # export type Batch = {
53
+ # id?: string
54
+ # name?: string
55
+ # sequenceName?: string
56
+ # startedAt?: Date | string
57
+ # notifyOnCompletion?: boolean
58
+ # properties?: CustomProperty[]
59
+ # }
60
+ # export type CustomProperty = {
61
+ # name: string
62
+ # value: string
63
+ # }
50
64
  def to_hash
51
- json_data
65
+ {
66
+ id: id,
67
+ name: name, # 'Ruby Coverage Tests',
68
+ startedAt: @started_at.iso8601,
69
+ sequenceName: sequence_name,
70
+ notifyOnCompletion: notify_on_completion,
71
+ properties: properties
72
+ }.compact
52
73
  end
53
74
 
54
75
  def to_s
@@ -56,3 +77,4 @@ module Applitools
56
77
  end
57
78
  end
58
79
  end
80
+ # U-Notes : change 'batchSequenceName' to 'sequenceName'
@@ -29,11 +29,19 @@ module Applitools
29
29
  ensure
30
30
  delete_all_batches
31
31
  end
32
- all_test_results
32
+ return all_test_results unless all_test_results.empty?
33
+ all_universal_results = close_all_eyes
34
+ test_result_summary = Applitools::TestResultSummary.new(all_universal_results).old_style_results_array
35
+ return [] if test_result_summary.reject { |tr| tr.aborted? }.empty?
36
+ test_result_summary
33
37
  end
34
38
 
35
39
  def rendering_info(connector)
36
40
  @rendering_info ||= RenderingInfo.new(connector.rendering_info)
37
41
  end
42
+
43
+ def universal_eyes_manager_config
44
+ Applitools::UniversalEyesManagerConfig.classic
45
+ end
38
46
  end
39
47
  end
@@ -13,12 +13,12 @@ module Applitools
13
13
  def save(image, suffix = '')
14
14
  return unless debug
15
15
  case image
16
- when ::ChunkyPNG::Image, Applitools::Screenshot
16
+ when Applitools::Screenshot
17
17
  image.save(file_name_to_save(suffix)) if image.area > 0
18
18
  when Applitools::EyesScreenshot
19
19
  image.image.save(file_name_to_save(suffix)) if image.image.area > 0
20
- when String
21
- ::ChunkyPNG::Image.from_string(image).save(file_name_to_save(suffix))
20
+ # when String
21
+ # ::ChunkyPNG::Image.from_string(image).save(file_name_to_save(suffix))
22
22
  else
23
23
  return
24
24
  end