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.
Files changed (28) hide show
  1. checksums.yaml +5 -5
  2. data/lib/applitools/selenium/browser_types.rb +12 -10
  3. data/lib/applitools/selenium/browsers_info.rb +8 -0
  4. data/lib/applitools/selenium/concerns/selenium_eyes.rb +2 -6
  5. data/lib/applitools/selenium/configuration.rb +11 -2
  6. data/lib/applitools/selenium/css_transform/css_transform.rb +2 -2
  7. data/lib/applitools/selenium/devices.rb +133 -24
  8. data/lib/applitools/selenium/driver.rb +21 -1
  9. data/lib/applitools/selenium/eyes.rb +2 -2
  10. data/lib/applitools/selenium/full_page_capture_algorithm.rb +1 -1
  11. data/lib/applitools/selenium/scripts/templates.rb +12 -11
  12. data/lib/applitools/selenium/selenium_eyes.rb +54 -49
  13. data/lib/applitools/selenium/target.rb +174 -134
  14. data/lib/applitools/selenium/visual_grid/android_device_info.rb +65 -0
  15. data/lib/applitools/selenium/visual_grid/android_device_name.rb +45 -0
  16. data/lib/applitools/selenium/visual_grid/chrome_emulation_info.rb +4 -0
  17. data/lib/applitools/selenium/visual_grid/desktop_browser_info.rb +6 -0
  18. data/lib/applitools/selenium/visual_grid/dom_snapshot_script.rb +2 -1
  19. data/lib/applitools/selenium/visual_grid/ios_device_info.rb +12 -0
  20. data/lib/applitools/selenium/visual_grid/ios_device_name.rb +17 -1
  21. data/lib/applitools/selenium/visual_grid/thread_pool.rb +2 -1
  22. data/lib/applitools/selenium/visual_grid/vg_resource.rb +7 -6
  23. data/lib/applitools/selenium/visual_grid/visual_grid_eyes.rb +108 -56
  24. data/lib/applitools/selenium/visual_grid/visual_grid_runner.rb +4 -0
  25. data/lib/applitools/version.rb +4 -1
  26. data/lib/eyes_selenium.rb +17 -0
  27. metadata +9 -23
  28. 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
- self.test_uuid = SecureRandom.uuid
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
- Applitools::ArgumentGuard.hash(options, 'options', [:driver])
62
-
63
- config.app_name = options[:app_name] if options[:app_name]
64
- config.test_name = options[:test_name] if options[:test_name]
65
- config.agent_run_id = "#{config.test_name}--#{SecureRandom.hex(10)}"
66
-
67
- if config.viewport_size.nil? || config.viewport_size && config.viewport_size.empty?
68
- config.viewport_size = Applitools::RectangleSize.from_any_argument(options[:viewport_size]) if options[:viewport_size]
69
- end
70
-
71
- self.driver = Applitools::Selenium::SeleniumEyes.eyes_driver(options.delete(:driver), self)
72
- self.current_url = driver.current_url
73
-
74
- if viewport_size
75
- set_viewport_size(viewport_size)
76
- else
77
- self.viewport_size = get_viewport_size
78
- end
79
-
80
- visual_grid_manager.open(self)
81
- visual_grid_manager.add_batch(batch.id) do
82
- server_connector.close_batch(batch.id)
83
- end
84
-
85
- logger.info('Getting all browsers info...')
86
- browsers_info_list = config.browsers_info
87
- logger.info('Creating test descriptors for each browser info...')
88
- browsers_info_list.each(viewport_size) do |bi|
89
- test = Applitools::Selenium::RunningTest.new(eyes_connector, bi, driver).tap do |t|
90
- t.on_results_received do |results|
91
- visual_grid_manager.aggregate_result(results)
92
- end
93
- t.test_uuid = test_uuid
94
- end
95
- test_list.push test
96
- end
97
- self.opened = true
98
- driver
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
- return false if test_list.empty?
300
- close_async
301
-
302
- until (states = test_list.map(&:state_name).uniq).count == 1 && states.first == :completed
303
- sleep 0.5
304
- end
305
- self.opened = false
306
-
307
- test_list.select { |t| t.pending_exceptions && !t.pending_exceptions.empty? }.each do |t|
308
- t.pending_exceptions.each do |e|
309
- raise e
310
- end
311
- end
312
-
313
- all_results = test_list.map(&:test_result).compact
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
@@ -61,6 +61,10 @@ module Applitools
61
61
  super
62
62
  end
63
63
 
64
+ def universal_eyes_manager_config
65
+ Applitools::UniversalEyesManagerConfig.vg(@thread_pool.concurrency)
66
+ end
67
+
64
68
  private
65
69
 
66
70
  def all_running_tests
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Applitools
4
- VERSION = '3.18.3'.freeze
4
+ VERSION = '4.6.3'.freeze
5
+ IMAGES_VERSION = '4.2.3'.freeze
6
+ UNIVERSAL_VERSION = '3.3.3'.freeze
7
+ UNIVERSAL_CORE_VERSION = '3.4.0'.freeze
5
8
  end
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: 3.18.3
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: 2021-06-24 00:00:00.000000000 Z
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: 3.18.3
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: 3.18.3
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: '0'
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: '0'
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
- rubyforge_project:
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