eyes_selenium 6.12.10 → 6.12.11

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 (31) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/eyes_selenium.gemspec +2 -5
  4. data/lib/applitools/eyes_selenium/version.rb +1 -1
  5. data/lib/applitools/selenium/browsers_info.rb +2 -0
  6. data/lib/applitools/selenium/concerns/selenium_eyes.rb +0 -33
  7. data/lib/applitools/selenium/driver.rb +1 -1
  8. data/lib/applitools/selenium/eyes.rb +1 -5
  9. data/lib/applitools/selenium/selenium_eyes.rb +15 -315
  10. data/lib/applitools/selenium/visual_grid/visual_grid_runner.rb +33 -92
  11. data/lib/eyes_selenium.rb +0 -2
  12. metadata +9 -64
  13. data/lib/applitools/selenium/css_parser/find_embedded_resources.rb +0 -102
  14. data/lib/applitools/selenium/dom_capture/dom_capture.rb +0 -172
  15. data/lib/applitools/selenium/dom_capture/dom_capture_script.rb +0 -611
  16. data/lib/applitools/selenium/external_css_resources.rb +0 -32
  17. data/lib/applitools/selenium/visual_grid/dom_snapshot_script.rb +0 -198
  18. data/lib/applitools/selenium/visual_grid/eyes_connector.rb +0 -170
  19. data/lib/applitools/selenium/visual_grid/render_info.rb +0 -24
  20. data/lib/applitools/selenium/visual_grid/render_request.rb +0 -24
  21. data/lib/applitools/selenium/visual_grid/render_requests.rb +0 -12
  22. data/lib/applitools/selenium/visual_grid/render_task.rb +0 -311
  23. data/lib/applitools/selenium/visual_grid/resource_cache.rb +0 -69
  24. data/lib/applitools/selenium/visual_grid/running_test.rb +0 -271
  25. data/lib/applitools/selenium/visual_grid/thread_pool.rb +0 -95
  26. data/lib/applitools/selenium/visual_grid/vg_match_window_data.rb +0 -187
  27. data/lib/applitools/selenium/visual_grid/vg_region.rb +0 -16
  28. data/lib/applitools/selenium/visual_grid/vg_resource.rb +0 -77
  29. data/lib/applitools/selenium/visual_grid/vg_task.rb +0 -53
  30. data/lib/applitools/selenium/visual_grid/visual_grid_eyes.rb +0 -494
  31. data/lib/applitools/selenium/visual_grid/web_element_region.rb +0 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 228cadf12facab0fbdb1f164b9609b54aafc1a408f88a2b9df63709ddc797181
4
- data.tar.gz: 6cb98f7c2f7c5d13a2f8c6b1fe42dd69281941778a7f3f54b63575355c8d9fec
3
+ metadata.gz: df7d203ca83fdc495ffbd6de949384c1a125f65420e6d8611d87fc19ba9ff193
4
+ data.tar.gz: e4b8281a5aeb3722f28cac7589d8fcf89f04a649c762cca9aa4918f1f3c642f8
5
5
  SHA512:
6
- metadata.gz: 67d8699dce20e60370679c617ba835422140679c608a1c4e2dcdd398a6be2f5f0d82b762fb8ded56213023ba5fb1c500be643f855b6076a9dc4a4707a83ae629
7
- data.tar.gz: 861f38380e65017928d9c292457c34694d71b239d71de606318f1ac710cb40695e3b36d62567fde9cf1b58f2881f52ed6171366c659476e8c33e623910b3ac26
6
+ metadata.gz: 93add90018bebfcbc13441b6ad4461d8420811641064d7ce5ff81cf83ee838d39a153aa8a9066da3d19f6266ecc0782c446412a35d33666dba2e0c2db937d87c
7
+ data.tar.gz: 57493f61f118394fb0a74c602e91d814305f938b0ba1bf3f5bc598585c07aff9bd4de535fe77aedf635b93aaf910945414e0fb64a7f210c102858000f8cde42d
data/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # Changelog
2
2
 
