eyes_selenium 3.18.4 → 6.9.0

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 (32) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +1713 -0
  3. data/Rakefile +86 -0
  4. data/eyes_selenium.gemspec +33 -0
  5. data/lib/applitools/eyes_selenium/version.rb +8 -0
  6. data/lib/applitools/selenium/browser_types.rb +14 -10
  7. data/lib/applitools/selenium/browsers_info.rb +8 -0
  8. data/lib/applitools/selenium/concerns/selenium_eyes.rb +2 -6
  9. data/lib/applitools/selenium/configuration.rb +13 -4
  10. data/lib/applitools/selenium/device_name_generated.rb +207 -0
  11. data/lib/applitools/selenium/devices.rb +106 -40
  12. data/lib/applitools/selenium/driver.rb +21 -1
  13. data/lib/applitools/selenium/eyes.rb +2 -2
  14. data/lib/applitools/selenium/full_page_capture_algorithm.rb +1 -1
  15. data/lib/applitools/selenium/selenium_eyes.rb +61 -49
  16. data/lib/applitools/selenium/target.rb +259 -162
  17. data/lib/applitools/selenium/visual_grid/chrome_emulation_info.rb +4 -0
  18. data/lib/applitools/selenium/visual_grid/desktop_browser_info.rb +6 -0
  19. data/lib/applitools/selenium/visual_grid/dom_snapshot_script.rb +2 -1
  20. data/lib/applitools/selenium/visual_grid/ios_device_info.rb +12 -0
  21. data/lib/applitools/selenium/visual_grid/ios_device_name.rb +3 -35
  22. data/lib/applitools/selenium/visual_grid/ios_device_name_generated.rb +93 -0
  23. data/lib/applitools/selenium/visual_grid/running_test.rb +1 -1
  24. data/lib/applitools/selenium/visual_grid/thread_pool.rb +2 -1
  25. data/lib/applitools/selenium/visual_grid/vg_resource.rb +7 -6
  26. data/lib/applitools/selenium/visual_grid/visual_grid_eyes.rb +139 -55
  27. data/lib/applitools/selenium/visual_grid/visual_grid_runner.rb +6 -2
  28. data/lib/eyes_selenium.rb +23 -2
  29. metadata +14 -26
  30. data/lib/applitools/selenium/scripts/process_page_and_poll.rb +0 -17
  31. data/lib/applitools/selenium/scripts/templates.rb +0 -34
  32. data/lib/applitools/version.rb +0 -5
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: false
2
2
 
3
+
3
4
  module Applitools::Selenium
4
5
  # The main API gateway for the SDK
5
6
  class SeleniumEyes < Applitools::EyesBase
@@ -12,7 +13,7 @@ module Applitools::Selenium
12
13
 
13
14
  DEFAULT_WAIT_BEFORE_SCREENSHOTS = 0.1 # Seconds
14
15
 
15
- DEFAULT_STITCHING_OVERLAP = 50 # Pixels
16
+ DEFAULT_STITCHING_OVERLAP = 0 # Pixels
16
17
 
17
18
  ENTIRE_ELEMENT_SCREENSHOT = 0
18
19
 
@@ -56,16 +57,7 @@ module Applitools::Selenium
56
57
  # @param [Applitools::Selenium::Driver] driver The driver instance.
57
58
  # @param [Hash] viewport_size The required browser's viewport size.
58
59
  def set_viewport_size(driver, viewport_size)
59
- Applitools::ArgumentGuard.not_nil(driver, 'Driver')
60
- Applitools::ArgumentGuard.not_nil(viewport_size, 'viewport_size')
61
- Applitools::ArgumentGuard.is_a?(viewport_size, 'viewport_size', Applitools::RectangleSize)
62
- begin
63
- Applitools::Utils::EyesSeleniumUtils.set_viewport_size eyes_driver(driver), viewport_size
64
- rescue => e
65
- Applitools::EyesLogger.error e.class
66
- Applitools::EyesLogger.error e.message
67
- raise Applitools::EyesError.new 'Failed to set viewport size!'
68
- end
60
+ super
69
61
  end
70
62
  end
71
63
 
@@ -100,7 +92,7 @@ module Applitools::Selenium
100
92
  :full_page_capture_algorithm_left_top_offset, :screenshot_type, :send_dom, :use_dom, :enable_patterns,
101
93
  :utils,
102
94
  :config
103
- attr_reader :driver
95
+ attr_accessor :driver
104
96
 
105
97
  def_delegators 'Applitools::EyesLogger', :logger, :log_handler, :log_handler=
106
98
  def_delegators 'config', *Applitools::Selenium::Configuration.methods_to_delegate
@@ -116,7 +108,7 @@ module Applitools::Selenium
116
108
  self.base_agent_id = "eyes.selenium.ruby/#{Applitools::VERSION}".freeze
117
109
  self.check_frame_or_element = false
118
110
  self.region_to_check = nil
119
- self.force_full_page_screenshot = false
111
+ # self.force_full_page_screenshot = false
120
112
  self.dont_get_title = false
121
113
  self.device_pixel_ratio = UNKNOWN_DEVICE_PIXEL_RATIO
122
114
  self.stitch_mode = Applitools::STITCH_MODE[:scroll]
