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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +25 -0
- data/eyes_selenium.gemspec +2 -5
- data/lib/applitools/eyes_selenium/version.rb +1 -1
- data/lib/applitools/selenium/browsers_info.rb +2 -0
- data/lib/applitools/selenium/concerns/selenium_eyes.rb +0 -33
- data/lib/applitools/selenium/driver.rb +1 -1
- data/lib/applitools/selenium/eyes.rb +1 -5
- data/lib/applitools/selenium/selenium_eyes.rb +15 -315
- data/lib/applitools/selenium/visual_grid/visual_grid_runner.rb +33 -92
- data/lib/eyes_selenium.rb +0 -2
- metadata +9 -64
- data/lib/applitools/selenium/css_parser/find_embedded_resources.rb +0 -102
- data/lib/applitools/selenium/dom_capture/dom_capture.rb +0 -172
- data/lib/applitools/selenium/dom_capture/dom_capture_script.rb +0 -611
- data/lib/applitools/selenium/external_css_resources.rb +0 -32
- data/lib/applitools/selenium/visual_grid/dom_snapshot_script.rb +0 -198
- data/lib/applitools/selenium/visual_grid/eyes_connector.rb +0 -170
- data/lib/applitools/selenium/visual_grid/render_info.rb +0 -24
- data/lib/applitools/selenium/visual_grid/render_request.rb +0 -24
- data/lib/applitools/selenium/visual_grid/render_requests.rb +0 -12
- data/lib/applitools/selenium/visual_grid/render_task.rb +0 -311
- data/lib/applitools/selenium/visual_grid/resource_cache.rb +0 -69
- data/lib/applitools/selenium/visual_grid/running_test.rb +0 -271
- data/lib/applitools/selenium/visual_grid/thread_pool.rb +0 -95
- data/lib/applitools/selenium/visual_grid/vg_match_window_data.rb +0 -187
- data/lib/applitools/selenium/visual_grid/vg_region.rb +0 -16
- data/lib/applitools/selenium/visual_grid/vg_resource.rb +0 -77
- data/lib/applitools/selenium/visual_grid/vg_task.rb +0 -53
- data/lib/applitools/selenium/visual_grid/visual_grid_eyes.rb +0 -494
- 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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: df7d203ca83fdc495ffbd6de949384c1a125f65420e6d8611d87fc19ba9ff193
|
|
4
|
+
data.tar.gz: e4b8281a5aeb3722f28cac7589d8fcf89f04a649c762cca9aa4918f1f3c642f8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
|
data/eyes_selenium.gemspec
CHANGED
|
@@ -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.
|
|
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
|
|
@@ -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
|
-
|
|
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, :
|
|
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, :
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
#
|
|
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
|
|
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
|