3
+ ## [6.12.11](https://github.com/Applitools-Dev/sdk/compare/ruby/eyes_selenium@6.12.10...ruby/eyes_selenium@6.12.11) (2025-12-14)
4
+
5
+
6
+ ### Dependencies
7
+
8
+ * @applitools/core-base bumped to 1.31.0
9
+ #### Features
10
+
11
+ * Baseline branch fallback list | FLD-3837 ([#3373](https://github.com/Applitools-Dev/sdk/issues/3373)) ([e94bb10](https://github.com/Applitools-Dev/sdk/commit/e94bb10ad6b49322a56e4ce6dfde560b237e9ac0))
12
+ * @applitools/core bumped to 4.54.0
13
+ #### Features
14
+
15
+ * Baseline branch fallback list | FLD-3837 ([#3373](https://github.com/Applitools-Dev/sdk/issues/3373)) ([e94bb10](https://github.com/Applitools-Dev/sdk/commit/e94bb10ad6b49322a56e4ce6dfde560b237e9ac0))
16
+
17
+
18
+
19
+ * @applitools/nml-client bumped to 1.11.13
20
+
21
+ * @applitools/ec-client bumped to 1.12.15
22
+
23
+ * eyes_universal bumped to 4.54.0
24
+
25
+ * eyes_core bumped to 6.9.11
26
+
27
+
3
28
  ## [6.12.10](https://github.com/Applitools-Dev/sdk/compare/ruby/eyes_selenium@6.12.9...ruby/eyes_selenium@6.12.10) (2025-12-07)
4
29
 
5
30
 
@@ -27,9 +27,6 @@ Gem::Specification.new do |spec|
27
27
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
28
28
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
29
29
  spec.require_paths = %w(lib)
30
- spec.add_dependency 'eyes_core', "= 6.9.10"
31
- spec.add_dependency 'selenium-webdriver', '>= 3'
32
- spec.add_dependency 'css_parser'
33
- spec.add_dependency 'crass'
34
- spec.add_dependency 'state_machines'
30
+ spec.add_dependency 'eyes_core', "= 6.9.11"
31
+ spec.add_dependency 'selenium-webdriver', '>= 3', '< 5'
35
32
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Applitools
4
4
  module EyesSelenium
5
- VERSION = '6.12.10'.freeze
5
+ VERSION = '6.12.11'.freeze
6
6
  end
7
7
  end
8
8
 
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'set'
4
+
3
5
  module Applitools
4
6
  module Selenium
5
7
  class BrowsersInfo < Set
@@ -6,39 +6,6 @@ module Applitools
6
6
  module SeleniumEyes
7
7
  USE_DEFAULT_MATCH_TIMEOUT = -1
8
8
 
9
- # Validates the contents of an iframe and matches it with the expected output.
10
- #
11
- # @param [Hash] options The specific parameters of the desired screenshot.
12
- # @option options [Array] :target_frames The frames to check.
13
- def check_in_frame(options)
14
- Applitools::ArgumentGuard.is_a? options, 'options', Hash
15
-
16
- frames = options.delete :target_frames
17
-
18
- Applitools::ArgumentGuard.is_a? frames, 'target_frames: []', Array
19
-
20
- return yield if block_given? && frames.empty?
21
-
22
- original_frame_chain = driver.frame_chain
23
-
24
- logger.info 'Switching to target frame according to frames path...'
25
- driver.switch_to.frames(frames_path: frames)
26
- frame_chain_to_reset = driver.frame_chain
27
- logger.info 'Done!'
28
-
29
- ensure_frame_visible
30
-
31
- yield if block_given?
32
-
33
- reset_frames_scroll_position(frame_chain_to_reset)
34
-
35
- logger.info 'Switching back into top level frame...'
36
- driver.switch_to.default_content
37
- return unless original_frame_chain
38
- logger.info 'Switching back into original frame...'
39
- driver.switch_to.frames frame_chain: original_frame_chain
40
- end
41
-
42
9
  # Takes a snapshot of the application under test and matches it with the expected output.
43
10
  #
44
11
  # @param [String] tag An optional tag to be assosiated with the snapshot.
@@ -52,7 +52,7 @@ module Applitools::Selenium
52
52
  # @param options [Hash] The options.
53
53
  # @option options [Selenium::WebDriver::Driver] :driver The Selenium webdriver instance.
54
54
  # @option options [Boolean] :is_mobile_device Whether is a mobile device or not.
55
- def initialize(eyes, options)
55
+ def initialize(eyes, **options)
56
56
  super(options[:driver])
57
57
  @is_mobile_device = options.fetch(:is_mobile_device, false)
58
58
  @eyes = eyes
@@ -7,11 +7,7 @@ module Applitools
7
7
  server_url = options.delete(:server_url)
8
8
  server_url = args.first unless server_url
9
9
  runner = options.delete(:visual_grid_runner) || options.delete(:runner) || Applitools::ClassicRunner.new
10
- if runner.is_a? Applitools::Selenium::VisualGridRunner
11
- super Applitools::Selenium::VisualGridEyes.new(runner, server_url)
12
- else
13
- super Applitools::Selenium::SeleniumEyes.new(server_url, runner: runner)
14
- end
10
+ super Applitools::Selenium::SeleniumEyes.new(server_url, runner: runner)
15
11
  end
16
12
  end
17
13
  end
@@ -15,12 +15,6 @@ module Applitools::Selenium
15
15
 
16
16
  DEFAULT_STITCHING_OVERLAP = 0 # Pixels
17
17
 
18
- ENTIRE_ELEMENT_SCREENSHOT = 0
19
-
20
- FULLPAGE_SCREENSHOT = 1
21
-
22
- VIEWPORT_SCREENSHOT = 2
23
-
24
18
  extend Forwardable
25
19
  # @!visibility public
26
20
 
@@ -39,20 +33,6 @@ module Applitools::Selenium
39
33
  end
40
34
  end
41
35
 
42
- def obtain_screenshot_type(is_element, inside_a_frame, stitch_content, force_fullpage)
43
- if stitch_content || force_fullpage
44
- unless inside_a_frame
45
- return FULLPAGE_SCREENSHOT if force_fullpage && !stitch_content
46
- return FULLPAGE_SCREENSHOT if stitch_content && !is_element
47
- end
48
- return ENTIRE_ELEMENT_SCREENSHOT if inside_a_frame
49
- return ENTIRE_ELEMENT_SCREENSHOT if stitch_content
50
- else
51
- return VIEWPORT_SCREENSHOT unless stitch_content || force_fullpage
52
- end
53
- VIEWPORT_SCREENSHOT
54
- end
55
-
56
36
  # Set the viewport size.
57
37
  #
58
38
  # @param [Applitools::Selenium::Driver] driver The driver instance.
@@ -87,10 +67,10 @@ module Applitools::Selenium
87
67
  # May be set to an Applitools::RectangleSize instance or +nil+ (default).
88
68
  # @return [Applitools::RectangleSize] explicit_entire_size
89
69
 
90
- attr_accessor :base_agent_id, :screenshot, :force_full_page_screenshot, :hide_scrollbars,
70
+ attr_accessor :base_agent_id, :force_full_page_screenshot, :hide_scrollbars,
91
71
  :wait_before_screenshots, :debug_screenshots, :stitch_mode, :disable_horizontal_scrolling,
92
72
  :disable_vertical_scrolling, :explicit_entire_size, :debug_screenshot_provider, :stitching_overlap,
93
- :full_page_capture_algorithm_left_top_offset, :screenshot_type, :send_dom, :use_dom, :enable_patterns,
73
+ :full_page_capture_algorithm_left_top_offset, :send_dom, :use_dom, :enable_patterns,
94
74
  :utils,
95
75
  :config
96
76
  attr_accessor :driver
@@ -161,8 +141,10 @@ module Applitools::Selenium
161
141
  # Default value is 'SEQUENTAL'
162
142
  # @return [Selenium::WebDriver::Driver] The original driver without wrapping
163
143
  def open(options = {})
164
- original_driver = options[:driver]
165
-
144
+ # Handle deprecated :browser parameter
145
+ original_driver = get_driver(options)
146
+ options[:driver] = original_driver
147
+
166
148
  # Real implementation using universal SDK
167
149
  universal_open(options)
168
150
 
@@ -190,8 +172,7 @@ module Applitools::Selenium
190
172
  # @!visibility private
191
173
  def get_viewport_size(web_driver = driver)
192
174
  Applitools::ArgumentGuard.not_nil 'web_driver', web_driver
193
- # self.utils.extract_viewport_size(driver)
194
- driver_config_json = web_driver.universal_driver_config
175
+ driver_config_json = Applitools::Selenium.universal_driver_config(web_driver)
195
176
 
196
177
  Applitools::EyesLogger.debug 'extract_viewport_size()'
197
178
  viewport_size = runner.universal_client.core_get_viewport_size(driver_config_json)
@@ -219,145 +200,13 @@ module Applitools::Selenium
219
200
  name = first_arg[:name] || first_arg[:tag]
220
201
  end
221
202
 
222
- logger.info "check(#{name}) is called"
203
+ logger.debug "check(#{name}) is called"
223
204
  self.tag_for_debug = name
224
205
  Applitools::ArgumentGuard.is_a? target, 'target', Applitools::Selenium::Target
225
206
 
226
- return universal_check(name, target)
227
-
228
- target_to_check = target.finalize
229
- original_overflow = nil
230
- original_position_provider = position_provider
231
- original_force_full_page_screenshot = force_full_page_screenshot
232
-
233
- timeout = target_to_check.options[:timeout] || USE_DEFAULT_MATCH_TIMEOUT
234
-
235
- self.eyes_screenshot_factory = lambda do |image|
236
- Applitools::Selenium::ViewportScreenshot.new(
237
- image,
238
- region_provider: region_to_check
239
- )
240
- end
241
-
242
- self.prevent_dom_processing = send_dom?(target_to_check) ? false : true
243
-
244
- # rubocop:disable BlockLength
245
- check_in_frame target_frames: target_to_check.frames do
246
- begin
247
- match_data = Applitools::MatchWindowData.new(default_match_settings)
248
- match_data.tag = name
249
- match_data.variation_group_id = target_to_check.options[:variation_group_id] if target_to_check.options[:variation_group_id]
250
- eyes_element = target_to_check.region_to_check.call(driver)
251
-
252
- unless force_full_page_screenshot
253
- region_visibility_strategy.move_to_region(
254
- original_position_provider,
255
- Applitools::Location.new(eyes_element.location.x.to_i, eyes_element.location.y.to_i)
256
- )
257
- driver.find_element(:css, 'html').scroll_data_attribute = true
258
- end
259
-
260
- region_provider = Applitools::Selenium::RegionProvider.new(driver, region_for_element(eyes_element))
261
-
262
- self.region_to_check = region_provider
263
-
264
- match_data.read_target(target_to_check, driver)
265
- match_data.use_dom = use_dom unless match_data.use_dom
266
- match_data.enable_patterns = enable_patterns unless match_data.enable_patterns
267
-
268
- is_element = eyes_element.is_a? Applitools::Selenium::Element
269
- inside_a_frame = !driver.frame_chain.empty?
270
-
271
- self.screenshot_type = self.class.obtain_screenshot_type(
272
- is_element,
273
- inside_a_frame,
274
- target_to_check.options[:stitch_content],
275
- force_full_page_screenshot
276
- )
277
-
278
- case screenshot_type
279
- when ENTIRE_ELEMENT_SCREENSHOT
280
- if eyes_element.is_a? Applitools::Selenium::Element
281
- original_overflow = eyes_element.overflow
282
- eyes_element.overflow = 'hidden'
283
- eyes_element.scroll_data_attribute = true
284
- eyes_element.overflow_data_attribute = original_overflow
285
- self.position_provider = Applitools::Selenium::CssTranslateElementPositionProvider.new(
286
- driver,
287
- eyes_element
288
- )
289
- ensure_block = -> { eyes_element.overflow = original_overflow if original_overflow }
290
- end
291
- else
292
- if hide_scrollbars
293
- begin
294
- original_overflow = self.utils.hide_scrollbars driver
295
- driver.find_element(:css, 'html').overflow_data_attribute = original_overflow
296
- rescue Applitools::EyesDriverOperationException => e
297
- logger.warn "Failed to hide scrollbars! Error: #{e.message}"
298
- ensure
299
- ensure_block = lambda do
300
- begin
301
- self.utils.set_overflow driver, original_overflow if original_overflow
302
- rescue Applitools::EyesDriverOperationException => e
303
- logger.warn "Failed to revert overflow! Error: #{e.message}"
304
- end
305
- end
306
- end
307
- end
308
- end
309
-
310
- check_window_base(
311
- region_provider, timeout, match_data
312
- )
313
- ensure
314
- ensure_block.call if ensure_block
315
- self.check_frame_or_element = false
316
- self.force_full_page_screenshot = original_force_full_page_screenshot
317
- self.position_provider = original_position_provider
318
- self.region_to_check = nil
319
- self.full_page_capture_algorithm_left_top_offset = Applitools::Location::TOP_LEFT
320
- region_visibility_strategy.return_to_original_position original_position_provider
321
- end
322
- # rubocop:enable BlockLength
323
- end
324
- self.prevent_dom_processing = false
325
- end
326
-
327
- # Creates a region instance.
328
- #
329
- # @param [Applitools::Element] element The element.
330
- # @return [Applitools::Region] The relevant region.
331
- def region_for_element(element)
332
- return element if element.is_a? Applitools::Region
333
-
334
- p = element.location
335
- d = element.size
336
-
337
- border_left_width = element.border_left_width
338
- border_top_width = element.border_top_width
339
- border_right_width = element.border_right_width
340
- border_bottom_width = element.border_bottom_width
341
-
342
- Applitools::Region.new(
343
- p.x.round + border_left_width,
344
- p.y.round + border_top_width,
345
- d.width - border_left_width - border_right_width,
346
- d.height - border_top_width - border_bottom_width
347
- ).tap do |r|
348
- border_padding = Applitools::PaddingBounds.new(
349
- border_left_width,
350
- border_top_width,
351
- border_right_width,
352
- border_bottom_width
353
- )
354
- r.padding(border_padding)
355
- end
207
+ universal_check(name, target)
356
208
  end
357
209
 
358
- private :check_in_frame
359
- private :region_for_element
360
-
361
210
  # @!visibility private
362
211
  def scroll_to_region
363
212
  region_visibility_strategy.is_a? Applitools::Selenium::MoveToRegionVisibilityStrategy
@@ -372,16 +221,6 @@ module Applitools::Selenium
372
221
  end
373
222
  end
374
223
 
375
- def dom_data
376
- return {} if prevent_dom_processing
377
- begin
378
- Applitools::Selenium::DomCapture.full_window_dom(driver, server_connector, logger, position_provider)
379
- rescue Applitools::EyesError => e
380
- logger.error "DOM capture failed! #{e.message}"
381
- return {}
382
- end
383
- end
384
-
385
224
  def send_dom?(target)
386
225
  target.options[:send_dom].nil? ? send_dom : target.options[:send_dom]
387
226
  end
@@ -406,99 +245,6 @@ module Applitools::Selenium
406
245
  :region_visibility_strategy, :eyes_screenshot_factory, :force_driver_resolution_as_viewport_size,
407
246
  :prevent_dom_processing
408
247
 
409
- def image_provider
410
- Applitools::Selenium::TakesScreenshotImageProvider.new(
411
- driver,
412
- debug_screenshot_provider: debug_screenshot_provider
413
- )
414
- end
415
-
416
- def capture_screenshot
417
- logger.info 'Getting screenshot (capture_screenshot() has been invoked)'
418
-
419
- update_scaling_params
420
-
421
- algo = Applitools::Selenium::FullPageCaptureAlgorithm.new(
422
- debug_screenshot_provider: debug_screenshot_provider
423
- )
424
- case screenshot_type
425
- when ENTIRE_ELEMENT_SCREENSHOT
426
- self.screenshot = entire_element_screenshot(algo)
427
- when FULLPAGE_SCREENSHOT
428
- self.screenshot = full_page_screenshot(algo)
429
- when VIEWPORT_SCREENSHOT
430
- self.screenshot = viewport_screenshot
431
- end
432
- end
433
-
434
- def full_page_screenshot(algo)
435
- logger.info 'Full page screenshot requested'
436
- original_frame = driver.frame_chain
437
- driver.switch_to.default_content
438
- region_provider = Applitools::Selenium::RegionProvider.new(driver, Applitools::Region::EMPTY)
439
-
440
- full_page_image = algo.get_stitched_region(
441
- image_provider: image_provider,
442
- region_to_check: region_provider,
443
- origin_provider: Applitools::Selenium::ScrollPositionProvider.new(driver),
444
- position_provider: position_provider,
445
- scale_provider: scale_provider,
446
- cut_provider: cut_provider,
447
- wait_before_screenshots: wait_before_screenshots,
448
- eyes_screenshot_factory: eyes_screenshot_factory,
449
- stitching_overlap: stitching_overlap
450
- )
451
-
452
- unless original_frame.empty?
453
- logger.info 'Switching back to original frame...'
454
- driver.switch_to.frames frame_chain: original_frame
455
- logger.info 'Done switching!'
456
- end
457
- logger.info 'Creating EyesWebDriver screenshot instance..'
458
- result = Applitools::Selenium::FullpageScreenshot.new(
459
- full_page_image,
460
- region_provider: region_to_check
461
- )
462
- logger.info 'Done creating EyesWebDriver screenshot instance!'
463
- result
464
- end
465
-
466
- def entire_element_screenshot(algo)
467
- logger.info 'Entire element screenshot requested'
468
- entire_frame_or_element = algo.get_stitched_region(
469
- image_provider: image_provider,
470
- region_to_check: region_to_check,
471
- origin_provider: position_provider,
472
- position_provider: position_provider,
473
- scale_provider: scale_provider,
474
- cut_provider: cut_provider,
475
- wait_before_screenshots: wait_before_screenshots,
476
- eyes_screenshot_factory: eyes_screenshot_factory,
477
- stitching_overlap: stitching_overlap,
478
- top_left_position: full_page_capture_algorithm_left_top_offset
479
- )
480
-
481
- logger.info 'Building screenshot object (EyesStitchedElementScreenshot)...'
482
- result = Applitools::Selenium::EntireElementScreenshot.new(
483
- entire_frame_or_element,
484
- region_provider: region_to_check
485
- )
486
- logger.info 'Done!'
487
- result
488
- end
489
-
490
- def viewport_screenshot
491
- logger.info 'Viewport screenshot requested'
492
- sleep wait_before_screenshots
493
- image = image_provider.take_screenshot
494
- scale_provider.scale_image(image) if scale_provider
495
- local_cut_provider = (
496
- cut_provider || Applitools::Selenium::FixedCutProvider.viewport(image, viewport_size, region_to_check)
497
- )
498
- local_cut_provider.cut(image) if local_cut_provider
499
- eyes_screenshot_factory.call(image)
500
- end
501
-
502
248
  def vp_size=(value, skip_check_if_open = false)
503
249
  raise Applitools::EyesNotOpenException.new 'set_viewport_size: Eyes not open!' unless skip_check_if_open || open?
504
250
  original_frame = driver.frame_chain
@@ -517,9 +263,13 @@ module Applitools::Selenium
517
263
  alias set_viewport_size vp_size=
518
264
 
519
265
  def get_driver(options)
520
- # TODO: remove the "browser" related block when possible. It's for backward compatibility.
266
+ # DEPRECATED: The "browser" parameter is deprecated in favor of "driver".
267
+ # This support will be removed in version 7.0.
268
+ # Please update your code to use :driver instead of :browser.
269
+ # Example: eyes.open(driver: driver, ...) instead of eyes.open(browser: driver, ...)
521
270
  if options.key?(:browser)
522
- logger.warn('"browser" key is deprecated, please use "driver" instead.')
271
+ logger.warn('"browser" key is deprecated and will be removed in version 7.0. ' \
272
+ 'Please use "driver" instead.')
523
273
  return options[:browser]
524
274
  end
525
275
 
@@ -634,12 +384,6 @@ module Applitools::Selenium
634
384
  add_mouse_trigger_base(mouse_action, control, cursor)
635
385
  end
636
386
 
637
- def get_app_output_with_screenshot(*_args)
638
- result = super
639
- self.screenshot_url = nil
640
- result
641
- end
642
-
643
387
  public :add_text_trigger, :add_mouse_trigger, :add_mouse_trigger_by_region_and_location
644
388
 
645
389
  protected
@@ -689,49 +433,5 @@ module Applitools::Selenium
689
433
 
690
434
  nil
691
435
  end
692
-
693
- def ensure_frame_visible
694
- original_fc = driver.frame_chain
695
- return original_fc if original_fc.empty?
696
- fc = Applitools::Selenium::FrameChain.new other: original_fc
697
- until fc.empty?
698
- driver.switch_to.parent_frame
699
- position_provider.position = fc.pop.location
700
- end
701
- driver.switch_to.frames(frame_chain: original_fc)
702
- original_fc
703
- end
704
-
705
- def reset_frames_scroll_position(original_fc)
706
- return original_fc if original_fc.empty?
707
- fc = Applitools::Selenium::FrameChain.new other: original_fc
708
- until fc.empty?
709
- driver.switch_to.parent_frame
710
- position_provider.position = fc.pop.parent_scroll_position
711
- end
712
- driver.switch_to.frames(frame_chain: original_fc)
713
- original_fc
714
- end
715
-
716
- class << self
717
- def position_provider(stitch_mode, driver, disable_horizontal = false, disable_vertical = false,
718
- explicit_entire_size = nil)
719
-
720
- max_width = nil
721
- max_height = nil
722
- unless explicit_entire_size.nil?
723
- max_width = explicit_entire_size.width
724
- max_height = explicit_entire_size.height
725
- end
726
- case stitch_mode
727
- when Applitools::Selenium::StitchModes::SCROLL
728
- Applitools::Selenium::ScrollPositionProvider.new(driver, disable_horizontal, disable_vertical,
729
- max_width, max_height)
730
- when Applitools::Selenium::StitchModes::CSS
731
- Applitools::Selenium::CssTranslatePositionProvider.new(driver, disable_horizontal, disable_vertical,
732
- max_width, max_height)
733
- end
734
- end
735
- end
736
436
  end
737
437
  end