@@ -139,6 +131,13 @@ module Applitools::Selenium
139
131
  self.utils = Applitools::Utils::EyesSeleniumUtils
140
132
  end
141
133
 
134
+ def self.environment_sdk
135
+ {
136
+ name: :eyes_selenium,
137
+ currentVersion: Applitools::EyesSelenium::VERSION
138
+ }
139
+ end
140
+
142
141
  def ensure_config
143
142
  self.config = Applitools::Selenium::Configuration.new
144
143
  end
@@ -162,41 +161,43 @@ module Applitools::Selenium
162
161
  # @return [Applitools::Selenium::Driver] A wrapped web driver which enables Eyes
163
162
  # trigger recording and frame handling
164
163
  def open(options = {})
165
- original_driver = options.delete(:driver)
166
- options[:viewport_size] = Applitools::RectangleSize.from_any_argument options[:viewport_size] if
167
- options[:viewport_size]
168
- Applitools::ArgumentGuard.not_nil original_driver, 'options[:driver]'
169
- # Applitools::ArgumentGuard.hash options, 'open(options)', [:app_name, :test_name]
170
-
171
- if disabled?
172
- logger.info('Ignored')
173
- return driver
174
- end
175
-
176
- @driver = self.class.eyes_driver(original_driver, self)
177
- perform_driver_specific_settings(original_driver)
178
-
179
- self.device_pixel_ratio = UNKNOWN_DEVICE_PIXEL_RATIO
180
- self.position_provider = self.class.position_provider(
181
- stitch_mode, driver, disable_horizontal_scrolling, disable_vertical_scrolling, explicit_entire_size
182
- )
183
-
184
- self.eyes_screenshot_factory = lambda do |image|
185
- Applitools::Selenium::ViewportScreenshot.new(
186
- image, driver: @driver, force_offset: position_provider.force_offset
187
- )
188
- end
189
-
190
- open_base(options) do
191
- self.viewport_size = get_viewport_size if force_driver_resolution_as_viewport_size
192
- ensure_running_session
193
- end
194
- if runner
195
- runner.add_batch(batch.id) do
196
- server_connector.close_batch(batch.id)
197
- end
198
- end
199
- @driver
164
+ # runner.add_batch(batch.id) { runner.close_batch(batch.id) } if runner
165
+ universal_open(options)
166
+ # original_driver = options.delete(:driver)
167
+ # options[:viewport_size] = Applitools::RectangleSize.from_any_argument options[:viewport_size] if
168
+ # options[:viewport_size]
169
+ # Applitools::ArgumentGuard.not_nil original_driver, 'options[:driver]'
170
+ # # Applitools::ArgumentGuard.hash options, 'open(options)', [:app_name, :test_name]
171
+ #
172
+ # if disabled?
173
+ # logger.info('Ignored')
174
+ # return driver
175
+ # end
176
+ #
177
+ # @driver = self.class.eyes_driver(original_driver, self)
178
+ # perform_driver_specific_settings(original_driver)
179
+ #
180
+ # self.device_pixel_ratio = UNKNOWN_DEVICE_PIXEL_RATIO
181
+ # self.position_provider = self.class.position_provider(
182
+ # stitch_mode, driver, disable_horizontal_scrolling, disable_vertical_scrolling, explicit_entire_size
183
+ # )
184
+ #
185
+ # self.eyes_screenshot_factory = lambda do |image|
186
+ # Applitools::Selenium::ViewportScreenshot.new(
187
+ # image, driver: @driver, force_offset: position_provider.force_offset
188
+ # )
189
+ # end
190
+ #
191
+ # open_base(options) do
192
+ # self.viewport_size = get_viewport_size if force_driver_resolution_as_viewport_size
193
+ # ensure_running_session
194
+ # end
195
+ # if runner
196
+ # runner.add_batch(batch.id) do
197
+ # server_connector.close_batch(batch.id)
198
+ # end
199
+ # end
200
+ # @driver
200
201
  end
201
202
 
202
203
  def perform_driver_specific_settings(original_driver)
@@ -219,7 +220,15 @@ module Applitools::Selenium
219
220
  # @!visibility private
220
221
  def get_viewport_size(web_driver = driver)
221
222
  Applitools::ArgumentGuard.not_nil 'web_driver', web_driver
222
- self.utils.extract_viewport_size(driver)
223
+ # self.utils.extract_viewport_size(driver)
224
+ driver_config_json = web_driver.universal_driver_config
225
+
226
+ Applitools::EyesLogger.debug 'extract_viewport_size()'
227
+ viewport_size = runner.universal_client.core_get_viewport_size(driver_config_json)
228
+ result = Applitools::RectangleSize.new viewport_size[:width], viewport_size[:height]
229
+
230
+ Applitools::EyesLogger.debug "Viewport size is #{result}."
231
+ result
223
232
  end
224
233
 
225
234
  # Takes a snapshot and matches it with the expected output.
@@ -242,6 +251,9 @@ module Applitools::Selenium
242
251
  logger.info "check(#{name}) is called"
243
252
  self.tag_for_debug = name
244
253
  Applitools::ArgumentGuard.is_a? target, 'target', Applitools::Selenium::Target
254
+
255
+ return universal_check(name, target)
256
+
245
257
  target_to_check = target.finalize
246
258
  original_overflow = nil
247
259
  original_position_provider = position_provider