eyes_selenium 3.15.22 → 3.15.23

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f4afa38dc1072ebb2967eb23560548ebc4bd9843bb24c926c228380d28f18be2
4
- data.tar.gz: b5aa0a6992230a27cd0f5768a44ee48b0807d56c5d31ca43672ad97c5bd9a251
3
+ metadata.gz: 986dbce2e6280a576f7ab916cfa1bb5ffdd70f2ffbbc298733b0365d67e7b8e6
4
+ data.tar.gz: e0a78d9fb68f03c2810fd862bb5342d489f7571b16a538e236ce10f9ea71ab43
5
5
  SHA512:
6
- metadata.gz: 4c830ca945efe89a44b17b4f3c2c1747e0104d9c3d8eee9993822f517311400bdef380d03b3120a776326cceaace429a6825d84e453de1e3f598c4f384cae955
7
- data.tar.gz: f481e17e945fce5c3623471feed14a8a60c1a0e7067aaade06c4f46593451122bcb1bfef20f48dc54e0f24e7d53f3647977f7eb16a9d60714a05b05f4d60acde
6
+ metadata.gz: eaee95474c4f65ff04b697c98ce8b287af37c5f0c33cd79e3e109361f37cbee53bb8d100a6c8a3a09b957209b682778120ab5e87296d9b277e86b1a2f0e7d0a3
7
+ data.tar.gz: 9f42265a406214b02fa979bfb26f1e82dc058d067a988208ecb37bc4ff01e2bce604afe58872a9d102d655f561692bf34c1a79fad37fec9b6aeb963b6abe3396
@@ -19,7 +19,8 @@ module Applitools
19
19
  end
20
20
 
21
21
  attr_accessor :element, :frames, :region_to_check, :coordinate_type, :options, :ignored_regions,
22
- :floating_regions, :frame_or_element, :regions
22
+ :floating_regions, :frame_or_element, :regions, :match_level, :layout_regions, :content_regions,
23
+ :strict_regions
23
24
 
24
25
  private :frame_or_element, :frame_or_element=
25
26
 
@@ -144,6 +145,53 @@ module Applitools
144
145
  self
145
146
  end
146
147
 
148
+ def layout(*args)
149
+ return match_level(Applitools::MatchLevel::LAYOUT) if args.empty?
150
+ region = process_region(*args)
151
+ layout_regions << region
152
+ self
153
+ end
154
+
155
+ def content(*args)
156
+ return match_level(Applitools::MatchLevel::CONTENT) if args.empty?
157
+ region = process_region(*args)
158
+ content_regions << region
159
+ self
160
+ end
161
+
162
+ def strict(*args)
163
+ return match_level(Applitools::MatchLevel::STRICT) if args.empty?
164
+ region = process_region(*args)
165
+ strict_regions << region
166
+ self
167
+ end
168
+
169
+ def exact(*args)
170
+ return match_level(Applitools::MatchLevel::EXACT) if args.empty?
171
+ raise Applitools::EyesError('Target.exact() is supposed to be called without args!')
172
+ # region = process_region(args)
173
+ # exact_regions << region
174
+ # self
175
+ end
176
+
177
+ def process_region(*args)
178
+ r = args.first
179
+ case r
180
+ when Applitools::Region, ::Selenium::WebDriver::Element, Applitools::Selenium::Element
181
+ proc { r }
182
+ else
183
+ proc do |driver|
184
+ args_dup = args.dup
185
+ driver.find_element(args_dup.shift, args_dup.shift)
186
+ end
187
+ end
188
+ end
189
+
190
+ def match_level(*args)
191
+ value = args.shift
192
+ self
193
+ end
194
+
147
195
  def fully(value = true)
148
196
  options[:stitch_content] = value ? true : false
149
197
  handle_frames
@@ -218,6 +266,9 @@ module Applitools
218
266
  self.region_to_check = proc { Applitools::Region::EMPTY }
219
267
  reset_ignore
220
268
  reset_floating
269
+ reset_content_regions
270
+ reset_layout_regions
271
+ reset_strict_regions
221
272
  options[:stitch_content] = false
222
273
  options[:timeout] = nil
223
274
  options[:trim] = false
@@ -231,6 +282,18 @@ module Applitools
231
282
  self.floating_regions = []
232
283
  end
233
284
 
285
+ def reset_layout_regions
286
+ self.layout_regions = []
287
+ end
288
+
289
+ def reset_content_regions
290
+ self.content_regions = []
291
+ end
292
+
293
+ def reset_strict_regions
294
+ self.strict_regions = []
295
+ end
296
+
234
297
  def handle_frames
235
298
  return unless frame_or_element
236
299
  frames << frame_or_element
@@ -28,6 +28,21 @@ module Applitools
28
28
  end
29
29
  end
30
30
 
