eyes_core 4.4.1 → 4.5.0.beta
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 +1 -1
- data/lib/applitools/core/floating_region.rb +16 -12
- data/lib/applitools/core/match_level.rb +2 -1
- data/lib/applitools/core/test_result_summary.rb +1 -1
- data/lib/applitools/core/universal_eyes_checks.rb +5 -2
- data/lib/applitools/core/universal_eyes_open.rb +14 -8
- data/lib/applitools/core/universal_new_api.rb +12 -4
- data/lib/applitools/universal_sdk/universal_check_settings.rb +42 -0
- data/lib/applitools/universal_sdk/universal_client.rb +186 -36
- data/lib/applitools/universal_sdk/universal_eyes.rb +8 -8
- data/lib/applitools/universal_sdk/universal_eyes_config.rb +45 -1
- data/lib/applitools/universal_sdk/universal_eyes_manager_config.rb +1 -1
- data/lib/applitools/version.rb +3 -2
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb4470a9e790799f337bf3649c9d1d815b78933e1cdd394e14f02c1fcb1e9707
|
4
|
+
data.tar.gz: 8a54d18a05cafc611d51b689dcf3b47db26e7ee8c7be1fec3ff2e77b007ed2f2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9bbb9b54179c3d535a981e26d5ddfde2bc88be6e378074b635ff7796c2cf1ffa1b176b5d74a35e9b03b0d6d9e9ce6241149e92ccaf2b81e33ac59bb81f7e9568
|
7
|
+
data.tar.gz: 7052cf337483264abfaf9d495c3f6a6c83381266ae17cde752c589c193df264afd72f82178077400bbd67ac1b72f58e446a741046c793f06dbcf83c48e8f67fe
|
@@ -21,7 +21,7 @@ module Applitools::Connectivity
|
|
21
21
|
DEFAULT_SERVER_URL = 'https://eyesapi.applitools.com'.freeze
|
22
22
|
|
23
23
|
SSL_CERT = File.join(File.dirname(File.expand_path(__FILE__)), '../../../certs/cacert.pem').to_s.freeze
|
24
|
-
DEFAULT_TIMEOUT =
|
24
|
+
DEFAULT_TIMEOUT = 300_000
|
25
25
|
API_SESSIONS = '/api/sessions'.freeze
|
26
26
|
API_SESSIONS_RUNNING = API_SESSIONS + '/running/'.freeze
|
27
27
|
API_SINGLE_TEST = API_SESSIONS + '/'.freeze
|
@@ -93,14 +93,16 @@ module Applitools
|
|
93
93
|
|
94
94
|
def to_hash
|
95
95
|
{
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
96
|
+
x: left,
|
97
|
+
y: top,
|
98
|
+
width: width,
|
99
|
+
height: height,
|
100
|
+
offset: {
|
101
|
+
top: max_top_offset + padding_top,
|
102
|
+
bottom: max_bottom_offset + padding_bottom,
|
103
|
+
left: max_left_offset + padding_left,
|
104
|
+
right: max_right_offset + padding_right
|
105
|
+
}
|
104
106
|
}
|
105
107
|
end
|
106
108
|
end
|
@@ -126,10 +128,12 @@ module Applitools
|
|
126
128
|
|
127
129
|
def to_hash
|
128
130
|
{
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
131
|
+
offset: {
|
132
|
+
top: max_top_offset,
|
133
|
+
bottom: max_bottom_offset,
|
134
|
+
left: max_left_offset,
|
135
|
+
right: max_right_offset
|
136
|
+
}
|
133
137
|
}
|
134
138
|
end
|
135
139
|
end
|
@@ -8,11 +8,12 @@ module Applitools
|
|
8
8
|
LAYOUT1 = 'Layout1'.freeze
|
9
9
|
LAYOUT2 = 'Layout2'.freeze
|
10
10
|
CONTENT = 'Content'.freeze
|
11
|
+
IGNORE_COLORS = 'IgnoreColors'.freeze
|
11
12
|
STRICT = 'Strict'.freeze
|
12
13
|
EXACT = 'Exact'.freeze
|
13
14
|
|
14
15
|
def enum_values
|
15
|
-
[NONE, LAYOUT, LAYOUT1, LAYOUT2, CONTENT, STRICT, EXACT]
|
16
|
+
[NONE, LAYOUT, LAYOUT1, LAYOUT2, CONTENT, IGNORE_COLORS, STRICT, EXACT]
|
16
17
|
end
|
17
18
|
end
|
18
19
|
end
|
@@ -13,9 +13,11 @@ module Applitools
|
|
13
13
|
|
14
14
|
raise Applitools::EyesNotOpenException.new('Eyes not open!') if @universal_eyes.nil?
|
15
15
|
Applitools::EyesLogger.logger.info "#{test_name} : check(#{name}) started ..."
|
16
|
+
settings = get_universal_check_settings(name, target)
|
17
|
+
image_target = settings[:image].nil? ? {} : { image: settings.delete(:image) }
|
16
18
|
# require 'pry'
|
17
19
|
# binding.pry
|
18
|
-
check_result = @universal_eyes.check(
|
20
|
+
check_result = @universal_eyes.check(settings, image_target)
|
19
21
|
if server_error?(check_result)
|
20
22
|
# require 'pry'
|
21
23
|
# binding.pry
|
@@ -23,12 +25,13 @@ module Applitools
|
|
23
25
|
end
|
24
26
|
|
25
27
|
if check_result != {}
|
26
|
-
result = Applitools::MatchResult.new(Applitools::Utils.deep_stringify_keys(check_result))
|
28
|
+
result = Applitools::MatchResult.new(Applitools::Utils.deep_stringify_keys(check_result[0]))
|
27
29
|
|
28
30
|
check_fail_result_processing(name) unless result.as_expected?
|
29
31
|
end
|
30
32
|
|
31
33
|
logger.info 'Done!'
|
34
|
+
result
|
32
35
|
end
|
33
36
|
|
34
37
|
private
|
@@ -18,17 +18,19 @@ module Applitools
|
|
18
18
|
# trigger recording and frame handling
|
19
19
|
def universal_open(options = {})
|
20
20
|
original_driver = options.delete(:driver)
|
21
|
-
|
21
|
+
if self.class.name != 'Applitools::Images::Eyes'
|
22
|
+
Applitools::ArgumentGuard.not_nil original_driver, 'options[:driver]'
|
22
23
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
if respond_to?(:disabled?) && disabled?
|
25
|
+
logger.info('Ignored')
|
26
|
+
return original_driver
|
27
|
+
end
|
27
28
|
|
28
|
-
|
29
|
+
self.driver = Applitools::Selenium::SeleniumEyes.eyes_driver(original_driver, self)
|
30
|
+
end
|
29
31
|
|
30
32
|
update_config_from_options(options)
|
31
|
-
universal_driver_config = driver.universal_driver_config
|
33
|
+
universal_driver_config = driver.universal_driver_config if self.class.name != 'Applitools::Images::Eyes'
|
32
34
|
universal_eyes_manager = runner.get_universal_eyes_manager
|
33
35
|
|
34
36
|
universal_eyes_config = Applitools::UniversalEyesConfig.new
|
@@ -42,7 +44,11 @@ module Applitools
|
|
42
44
|
|
43
45
|
self.open = true if respond_to?(:open=, true)
|
44
46
|
self.running_session = true if respond_to?(:running_session=, true)
|
45
|
-
|
47
|
+
if self.class.name != 'Applitools::Images::Eyes'
|
48
|
+
driver
|
49
|
+
else
|
50
|
+
self.open?
|
51
|
+
end
|
46
52
|
rescue Applitools::EyesError => e
|
47
53
|
logger.error e.message
|
48
54
|
raise e
|
@@ -9,12 +9,18 @@ module Applitools
|
|
9
9
|
# minMatch?: number
|
10
10
|
# language?: string
|
11
11
|
# }
|
12
|
-
def extract_text(
|
12
|
+
def extract_text(*args)
|
13
|
+
image_target = args[0].is_a?(Hash) ? args[0] : nil
|
14
|
+
targets_array = args[0].is_a?(Hash) ? args[1].to_a : args[0]
|
13
15
|
targets_array.map do |target|
|
14
16
|
target['target'] = { elementId: target['target'].ref } if target['target'].is_a?(::Selenium::WebDriver::Element)
|
17
|
+
target['target']['x'] = target['target'].delete('left') if target['target']['left']
|
18
|
+
target['target']['y'] = target['target'].delete('top') if target['target']['top']
|
19
|
+
target[:region] = target.delete('target')
|
15
20
|
target
|
16
21
|
end
|
17
|
-
|
22
|
+
driver_target = respond_to?(:driver) ? driver.universal_driver_config : image_target
|
23
|
+
universal_eyes.extract_text(targets_array, driver_target)
|
18
24
|
end
|
19
25
|
|
20
26
|
|
@@ -25,7 +31,8 @@ module Applitools
|
|
25
31
|
# language?: string
|
26
32
|
# }
|
27
33
|
def extract_text_regions(patterns_array)
|
28
|
-
|
34
|
+
driver_target = respond_to?(:driver) ? driver.universal_driver_config : { image: patterns_array.delete('image') }
|
35
|
+
results = universal_eyes.extract_text_regions(patterns_array, driver_target)
|
29
36
|
Applitools::Utils.deep_stringify_keys(results)
|
30
37
|
end
|
31
38
|
|
@@ -35,7 +42,8 @@ module Applitools
|
|
35
42
|
locatorNames: locate_settings[:locator_names],
|
36
43
|
firstOnly: !!locate_settings[:first_only]
|
37
44
|
}
|
38
|
-
|
45
|
+
driver_target = driver.universal_driver_config
|
46
|
+
results = universal_eyes.locate(settings, driver_target)
|
39
47
|
Applitools::Utils.deep_stringify_keys(results)
|
40
48
|
end
|
41
49
|
|
@@ -80,6 +80,19 @@ module Applitools
|
|
80
80
|
:scrollRootElement,
|
81
81
|
:fully
|
82
82
|
|
83
|
+
# v3
|
84
|
+
json_fields :ufgOptions,
|
85
|
+
:userCommandId
|
86
|
+
|
87
|
+
# ImageTarget
|
88
|
+
json_fields :image
|
89
|
+
# :name,
|
90
|
+
# :source,
|
91
|
+
# :dom,
|
92
|
+
# :locationInViewport,
|
93
|
+
# :locationInView,
|
94
|
+
# :fullViewSize
|
95
|
+
|
83
96
|
def initialize(*args)
|
84
97
|
options = Applitools::Utils.extract_options! args
|
85
98
|
options.keys.select {|k| options[k] && respond_to?("#{k}=") }.each {|k| send("#{k}=", options[k]) }
|
@@ -100,6 +113,7 @@ module Applitools
|
|
100
113
|
def from_original_target(target, eyes)
|
101
114
|
# require('pry')
|
102
115
|
# binding.pry
|
116
|
+
return from_eyes_images(target, eyes) if eyes.class.name === 'Applitools::Images::Eyes'
|
103
117
|
|
104
118
|
self.accessibility_settings = eyes.accessibility_validation
|
105
119
|
self.disable_browser_fetching = eyes.dont_fetch_resources
|
@@ -160,11 +174,39 @@ module Applitools
|
|
160
174
|
self.send_dom = from_target_options_or_eyes(:send_dom, target.options, eyes)
|
161
175
|
self.use_dom = from_target_options_or_eyes(:use_dom, target.options, eyes)
|
162
176
|
self.visual_grid_options = from_target_options_or_eyes(:visual_grid_options, target.options, eyes)
|
177
|
+
self.ufg_options = self.visual_grid_options
|
178
|
+
self.user_command_id = self.variation_group_id
|
179
|
+
|
180
|
+
self.image = target.image if target.respond_to?(:image)
|
163
181
|
# rescue => e
|
164
182
|
# require('pry')
|
165
183
|
# binding.pry
|
166
184
|
end
|
167
185
|
|
186
|
+
def from_eyes_images(target, eyes)
|
187
|
+
self.accessibility_settings = eyes.accessibility_validation
|
188
|
+
self.disable_browser_fetching = eyes.dont_fetch_resources
|
189
|
+
self.accessibility_regions = target.accessibility_regions
|
190
|
+
self.floating_regions = target.floating_regions
|
191
|
+
|
192
|
+
self.ignore_regions = target.ignored_regions.map do |ir|
|
193
|
+
ir.is_a?(Proc) ? normalize_element_selector(ir.call(eyes.driver)) : ir
|
194
|
+
end
|
195
|
+
|
196
|
+
if target.region_to_check.is_a?(Hash)
|
197
|
+
self.region = target.region_to_check
|
198
|
+
elsif target.region_to_check.is_a?(String)
|
199
|
+
self.region = target.region_to_check
|
200
|
+
elsif target.region_to_check.is_a?(Proc)
|
201
|
+
el = target.region_to_check.call(eyes.driver)
|
202
|
+
self.region = normalize_element_selector(el) unless el.respond_to?(:empty?) && el.empty?
|
203
|
+
end
|
204
|
+
|
205
|
+
self.exact = (target.options[:exact] && target.options[:exact].to_hash) || (eyes.exact && eyes.exact.to_hash)
|
206
|
+
|
207
|
+
self.image = target.image
|
208
|
+
end
|
209
|
+
|
168
210
|
def to_hash
|
169
211
|
json_data.compact.reject do |_, v|
|
170
212
|
case v
|
@@ -16,29 +16,37 @@ module Applitools::Connectivity
|
|
16
16
|
extend Forwardable
|
17
17
|
def_delegators 'Applitools::EyesLogger', :logger
|
18
18
|
|
19
|
-
SESSION_INIT = 'Core.
|
19
|
+
SESSION_INIT = 'Core.makeCore'
|
20
20
|
|
21
21
|
CORE_MAKE_MANAGER = 'Core.makeManager'
|
22
22
|
CORE_GET_VIEWPORT_SIZE = 'Core.getViewportSize'
|
23
23
|
CORE_SET_VIEWPORT_SIZE = 'Core.setViewportSize'
|
24
|
-
CORE_CLOSE_BATCHES = 'Core.
|
24
|
+
CORE_CLOSE_BATCHES = 'Core.closeBatch'
|
25
25
|
CORE_DELETE_TEST = 'Core.deleteTest'
|
26
26
|
|
27
27
|
EYES_MANAGER_MAKE_EYES = 'EyesManager.openEyes'
|
28
28
|
EYES_MANAGER_CLOSE_ALL_EYES = 'EyesManager.closeManager'
|
29
29
|
EYES_CHECK = 'Eyes.check'
|
30
|
-
|
31
|
-
|
30
|
+
EYES_CHECK_AND_CLOSE = 'Eyes.checkAndClose' # ...
|
31
|
+
EYES_LOCATE = 'Core.locate'
|
32
|
+
EYES_EXTRACT_TEXT_REGIONS = 'Eyes.locateText'
|
32
33
|
EYES_EXTRACT_TEXT = 'Eyes.extractText'
|
33
34
|
EYES_CLOSE = 'Eyes.close'
|
34
35
|
EYES_ABORT = 'Eyes.abort'
|
35
36
|
|
37
|
+
attr_accessor :commands_config
|
36
38
|
|
37
39
|
def initialize
|
38
40
|
# @socket = Applitools::Connectivity::UniversalClientSocket.new
|
39
41
|
prepare_socket
|
40
42
|
# store on open for next check calls
|
41
43
|
@open_config = nil
|
44
|
+
@commands_config = {
|
45
|
+
open: {},
|
46
|
+
screenshot: {},
|
47
|
+
check: {},
|
48
|
+
close: {}
|
49
|
+
}
|
42
50
|
end
|
43
51
|
|
44
52
|
def make_manager(eyes_manager_config)
|
@@ -50,66 +58,207 @@ module Applitools::Connectivity
|
|
50
58
|
|
51
59
|
|
52
60
|
def core_make_manager(eyes_manager_config)
|
53
|
-
#
|
61
|
+
# interface MakeManagerRequestPayload {
|
62
|
+
# type: 'ufg' | 'classic'
|
63
|
+
# concurrency?: number
|
64
|
+
# legacyConcurrency?: number
|
65
|
+
# agentId?: string
|
66
|
+
# }
|
67
|
+
#
|
68
|
+
# type MakeManagerResponsePayload = Ref<EyesManager>
|
54
69
|
command_with_result(CORE_MAKE_MANAGER, eyes_manager_config)
|
55
70
|
end
|
56
71
|
|
72
|
+
def config_mapping(old_config, command_config, name)
|
73
|
+
return if old_config[name].nil?
|
74
|
+
command_config[name] = old_config.delete(name)
|
75
|
+
end
|
76
|
+
|
77
|
+
def map_open_eyes_config_to_commands_config(config)
|
78
|
+
[
|
79
|
+
:serverUrl, :apiKey, :proxy, :connectionTimeout, :removeSession, :agentId, :appName, :testName, :displayName,
|
80
|
+
:userTestId, :sessionType, :properties, :batch, :keepBatchOpen, :environmentName, :environment, :branchName,
|
81
|
+
:parentBranchName, :baselineEnvName, :baselineBranchName, :compareWithParentBranch, :ignoreBaseline,
|
82
|
+
:ignoreGitBranching, :saveDiffs, :abortIdleTestTimeout
|
83
|
+
].each do |k|
|
84
|
+
config_mapping(config, commands_config[:open], k)
|
85
|
+
end
|
86
|
+
|
87
|
+
commands_config[:open][:keepBatchOpen] = config.delete(:dontCloseBatches) unless config[:dontCloseBatches].nil?
|
88
|
+
|
89
|
+
[:hideCaret, :hideScrollbars, :disableBrowserFetching, :sendDom, :stitchMode,
|
90
|
+
:layoutBreakpoints, :waitBeforeCapture].each do |k|
|
91
|
+
config_mapping(config, commands_config[:check], k)
|
92
|
+
end
|
93
|
+
|
94
|
+
commands_config[:check][:renderers] = config.delete(:browsersInfo) unless config[:browsersInfo].nil?
|
95
|
+
|
96
|
+
unless config[:defaultMatchSettings].nil?
|
97
|
+
if config[:defaultMatchSettings][:accessibilitySettings]
|
98
|
+
commands_config[:check][:accessibilitySettings] = {}
|
99
|
+
commands_config[:check][:accessibilitySettings][:level] = config[:defaultMatchSettings][:accessibilitySettings].delete(:level) unless config[:defaultMatchSettings][:accessibilitySettings][:level].nil?
|
100
|
+
commands_config[:check][:accessibilitySettings][:version] = config[:defaultMatchSettings][:accessibilitySettings].delete(:guidelinesVersion) unless config[:defaultMatchSettings][:accessibilitySettings][:guidelinesVersion].nil?
|
101
|
+
config[:defaultMatchSettings].delete(:accessibilitySettings) if config[:defaultMatchSettings][:accessibilitySettings].empty?
|
102
|
+
end
|
103
|
+
commands_config[:check][:ignoreCaret] = config[:defaultMatchSettings].delete(:ignoreCaret) unless config[:defaultMatchSettings][:ignoreCaret].nil?
|
104
|
+
commands_config[:check][:matchLevel] = config[:defaultMatchSettings].delete(:matchLevel) unless config[:defaultMatchSettings][:matchLevel].nil?
|
105
|
+
config.delete(:defaultMatchSettings) if config[:defaultMatchSettings].empty?
|
106
|
+
end
|
107
|
+
|
108
|
+
if commands_config[:check][:fully].nil?
|
109
|
+
commands_config[:check][:fully] = config.delete(:forceFullPageScreenshot) unless config[:forceFullPageScreenshot].nil?
|
110
|
+
end
|
111
|
+
|
112
|
+
commands_config[:close][:updateBaselineIfNew] = config.delete(:saveNewTests) unless config[:saveNewTests].nil?
|
113
|
+
commands_config[:close][:updateBaselineIfDifferent] = config.delete(:saveFailedTests) unless config[:saveFailedTests].nil?
|
114
|
+
|
115
|
+
commands_config[:screenshot] = commands_config[:check]
|
116
|
+
end
|
117
|
+
|
118
|
+
|
119
|
+
|
120
|
+
|
57
121
|
def eyes_manager_make_eyes(manager, driver_config, config)
|
58
122
|
@open_config = config
|
59
123
|
|
60
|
-
|
61
|
-
#
|
62
|
-
#
|
63
|
-
|
124
|
+
map_open_eyes_config_to_commands_config(config)
|
125
|
+
# interface OpenEyesRequestPayload {
|
126
|
+
# manager: Ref<EyesManager>
|
127
|
+
# target?: DriverTarget
|
128
|
+
# settings?: OpenSettings
|
129
|
+
# config?: Config
|
130
|
+
# }
|
131
|
+
#
|
132
|
+
# type OpenEyesResponsePayload = Ref<Eyes>
|
133
|
+
command_with_result(EYES_MANAGER_MAKE_EYES, {manager: manager, target: driver_config, settings: commands_config[:open], config: commands_config})
|
64
134
|
end
|
65
135
|
|
66
136
|
def eyes_manager_close_all_eyes(manager)
|
67
|
-
#
|
68
|
-
|
137
|
+
# interface CloseManagerRequestPayload {
|
138
|
+
# manager: Ref<EyesManager>
|
139
|
+
# settings?: {throwErr?: boolean}
|
140
|
+
# }
|
141
|
+
#
|
142
|
+
# interface CloseManagerResponsePayload {
|
143
|
+
# results: Array<{
|
144
|
+
# error?: Error
|
145
|
+
# result?: TestResult
|
146
|
+
# renderer?: TType extends 'ufg' ? Renderer : never
|
147
|
+
# userTestId: string
|
148
|
+
# }>
|
149
|
+
# passed: number
|
150
|
+
# unresolved: number
|
151
|
+
# failed: number
|
152
|
+
# exceptions: number
|
153
|
+
# mismatches: number
|
154
|
+
# missing: number
|
155
|
+
# matches: number
|
156
|
+
# }
|
157
|
+
command_with_result(EYES_MANAGER_CLOSE_ALL_EYES, {manager: manager, config: commands_config})
|
69
158
|
end
|
70
159
|
|
71
|
-
def eyes_check(eyes, settings)
|
72
|
-
#
|
73
|
-
|
160
|
+
def eyes_check(eyes, settings, image_target = {})
|
161
|
+
# interface CheckRequestPayload {
|
162
|
+
# eyes: Ref<Eyes>
|
163
|
+
# target?: ImageTarget | DriverTarget
|
164
|
+
# settings?: CheckSettings
|
165
|
+
# config?: Config
|
166
|
+
# }
|
167
|
+
#
|
168
|
+
# type CheckResponsePayload = CheckResult[]
|
169
|
+
payload = {eyes: eyes, settings: settings, config: commands_config}
|
170
|
+
payload[:target] = image_target unless image_target.empty?
|
171
|
+
command_with_result(EYES_CHECK, payload)
|
74
172
|
end
|
75
173
|
|
76
|
-
def eyes_locate(eyes, settings)
|
77
|
-
#
|
78
|
-
|
174
|
+
def eyes_locate(eyes, settings, driver_target)
|
175
|
+
# interface LocateRequestPayload {
|
176
|
+
# target?: ImageTarget | DriverTarget
|
177
|
+
# settings?: LocateSettings
|
178
|
+
# config?: Config
|
179
|
+
# }
|
180
|
+
#
|
181
|
+
# interface LocateResponsePayload {
|
182
|
+
# [key: string]: Array<{x: number, y: number, width: number, height: number}>
|
183
|
+
# }
|
184
|
+
|
185
|
+
command_with_result(EYES_LOCATE, {target: driver_target, settings: settings, config: commands_config})
|
79
186
|
end
|
80
187
|
|
81
|
-
def eyes_extract_text_regions(eyes, settings)
|
82
|
-
#
|
83
|
-
|
188
|
+
def eyes_extract_text_regions(eyes, settings, driver_target)
|
189
|
+
# interface LocateTextRequestPayload {
|
190
|
+
# eyes: Ref<Eyes>
|
191
|
+
# target?: ImageTarget | DriverTarget
|
192
|
+
# settings?: LocateTextSettings
|
193
|
+
# config?: Config
|
194
|
+
# }
|
195
|
+
#
|
196
|
+
# type LocateTextResponcePayload = Record<string, Array<{text: string, x: number, y: number, width: number, hieght: number}>>
|
197
|
+
payload = {eyes: eyes, target: driver_target, settings: settings, config: commands_config}
|
198
|
+
payload.delete(:target) if driver_target.nil? || driver_target.empty?
|
199
|
+
command_with_result(EYES_EXTRACT_TEXT_REGIONS, payload)
|
84
200
|
end
|
85
201
|
|
86
|
-
def eyes_extract_text(eyes, regions)
|
87
|
-
#
|
88
|
-
|
202
|
+
def eyes_extract_text(eyes, regions, driver_target)
|
203
|
+
# interface ExtractTextRequestPayload {
|
204
|
+
# eyes: Ref<Eyes>
|
205
|
+
# target?: ImageTarget | DriverTarget
|
206
|
+
# settings?: ExtractTextSettings | ExtractTextSettings[]
|
207
|
+
# config?: Config
|
208
|
+
# }
|
209
|
+
#
|
210
|
+
# type ExtractTextResponcePayload = string[]
|
211
|
+
payload = {eyes: eyes, target: driver_target, settings: regions, config: commands_config}
|
212
|
+
payload.delete(:settings) if regions.empty?
|
213
|
+
command_with_result(EYES_EXTRACT_TEXT, payload)
|
89
214
|
end
|
90
215
|
|
91
216
|
def eyes_close(eyes)
|
92
|
-
#
|
93
|
-
|
217
|
+
# interface CloseResponsePayload {
|
218
|
+
# eyes: Ref<Eyes>
|
219
|
+
# settings?: CloseSettings
|
220
|
+
# config?: Config
|
221
|
+
# }
|
222
|
+
#
|
223
|
+
# type CloseResponsePayload = TestResult[]
|
224
|
+
settings = {throwErr: false}
|
225
|
+
|
226
|
+
command_with_result(EYES_CLOSE, {eyes: eyes, settings: settings, config: commands_config})
|
94
227
|
end
|
95
228
|
|
96
229
|
def eyes_abort(eyes)
|
97
|
-
#
|
230
|
+
# interface AbortPayload {
|
231
|
+
# eyes: Ref<Eyes>
|
232
|
+
# }
|
233
|
+
#
|
234
|
+
# type AbortResponsePayload = TestResult[]
|
98
235
|
command_with_result(EYES_ABORT, {eyes: eyes})
|
99
236
|
end
|
100
237
|
|
101
238
|
def core_get_viewport_size(driver)
|
102
|
-
#
|
103
|
-
|
239
|
+
# interface GetViewportSizeRequestPayload {
|
240
|
+
# target: DriverTarget
|
241
|
+
# }
|
242
|
+
#
|
243
|
+
# interface GetViewportSizeResponsePayload {
|
244
|
+
# width: number
|
245
|
+
# height: number
|
246
|
+
# }
|
247
|
+
command_with_result(CORE_GET_VIEWPORT_SIZE, {target: driver})
|
104
248
|
end
|
105
249
|
|
106
250
|
def core_set_viewport_size(driver, size)
|
107
|
-
#
|
108
|
-
|
251
|
+
# interface SetViewportSizeRequestPayload {
|
252
|
+
# target: DriverTarget
|
253
|
+
# size: {width: number, height: number}
|
254
|
+
# }
|
255
|
+
command_with_result(CORE_SET_VIEWPORT_SIZE, {target: driver, size: size})
|
109
256
|
end
|
110
257
|
|
111
258
|
def core_close_batches(close_batch_settings=nil)
|
112
|
-
#
|
259
|
+
# interface CloseBatchRequestPayload {
|
260
|
+
# settings: CloseBatchSettings | CloseBatchSettings[]
|
261
|
+
# }
|
113
262
|
unless close_batch_settings.is_a?(Hash)
|
114
263
|
batch_ids = [@open_config[:batch][:id]]
|
115
264
|
batch_ids = [close_batch_settings] if close_batch_settings.is_a?(String)
|
@@ -117,13 +266,13 @@ module Applitools::Connectivity
|
|
117
266
|
optional = [:serverUrl, :apiKey, :proxy].map {|k| [k, @open_config[k]] }.to_h
|
118
267
|
close_batch_settings = { settings: ({ batchIds: batch_ids }.merge(optional).compact) }
|
119
268
|
end
|
120
|
-
# await(->(cb) { @socket.request(CORE_CLOSE_BATCHES, close_batch_settings, cb) })
|
121
269
|
command_with_result(CORE_CLOSE_BATCHES, close_batch_settings)
|
122
270
|
end
|
123
271
|
|
124
272
|
def core_delete_test(delete_test_settings)
|
125
|
-
#
|
126
|
-
#
|
273
|
+
# interface DeleteTestRequestPayload {
|
274
|
+
# settings: DeleteTestSettings | DeleteTestSettings[]
|
275
|
+
# }
|
127
276
|
command_with_result(CORE_DELETE_TEST, delete_test_settings)
|
128
277
|
end
|
129
278
|
|
@@ -175,12 +324,13 @@ module Applitools::Connectivity
|
|
175
324
|
end
|
176
325
|
|
177
326
|
def session_init
|
178
|
-
|
327
|
+
make_core_payload = {
|
179
328
|
name: :rb,
|
180
329
|
version: Applitools::VERSION,
|
181
330
|
protocol: :webdriver,
|
182
331
|
cwd: Dir.pwd
|
183
|
-
}
|
332
|
+
}
|
333
|
+
command(SESSION_INIT, make_core_payload)
|
184
334
|
# no response
|
185
335
|
end
|
186
336
|
|
@@ -11,10 +11,10 @@ module Applitools
|
|
11
11
|
@universal_client = universal_client
|
12
12
|
end
|
13
13
|
|
14
|
-
def check(settings)
|
14
|
+
def check(settings, image_target = {})
|
15
15
|
elapsed_time_start = Time.now
|
16
16
|
# Applitools::EyesLogger.logger.debug "check settings: #{settings}"
|
17
|
-
check_result = @universal_client.eyes_check(@eyes, settings)
|
17
|
+
check_result = @universal_client.eyes_check(@eyes, settings, image_target)
|
18
18
|
# Applitools::EyesLogger.logger.debug "check_result: #{check_result}"
|
19
19
|
Applitools::EyesLogger.logger.info "Completed in #{format('%.2f', Time.now - elapsed_time_start)} seconds"
|
20
20
|
check_result
|
@@ -28,16 +28,16 @@ module Applitools
|
|
28
28
|
@universal_client.eyes_abort(@eyes)
|
29
29
|
end
|
30
30
|
|
31
|
-
def locate(settings)
|
32
|
-
@universal_client.eyes_locate(@eyes, settings)
|
31
|
+
def locate(settings, driver_target)
|
32
|
+
@universal_client.eyes_locate(@eyes, settings, driver_target)
|
33
33
|
end
|
34
34
|
|
35
|
-
def extract_text_regions(patterns_array)
|
36
|
-
@universal_client.eyes_extract_text_regions(@eyes, patterns_array)
|
35
|
+
def extract_text_regions(patterns_array, driver_target)
|
36
|
+
@universal_client.eyes_extract_text_regions(@eyes, patterns_array, driver_target)
|
37
37
|
end
|
38
38
|
|
39
|
-
def extract_text(targets_array)
|
40
|
-
@universal_client.eyes_extract_text(@eyes, targets_array)
|
39
|
+
def extract_text(targets_array, driver_target)
|
40
|
+
@universal_client.eyes_extract_text(@eyes, targets_array, driver_target)
|
41
41
|
end
|
42
42
|
|
43
43
|
end
|
@@ -123,6 +123,13 @@ module Applitools
|
|
123
123
|
:layoutBreakpoints,
|
124
124
|
:disableBrowserFetching
|
125
125
|
|
126
|
+
# v3
|
127
|
+
json_fields :environment
|
128
|
+
# :updateBaselineIfDifferent,
|
129
|
+
# :updateBaselineIfNew,
|
130
|
+
# :ignoreGitBranching,
|
131
|
+
# :abortIdleTestTimeout
|
132
|
+
|
126
133
|
# 23 + 3 + 2 + 11 = 39
|
127
134
|
FROM_ORIGINAL_EYES = [:api_key, :app_name, :batch, :browsers_info, :concurrent_sessions, :debug_screenshots,
|
128
135
|
:force_full_page_screenshot, :hide_caret, :hide_scrollbars, :host_app, :host_os, :match_timeout, :proxy,
|
@@ -159,8 +166,27 @@ module Applitools
|
|
159
166
|
end
|
160
167
|
end
|
161
168
|
|
169
|
+
def from_eyes_images
|
170
|
+
FROM_ORIGINAL_EYES - [
|
171
|
+
:browsers_info,
|
172
|
+
:concurrent_sessions,
|
173
|
+
:debug_screenshots,
|
174
|
+
:force_full_page_screenshot,
|
175
|
+
:hide_caret,
|
176
|
+
:hide_scrollbars,
|
177
|
+
:send_dom,
|
178
|
+
:stitch_mode,
|
179
|
+
:visual_grid_options,
|
180
|
+
:wait_before_screenshots,
|
181
|
+
:wait_before_capture,
|
182
|
+
:stitching_overlap
|
183
|
+
]
|
184
|
+
|
185
|
+
end
|
186
|
+
|
162
187
|
def from_original_sdk(original_eyes)
|
163
|
-
|
188
|
+
from_eyes = original_eyes.class.name != 'Applitools::Images::Eyes' ? FROM_ORIGINAL_EYES : from_eyes_images
|
189
|
+
from_eyes.each {|m| copy_from(m, original_eyes) }
|
164
190
|
self.agent_id = original_eyes.base_agent_id if original_eyes.respond_to?(:base_agent_id)
|
165
191
|
self.agent_id = original_eyes.full_agent_id if original_eyes.respond_to?(:full_agent_id)
|
166
192
|
# self.display_name = original_eyes.app_name
|
@@ -181,10 +207,28 @@ module Applitools
|
|
181
207
|
self.default_match_settings = default_match_settings.to_hash if default_match_settings.is_a?(Applitools::ImageMatchSettings)
|
182
208
|
self.proxy = proxy.to_hash if proxy.is_a?(Applitools::Connectivity::Proxy)
|
183
209
|
self.viewport_size = viewport_size.to_h if viewport_size.is_a?(Applitools::RectangleSize)
|
210
|
+
v3api_change
|
184
211
|
# require 'pry'
|
185
212
|
# binding.pry
|
186
213
|
end
|
187
214
|
|
215
|
+
def v3api_change
|
216
|
+
# self.updateBaselineIfDifferent = saveFailedTests unless saveFailedTests.nil?
|
217
|
+
# self.updateBaselineIfNew = saveNewTests unless saveNewTests.nil?
|
218
|
+
environment = {}
|
219
|
+
environment[:hostApp] = hostApp unless hostApp.nil?
|
220
|
+
environment[:hostAppInfo] = hostAppInfo unless hostAppInfo.nil?
|
221
|
+
environment[:hostOS] = hostOS unless hostOS.nil?
|
222
|
+
environment[:hostOSInfo] = hostOSInfo unless hostOSInfo.nil?
|
223
|
+
environment[:deviceInfo] = deviceInfo unless deviceInfo.nil?
|
224
|
+
unless viewportSize.nil?
|
225
|
+
environment[:viewportSize] = viewportSize
|
226
|
+
self.viewportSize = nil
|
227
|
+
end
|
228
|
+
self.environment = environment unless environment.empty?
|
229
|
+
# :ignoreGitBranching, :abortIdleTestTimeout
|
230
|
+
end
|
231
|
+
|
188
232
|
def to_hash
|
189
233
|
json_data.compact.reject do |_, v|
|
190
234
|
case v
|
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: 4.
|
4
|
+
version: 4.5.0.beta
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Applitools Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-11-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
117
|
+
version: 3.0.2
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
124
|
+
version: 3.0.2
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: bundler
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -422,9 +422,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
422
422
|
version: '0'
|
423
423
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
424
424
|
requirements:
|
425
|
-
- - "
|
425
|
+
- - ">"
|
426
426
|
- !ruby/object:Gem::Version
|
427
|
-
version:
|
427
|
+
version: 1.3.1
|
428
428
|
requirements: []
|
429
429
|
rubygems_version: 3.3.14
|
430
430
|
signing_key:
|