eyes_selenium 3.18.3 → 4.6.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.
- checksums.yaml +5 -5
- data/lib/applitools/selenium/browser_types.rb +12 -10
- data/lib/applitools/selenium/browsers_info.rb +8 -0
- data/lib/applitools/selenium/concerns/selenium_eyes.rb +2 -6
- data/lib/applitools/selenium/configuration.rb +11 -2
- data/lib/applitools/selenium/css_transform/css_transform.rb +2 -2
- data/lib/applitools/selenium/devices.rb +133 -24
- data/lib/applitools/selenium/driver.rb +21 -1
- data/lib/applitools/selenium/eyes.rb +2 -2
- data/lib/applitools/selenium/full_page_capture_algorithm.rb +1 -1
- data/lib/applitools/selenium/scripts/templates.rb +12 -11
- data/lib/applitools/selenium/selenium_eyes.rb +54 -49
- data/lib/applitools/selenium/target.rb +174 -134
- data/lib/applitools/selenium/visual_grid/android_device_info.rb +65 -0
- data/lib/applitools/selenium/visual_grid/android_device_name.rb +45 -0
- data/lib/applitools/selenium/visual_grid/chrome_emulation_info.rb +4 -0
- data/lib/applitools/selenium/visual_grid/desktop_browser_info.rb +6 -0
- data/lib/applitools/selenium/visual_grid/dom_snapshot_script.rb +2 -1
- data/lib/applitools/selenium/visual_grid/ios_device_info.rb +12 -0
- data/lib/applitools/selenium/visual_grid/ios_device_name.rb +17 -1
- data/lib/applitools/selenium/visual_grid/thread_pool.rb +2 -1
- data/lib/applitools/selenium/visual_grid/vg_resource.rb +7 -6
- data/lib/applitools/selenium/visual_grid/visual_grid_eyes.rb +108 -56
- data/lib/applitools/selenium/visual_grid/visual_grid_runner.rb +4 -0
- data/lib/applitools/version.rb +4 -1
- data/lib/eyes_selenium.rb +17 -0
- metadata +9 -23
- data/lib/applitools/selenium/scripts/process_page_and_poll.rb +0 -17
@@ -7,6 +7,13 @@ require 'securerandom'
|
|
7
7
|
module Applitools
|
8
8
|
module Selenium
|
9
9
|
class VisualGridEyes
|
10
|
+
# new open, with eyes-manager
|
11
|
+
include Applitools::UniversalEyesOpen
|
12
|
+
# all checks here
|
13
|
+
include Applitools::UniversalEyesChecks
|
14
|
+
# add extract_text, extract_text_regions, locate
|
15
|
+
include Applitools::UniversalNewApi
|
16
|
+
|
10
17
|
include Applitools::Selenium::Concerns::SeleniumEyes
|
11
18
|
USE_DEFAULT_MATCH_TIMEOUT = -1
|
12
19
|
extend Forwardable
|
@@ -15,6 +22,7 @@ module Applitools
|
|
15
22
|
|
16
23
|
attr_accessor :visual_grid_manager, :driver, :current_url, :current_config, :fetched_cache_map,
|
17
24
|
:utils,
|
25
|
+
:enable_patterns,
|
18
26
|
:config, :driver_lock, :test_uuid, :dont_get_title
|
19
27
|
attr_accessor :test_list
|
20
28
|
|
@@ -26,6 +34,10 @@ module Applitools
|
|
26
34
|
def_delegators 'config', *Applitools::Selenium::Configuration.methods_to_delegate
|
27
35
|
def_delegators 'config', *Applitools::EyesBaseConfiguration.methods_to_delegate
|
28
36
|
|
37
|
+
alias runner visual_grid_manager
|
38
|
+
attr_accessor :universal_eyes, :universal_driver
|
39
|
+
attr_accessor :debug_screenshots, :save_failed_tests, :scale_ratio, :disabled, :stitching_overlap, :compare_with_parent_branch
|
40
|
+
|
29
41
|
def initialize(visual_grid_manager, server_url = nil)
|
30
42
|
ensure_config
|
31
43
|
@server_connector = Applitools::Connectivity::ServerConnector.new(server_url)
|
@@ -43,6 +55,7 @@ module Applitools
|
|
43
55
|
|
44
56
|
def ensure_config
|
45
57
|
self.config = Applitools::Selenium::Configuration.new
|
58
|
+
self.send_dom = true
|
46
59
|
end
|
47
60
|
|
48
61
|
def full_agent_id
|
@@ -56,51 +69,61 @@ module Applitools
|
|
56
69
|
end
|
57
70
|
|
58
71
|
def open(*args)
|
59
|
-
|
72
|
+
# visual_grid_manager.add_batch(batch.id) { visual_grid_manager.close_batch(batch.id) }
|
73
|
+
# self.test_uuid = SecureRandom.uuid
|
60
74
|
options = Applitools::Utils.extract_options!(args)
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
config.
|
65
|
-
config.
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
self.
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
visual_grid_manager.
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
75
|
+
universal_open(options)
|
76
|
+
# Applitools::ArgumentGuard.hash(options, 'options', [:driver])
|
77
|
+
#
|
78
|
+
# config.app_name = options[:app_name] if options[:app_name]
|
79
|
+
# config.test_name = options[:test_name] if options[:test_name]
|
80
|
+
# config.agent_run_id = "#{config.test_name}--#{SecureRandom.hex(10)}"
|
81
|
+
#
|
82
|
+
# if config.viewport_size.nil? || config.viewport_size && config.viewport_size.empty?
|
83
|
+
# config.viewport_size = Applitools::RectangleSize.from_any_argument(options[:viewport_size]) if options[:viewport_size]
|
84
|
+
# end
|
85
|
+
#
|
86
|
+
# self.driver = Applitools::Selenium::SeleniumEyes.eyes_driver(options.delete(:driver), self)
|
87
|
+
# self.current_url = driver.current_url
|
88
|
+
#
|
89
|
+
# if viewport_size
|
90
|
+
# set_viewport_size(viewport_size)
|
91
|
+
# else
|
92
|
+
# self.viewport_size = get_viewport_size
|
93
|
+
# end
|
94
|
+
#
|
95
|
+
# visual_grid_manager.open(self)
|
96
|
+
# visual_grid_manager.add_batch(batch.id) do
|
97
|
+
# server_connector.close_batch(batch.id)
|
98
|
+
# end
|
99
|
+
#
|
100
|
+
# logger.info('Getting all browsers info...')
|
101
|
+
# browsers_info_list = config.browsers_info
|
102
|
+
# logger.info('Creating test descriptors for each browser info...')
|
103
|
+
# browsers_info_list.each(viewport_size) do |bi|
|
104
|
+
# test = Applitools::Selenium::RunningTest.new(eyes_connector, bi, driver).tap do |t|
|
105
|
+
# t.on_results_received do |results|
|
106
|
+
# visual_grid_manager.aggregate_result(results)
|
107
|
+
# end
|
108
|
+
# t.test_uuid = test_uuid
|
109
|
+
# end
|
110
|
+
# test_list.push test
|
111
|
+
# end
|
112
|
+
# self.opened = true
|
113
|
+
# driver
|
99
114
|
end
|
100
115
|
|
101
116
|
def get_viewport_size(web_driver = driver)
|
102
117
|
Applitools::ArgumentGuard.not_nil 'web_driver', web_driver
|
103
|
-
self.utils.extract_viewport_size(driver)
|
118
|
+
# self.utils.extract_viewport_size(driver)
|
119
|
+
driver_config_json = universal_driver_config(web_driver)
|
120
|
+
|
121
|
+
Applitools::EyesLogger.debug 'extract_viewport_size()'
|
122
|
+
viewport_size = runner.universal_client.core_get_viewport_size(driver_config_json)
|
123
|
+
result = Applitools::RectangleSize.new viewport_size[:width], viewport_size[:height]
|
124
|
+
|
125
|
+
Applitools::EyesLogger.debug "Viewport size is #{result}."
|
126
|
+
result
|
104
127
|
end
|
105
128
|
|
106
129
|
def eyes_connector
|
@@ -127,6 +150,8 @@ module Applitools
|
|
127
150
|
render_task = nil
|
128
151
|
target.default_full_page_for_vg
|
129
152
|
|
153
|
+
return universal_check(tag, target)
|
154
|
+
|
130
155
|
target_to_check = target.finalize
|
131
156
|
begin
|
132
157
|
check_in_frame(target_frames: target_to_check.frames) do
|
@@ -296,21 +321,36 @@ module Applitools
|
|
296
321
|
end
|
297
322
|
|
298
323
|
def close(throw_exception = true)
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
324
|
+
logger.info "close(#{throw_exception})"
|
325
|
+
logger.info 'Ending server session...'
|
326
|
+
|
327
|
+
universal_results = universal_eyes.close # Array even for one test
|
328
|
+
universal_results = universal_eyes.eyes_get_results # Array even for one test
|
329
|
+
# require 'pry'
|
330
|
+
# binding.pry
|
331
|
+
raise Applitools::EyesError.new("Request failed: #{universal_results[:message]}") if server_error?(universal_results)
|
332
|
+
key_transformed_results = Applitools::Utils.deep_stringify_keys(universal_results)
|
333
|
+
results = key_transformed_results.map {|result| Applitools::TestResults.new(result) }
|
334
|
+
# results = results.first if results.size == 1
|
335
|
+
# session_results_url = results.url
|
336
|
+
all_results = results.compact
|
337
|
+
|
338
|
+
|
339
|
+
# return false if test_list.empty?
|
340
|
+
# close_async
|
341
|
+
#
|
342
|
+
# until (states = test_list.map(&:state_name).uniq).count == 1 && states.first == :completed
|
343
|
+
# sleep 0.5
|
344
|
+
# end
|
345
|
+
# self.opened = false
|
346
|
+
#
|
347
|
+
# test_list.select { |t| t.pending_exceptions && !t.pending_exceptions.empty? }.each do |t|
|
348
|
+
# t.pending_exceptions.each do |e|
|
349
|
+
# raise e
|
350
|
+
# end
|
351
|
+
# end
|
352
|
+
#
|
353
|
+
# all_results = test_list.map(&:test_result).compact
|
314
354
|
failed_results = all_results.select { |r| !r.as_expected? }
|
315
355
|
|
316
356
|
if throw_exception
|
@@ -321,16 +361,18 @@ module Applitools
|
|
321
361
|
end
|
322
362
|
end
|
323
363
|
|
324
|
-
failed_results.empty? ? all_results.first : failed_results
|
364
|
+
failed_results.empty? ? all_results.first : failed_results.first
|
325
365
|
end
|
326
366
|
|
327
367
|
def abort_async
|
328
368
|
test_list.each(&:abort)
|
369
|
+
universal_sdk_abort
|
329
370
|
end
|
330
371
|
|
331
372
|
def abort_if_not_closed
|
332
373
|
self.opened = false
|
333
374
|
test_list.each(&:abort)
|
375
|
+
universal_sdk_abort
|
334
376
|
end
|
335
377
|
|
336
378
|
alias abort abort_if_not_closed
|
@@ -347,6 +389,8 @@ module Applitools
|
|
347
389
|
|
348
390
|
# rubocop:disable Style/AccessorMethodName
|
349
391
|
def set_viewport_size(value)
|
392
|
+
# require('pry')
|
393
|
+
# binding.pry
|
350
394
|
self.utils.set_viewport_size driver, value
|
351
395
|
rescue => e
|
352
396
|
logger.error e.class.to_s
|
@@ -398,6 +442,14 @@ module Applitools
|
|
398
442
|
|
399
443
|
def add_text_trigger(_control, _text); end
|
400
444
|
|
445
|
+
def disabled=(value)
|
446
|
+
@disabled = Applitools::Utils.boolean_value value
|
447
|
+
end
|
448
|
+
|
449
|
+
def disabled?
|
450
|
+
@disabled
|
451
|
+
end
|
452
|
+
|
401
453
|
private :new_test_error_message, :diffs_found_error_message, :test_failed_error_message
|
402
454
|
|
403
455
|
private
|
data/lib/applitools/version.rb
CHANGED
data/lib/eyes_selenium.rb
CHANGED
@@ -31,5 +31,22 @@ if defined? Selenium::WebDriver::Driver
|
|
31
31
|
is_mobile_device = capabilities['platformName'] ? true : false
|
32
32
|
Applitools::Selenium::Driver.new(eyes, driver: self, is_mobile_device: is_mobile_device)
|
33
33
|
end
|
34
|
+
|
35
|
+
def universal_driver_config
|
36
|
+
hidden_server_url = bridge.http.send(:server_url).to_s
|
37
|
+
if respond_to?(:session_id)
|
38
|
+
{
|
39
|
+
serverUrl: hidden_server_url,
|
40
|
+
sessionId: session_id,
|
41
|
+
capabilities: capabilities.as_json
|
42
|
+
}
|
43
|
+
else
|
44
|
+
{
|
45
|
+
serverUrl: hidden_server_url,
|
46
|
+
sessionId: bridge.session_id,
|
47
|
+
capabilities: capabilities.as_json
|
48
|
+
}
|
49
|
+
end
|
50
|
+
end
|
34
51
|
end
|
35
52
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eyes_selenium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.6.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Applitools Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-07-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eyes_core
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 4.6.3
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 4.6.3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: selenium-webdriver
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '3'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: css_parser
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,20 +80,6 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: nokogiri
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :runtime
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
83
|
description: Provides SDK for writing Applitools Selenium-based tests
|
98
84
|
email:
|
99
85
|
- team@applitools.com
|
@@ -141,7 +127,6 @@ files:
|
|
141
127
|
- lib/applitools/selenium/scripts/.gitignore
|
142
128
|
- lib/applitools/selenium/scripts/get_element_xpath.rb
|
143
129
|
- lib/applitools/selenium/scripts/package.json
|
144
|
-
- lib/applitools/selenium/scripts/process_page_and_poll.rb
|
145
130
|
- lib/applitools/selenium/scripts/templates.rb
|
146
131
|
- lib/applitools/selenium/scroll_position_provider.rb
|
147
132
|
- lib/applitools/selenium/selenium_eyes.rb
|
@@ -151,6 +136,8 @@ files:
|
|
151
136
|
- lib/applitools/selenium/test_list.rb
|
152
137
|
- lib/applitools/selenium/viewport_screenshot.rb
|
153
138
|
- lib/applitools/selenium/viewport_size.rb
|
139
|
+
- lib/applitools/selenium/visual_grid/android_device_info.rb
|
140
|
+
- lib/applitools/selenium/visual_grid/android_device_name.rb
|
154
141
|
- lib/applitools/selenium/visual_grid/chrome_emulation_info.rb
|
155
142
|
- lib/applitools/selenium/visual_grid/desktop_browser_info.rb
|
156
143
|
- lib/applitools/selenium/visual_grid/dom_snapshot_script.rb
|
@@ -195,8 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
195
182
|
- !ruby/object:Gem::Version
|
196
183
|
version: '0'
|
197
184
|
requirements: []
|
198
|
-
|
199
|
-
rubygems_version: 2.6.14.3
|
185
|
+
rubygems_version: 3.3.14
|
200
186
|
signing_key:
|
201
187
|
specification_version: 4
|
202
188
|
summary: Applitools Ruby Selenium SDK
|