31
+ if target.respond_to? :layout_regions
32
+ @layout_regions = obtain_regions_coordinates(target.layout_regions, driver)
33
+ @need_convert_layout_regions_coordinates = true unless @layout_regions.empty?
34
+ end
35
+
36
+ if target.respond_to? :content_regions
37
+ @content_regions = obtain_regions_coordinates(target.content_regions, driver)
38
+ @need_convert_content_regions_coordinates = true unless @content_regions.empty?
39
+ end
40
+
41
+ if target.respond_to? :strict_regions
42
+ @strict_regions = obtain_regions_coordinates(target.strict_regions, driver)
43
+ @need_convert_strict_regions_coordinates = true unless @strict_regions.empty?
44
+ end
45
+
31
46
  # # floating regions
32
47
  return unless target.respond_to? :floating_regions
33
48
  target.floating_regions.each do |r|
@@ -48,6 +63,21 @@ module Applitools
48
63
  end
49
64
  end
50
65
 
66
+ def obtain_regions_coordinates(regions, driver)
67
+ result = []
68
+ regions.each do |r|
69
+ case r
70
+ when Proc
71
+ region = r.call(driver)
72
+ region = selector_regions[target.regions[region]]
73
+ result << Applitools::Region.new(region['x'], region['y'], region['width'], region['height'])
74
+ when Applitools::Region
75
+ result << r
76
+ end
77
+ end
78
+ result
79
+ end
80
+
51
81
  def convert_ignored_regions_coordinates
52
82
  return unless @need_convert_ignored_regions_coordinates
53
83
  self.ignored_regions = @ignored_regions.map(&:with_padding).map(&:to_hash)
@@ -60,6 +90,23 @@ module Applitools
60
90
  @need_convert_floating_regions_coordinates = false
61
91
  end
62
92
 
93
+ def convert_layout_regions_coordinates
94
+ return unless @need_convert_layout_regions_coordinates
95
+ self.layout_regions = @layout_regions
96
+ @need_convert_layout_regions_coordinates = false
97
+ end
98
+
99
+ def convert_strict_regions_coordinates
100
+ return unless @need_convert_strict_regions_coordinates
101
+ self.strict_regions = @strict_regions
102
+ @need_convert_strict_regions_coordinates = false
103
+ end
104
+
105
+ def convert_content_regions_coordinates
106
+ return unless @need_convert_content_regions_coordinates
107
+ self.content_regions = @content_regions
108
+ @need_convert_content_regions_coordinates = false
109
+ end
63
110
  end
64
111
  end
65
112
  end
@@ -3,6 +3,7 @@ module Applitools
3
3
  module Selenium
4
4
  class VisualGridEyes
5
5
  DOM_EXTRACTION_TIMEOUT = 300 #seconds or 5 minutes
6
+ USE_DEFAULT_MATCH_TIMEOUT = -1
6
7
  extend Forwardable
7
8
 
8
9
  def_delegators 'Applitools::EyesLogger', :logger, :log_handler, :log_handler=
@@ -131,7 +132,7 @@ module Applitools
131
132
  # end.compact!
132
133
  # end
133
134
  result = []
134
- regions_hash = collect_selenium_regions(target).each do |el, v|
135
+ collect_selenium_regions(target).each do |el, v|
135
136
  if [::Selenium::WebDriver::Element, Applitools::Selenium::Element].include?(el.class)
136
137
  xpath = driver.execute_script(Applitools::Selenium::Scripts::GET_ELEMENT_XPATH_JS, el)
137
138
  web_element_region = Applitools::Selenium::WebElementRegion.new(xpath, v)
@@ -145,23 +146,25 @@ module Applitools
145
146
 
146
147
  def collect_selenium_regions(target)
147
148
  selenium_regions = {}
148
- # ignore_regions = target.ignored_regions
149
- # floating_regions = target.floating_regions
150
149
  target_element = target.region_to_check
151
150
  setup_size_mode(target_element)
152
- # selenium_regions.map do |r|
153
- # element_or_region(r)
154
- # end
155
151
  target.ignored_regions.each do |r|
156
152
  selenium_regions[element_or_region(r)] = :ignore
157
153
  end
158
154
  target.floating_regions.each do |r|
159
155
  selenium_regions[element_or_region(r)] = :floating
160
156
  end
157
+ target.layout_regions.each do |r|
158
+ selenium_regions[element_or_region(r)] = :layout
159
+ end
160
+ target.strict_regions.each do |r|
161
+ selenium_regions[element_or_region(r)] = :strict
162
+ end
163
+ target.content_regions.each do |r|
164
+ selenium_regions[element_or_region(r)] = :content
165
+ end
161
166
  selenium_regions[region_to_check] = :target if size_mod == 'selector'
162
167
 
163
- # selenium_regions[:ignore] += [target.ignored_regions.map { |r| element_or_region(r) }].flatten.compact
164
- # selenium_regions[:target] << region_to_check if size_mod == 'selector'
165
168
  selenium_regions
166
169
  end
167
170
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Applitools
4
- VERSION = '3.15.22'.freeze
4
+ VERSION = '3.15.23'.freeze
5
5
  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.15.22
4
+ version: 3.15.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Applitools Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-08 00:00:00.000000000 Z
11
+ date: 2019-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eyes_core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 3.15.22
19
+ version: 3.15.23
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.15.22
26
+ version: 3.15.23
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: selenium-webdriver
29
29
  requirement: !ruby/object:Gem::Requirement