eyes_selenium 3.15.22 → 3.15.23

Sign up to get free protection for your applications and to get access to all the features.
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