eyes_selenium 3.17.3 → 3.17.9

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: a287486a3c2db8fe596472fc9913fe78e986f808e85d7aff75a864af7d2eb882
4
- data.tar.gz: 9dc948821e7024ecd298fbd79e139a3b18ec49cf0abd18b508379f78010257cb
3
+ metadata.gz: cee50953eeafc5c79aeba64ca7a506c6d02ae1f16ae8f291995672f72d2a3776
4
+ data.tar.gz: 965ffbea40553262623b7a8a11eecd6a91790bf1156cc6c8503c558f9d3f9267
5
5
  SHA512:
6
- metadata.gz: e6985305123510272024b48190c15254d026835251fd7d5fcead42988a32e6f09b3c4155870729a8ded879aef9aa2523fbc40951d4e6364bbfc12c7e960e0a04
7
- data.tar.gz: e1c697f8a30a19d97ad28d2cc488b4d22da34fdc78b62cbe46f44028be0e93f4a9bfed34706116dd2c516afc6349bfff4dd4a5da5bfe4c3c066fc81ed211ffd7
6
+ metadata.gz: 9de3224015a3c8b6579f609e64437d9072e56013964dd99f4a45c8b5bef4293f9e1e1adeda1e3a5d03ced3846e2540c5d597ddd5aa02e59f727dc42e61d4f6b2
7
+ data.tar.gz: 50224783e3c42e3b2c592c8311111a1bafb2ac6a3cbee17e39187d90696656854f4a0caa80283537102a0a0317f57b4db6ba6a827683263b65f55cc48a72d877
@@ -21,7 +21,7 @@ module Applitools
21
21
 
22
22
  attr_accessor :element, :frames, :region_to_check, :coordinate_type, :options, :ignored_regions,
23
23
  :floating_regions, :frame_or_element, :regions, :layout_regions, :content_regions,
24
- :strict_regions, :accessibility_regions
24
+ :strict_regions, :accessibility_regions, :convert_coordinates_block
25
25
 
26
26
  private :frame_or_element, :frame_or_element=
27
27
 
@@ -33,6 +33,7 @@ module Applitools
33
33
  script_hooks: { beforeCaptureScreenshot: '' }
34
34
  }
35
35
  self.regions = {}
36
+ self.convert_coordinates_block = nil
36
37
  reset_for_fullscreen
37
38
  end
38
39
 
@@ -374,6 +375,10 @@ module Applitools
374
375
  nil
375
376
  end
376
377
 
378
+ def convert_coordinates(&block)
379
+ self.convert_coordinates_block = block
380
+ end
381
+
377
382
  private
378
383
 
379
384
  def reset_for_fullscreen
@@ -7,7 +7,7 @@ module Applitools
7
7
  DEFAULT_CONFIG = proc do
8
8
  {
9
9
  platform: 'linux',
10
- browser_type: BrowserTypes::CHROME,
10
+ browser_type: BrowserType::CHROME,
11
11
  # size_mode: 'full-page',
12
12
  viewport_size: Applitools::RectangleSize.from_any_argument(width: 0, height: 0)
13
13
  }
@@ -18,26 +18,40 @@ module Applitools
18
18
  end
19
19
  end
20
20
 
21
+ object_field :emulation_info, Applitools::Selenium::EmulationBaseInfo
22
+
21
23
  # def device_name
22
24
  # emulation_info.device_name
23
25
  # end
24
26
  #
25
27
  def initialize(*args)
26
- super()
28
+ options = Applitools::Utils.extract_options!(args.dup)
29
+ super(options)
27
30
  case args[0]
28
31
  when String
29
32
  self.emulation_info = EmulationInfo.new.tap do |ei|
30
33
  ei.device_name = args[0]
31
- ei.screen_orientation = args[1] || Orientations::PORTRAIT
34
+ ei.screen_orientation = args[1] || Orientation::PORTRAIT
32
35
  end
33
36
  when Hash
34
37
  self.emulation_info = EmulationInfo.new.tap do |ei|
35
38
  ei.device_name = args[0][:device_name]
36
- ei.screen_orientation = args[0][:screen_orientation] || Orientations::PORTRAIT
39
+ ei.screen_orientation = args[0][:screen_orientation] || Orientation::PORTRAIT
37
40
  end
41
+ else
42
+ raise Applitools::EyesIllegalArgument, 'You should pass :device_name and :screen_orientation'
38
43
  end
39
44
  end
40
45
 
46
+ def to_s
47
+ "#{emulation_info.device_name} - #{emulation_info.screen_orientation}"
48
+ end
49
+
50
+ def device_name
51
+ emulation_info.device_name + ' (chrome emulation)'
52
+ end
53
+
54
+
41
55
  private
42
56
 
43
57
  class EmulationInfo < Applitools::Selenium::EmulationBaseInfo
@@ -7,7 +7,7 @@ module Applitools
7
7
  DEFAULT_CONFIG = proc do
8
8
  {
9
9
  platform: 'linux',
10
- browser_type: BrowserTypes::CHROME,
10
+ browser_type: BrowserType::CHROME,
11
11
  # size_mode: 'full-page',
12
12
  viewport_size: Applitools::RectangleSize.from_any_argument(width: 0, height: 0)
13
13
  }
@@ -20,7 +20,7 @@ module Applitools
20
20
  end
21
21
 
22
22
  def initialize(options = {})
23
- super()
23
+ super
24
24
  if options[:width] && options[:height]
25
25
  self.viewport_size = Applitools::RectangleSize.from_any_argument(width: options[:width], height: options[:height])
26
26
  end
@@ -29,15 +29,17 @@ module Applitools
29
29
 
30
30
  def platform
31
31
  case browser_type
32
- when BrowserTypes::EDGE_LEGACY, BrowserTypes::EDGE_CHROMIUM, BrowserTypes::EDGE_CHROMIUM_ONE_VERSION_BACK
32
+ when BrowserType::EDGE_LEGACY, BrowserType::EDGE_CHROMIUM, BrowserType::EDGE_CHROMIUM_ONE_VERSION_BACK
33
33
  'windows'
34
34
  else
35
35
  'linux'
36
36
  end
37
37
  end
38
38
 
39
+ def device_name
40
+ 'desktop'
41
+ end
42
+
39
43
  end
40
44
  end
41
45
  end
42
-
43
- Applitools::Selenium::RenderBrowserInfo = Applitools::Selenium::DesktopBrowserInfo
@@ -54,7 +54,6 @@ module Applitools
54
54
  logger.error "Error retrieving coordinates for region #{e.region}"
55
55
  logger.error e.message
56
56
  end
57
-
58
57
  check_result = check_window_base(
59
58
  dummy_region_provider, timeout, match_data
60
59
  )
@@ -3,22 +3,18 @@ module Applitools
3
3
  class IRenderBrowserInfo < ::Applitools::AbstractConfiguration
4
4
 
5
5
  object_field :viewport_size, Applitools::RectangleSize
6
- enum_field :browser_type, BrowserTypes.enum_values
6
+ enum_field :browser_type, BrowserType.enum_values
7
7
  string_field :platform
8
8
  string_field :size_mode
9
9
  string_field :baseline_env_name
10
- object_field :emulation_info, Applitools::Selenium::EmulationBaseInfo
11
- object_field :ios_device_info, Applitools::Selenium::EmulationBaseInfo
12
10
 
13
- def device_name
14
- return 'desktop' unless emulation_info || ios_device_info
15
- return ios_device_info.device_name if ios_device_info
16
- return emulation_info.device_name + ' (chrome emulation)' if emulation_info
11
+ def initialize(options = {})
12
+ super()
13
+ self.baseline_env_name = options[:baseline_env_name] if options[:baseline_env_name]
17
14
  end
18
15
 
19
16
  def to_s
20
- return "#{viewport_size} (#{browser_type})" unless emulation_info
21
- "#{emulation_info.device_name} - #{emulation_info.screen_orientation}"
17
+ return "#{viewport_size} (#{browser_type})"
22
18
  end
23
19
  end
24
20
  end
@@ -11,6 +11,9 @@ module Applitools
11
11
  viewport_size: Applitools::RectangleSize.from_any_argument(width: 0, height: 0)
12
12
  }
13
13
  end
14
+
15
+ object_field :ios_device_info, Applitools::Selenium::EmulationBaseInfo
16
+
14
17
  class << self
15
18
  def default_config
16
19
  DEFAULT_CONFIG.call
@@ -18,18 +21,26 @@ module Applitools
18
21
  end
19
22
 
20
23
  def initialize(options = {})
21
- super()
24
+ super
22
25
  self.ios_device_info = EmulationInfo.new.tap do |ei|
23
26
  ei.device_name = options[:device_name]
24
- ei.screen_orientation = options[:screen_orientation] || options[:orientation] || IosScreenshotOrientation::PORTRAIT
27
+ ei.screen_orientation = options[:screen_orientation] || options[:orientation] || IosScreenOrientation::PORTRAIT
25
28
  end
26
29
  end
27
30
 
31
+ def to_s
32
+ "#{ios_device_info.device_name} - #{ios_device_info.screen_orientation}"
33
+ end
34
+
35
+ def device_name
36
+ ios_device_info.device_name
37
+ end
38
+
28
39
  private
29
40
 
30
41
  class EmulationInfo < EmulationBaseInfo
31
42
  enum_field :device_name, IosDeviceName.enum_values
32
- enum_field :screen_orientation, IosScreenshotOrientation.enum_values
43
+ enum_field :screen_orientation, IosScreenOrientation.enum_values
33
44
 
34
45
  def json_data
35
46
  {
@@ -1,4 +1,4 @@
1
- module IosScreenshotOrientation
1
+ module IosScreenOrientation
2
2
  extend self
3
3
  PORTRAIT ='portrait'
4
4
  LANDSCAPE_LEFT = 'landscapeLeft'
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+ require 'applitools/selenium/browser_types'
3
+ # We should not break the API
4
+ module Applitools
5
+ module Selenium
6
+ class RenderBrowserInfo < IRenderBrowserInfo
7
+ DEFAULT_CONFIG = proc do
8
+ {
9
+ platform: 'linux',
10
+ browser_type: BrowserTypes::CHROME,
11
+ # size_mode: 'full-page',
12
+ viewport_size: Applitools::RectangleSize.from_any_argument(width: 0, height: 0)
13
+ }
14
+ end
15
+
16
+ object_field :ios_device_info, Applitools::Selenium::EmulationBaseInfo
17
+ object_field :emulation_info, Applitools::Selenium::EmulationBaseInfo
18
+
19
+ class << self
20
+ def default_config
21
+ DEFAULT_CONFIG.call
22
+ end
23
+ end
24
+
25
+ def initialize(options = {})
26
+ super
27
+ if options[:width] && options[:height]
28
+ self.viewport_size = Applitools::RectangleSize.from_any_argument(width: options[:width], height: options[:height])
29
+ end
30
+ self.browser_type = options[:browser_type] if options[:browser_type]
31
+ end
32
+
33
+ def platform
34
+ return 'ios' if ios_device_info
35
+ case browser_type
36
+ when BrowserType::EDGE_LEGACY, BrowserType::EDGE_CHROMIUM, BrowserType::EDGE_CHROMIUM_ONE_VERSION_BACK
37
+ 'windows'
38
+ else
39
+ 'linux'
40
+ end
41
+ end
42
+
43
+ def to_s
44
+ if emulation_info
45
+ "#{emulation_info.device_name} - #{emulation_info.screen_orientation}"
46
+ elsif ios_device_info
47
+ "#{ios_device_info.device_name} - #{ios_device_info.screen_orientation}"
48
+ end
49
+ "#{viewport_size} (#{browser_type})"
50
+ end
51
+
52
+ def device_name
53
+ if ios_device_info
54
+ return ios_device_info.device_name
55
+ elsif emulation_info
56
+ return emulation_info.device_name + ' (chrome emulation)'
57
+ end
58
+ 'desktop'
59
+ end
60
+ end
61
+ end
62
+ end
@@ -248,8 +248,11 @@ module Applitools
248
248
  r.height = running_test.browser_info.viewport_size.height
249
249
  r.size_mode = size_mode
250
250
  r.region = region_to_check
251
- r.emulation_info = running_test.browser_info.emulation_info if running_test.browser_info.emulation_info
252
- r.ios_device_info = running_test.browser_info.ios_device_info if running_test.browser_info.ios_device_info
251
+ if running_test.browser_info.respond_to?(:emulation_info) && running_test.browser_info.emulation_info
252
+ r.emulation_info = running_test.browser_info.emulation_info
253
+ elsif running_test.browser_info.respond_to?(:ios_device_info) && running_test.browser_info.ios_device_info
254
+ r.ios_device_info = running_test.browser_info.ios_device_info
255
+ end
253
256
  end
254
257
 
255
258
  requests << Applitools::Selenium::RenderRequest.new(
@@ -3,6 +3,15 @@
3
3
  module Applitools
4
4
  module Selenium
5
5
  class VgMatchWindowData < Applitools::MatchWindowData
6
+ CONVERT_COORDINATES = proc do |region, selector_regions|
7
+ begin
8
+ offset_region = selector_regions.last
9
+ new_location = region.location.offset_negative(Applitools::Location.new(offset_region['x'].to_i, offset_region['y'].to_i))
10
+ region.location = new_location
11
+ rescue
12
+ Applitools::EyesLogger.error("Failed to convert coordinates for #{region}")
13
+ end
14
+ end
6
15
  class RegionCoordinatesError < ::Applitools::EyesError
7
16
  attr_accessor :region
8
17
  def initialize(region, message)
@@ -109,7 +118,11 @@ module Applitools
109
118
  region = selector_regions[target.regions[region]]
110
119
  raise RegionCoordinatesError.new(r, region['error']) if region['error']
111
120
  retrieved_region = Applitools::Region.new(region['x'], region['y'], region['width'], region['height'])
112
- result_region = r.padding_proc.call(retrieved_region) if r.padding_proc.is_a? Proc
121
+ result_region = if r.padding_proc.is_a? Proc
122
+ r.padding_proc.call(retrieved_region)
123
+ else
124
+ retrieved_region
125
+ end
113
126
  result << result_region
114
127
  end
115
128
  end
@@ -118,36 +131,54 @@ module Applitools
118
131
 
119
132
  def convert_ignored_regions_coordinates
120
133
  return unless @need_convert_ignored_regions_coordinates
134
+ if target.convert_coordinates_block.is_a?(Proc)
135
+ @ignored_regions.each { |r| target.convert_coordinates_block.call(r, selector_regions)}
136
+ end
121
137
  self.ignored_regions = @ignored_regions.map(&:with_padding).map(&:to_hash)
122
138
  @need_convert_ignored_regions_coordinates = false
123
139
  end
124
140
 
125
141
  def convert_floating_regions_coordinates
126
142
  return unless @need_convert_floating_regions_coordinates
143
+ if target.convert_coordinates_block.is_a?(Proc)
144
+ @floating_regions.each { |r| target.convert_coordinates_block.call(r, selector_regions)}
145
+ end
127
146
  self.floating_regions = @floating_regions
128
147
  @need_convert_floating_regions_coordinates = false
129
148
  end
130
149
 
131
150
  def convert_layout_regions_coordinates
132
151
  return unless @need_convert_layout_regions_coordinates
152
+ if target.convert_coordinates_block.is_a?(Proc)
153
+ @layout_regions.each { |r| target.convert_coordinates_block.call(r, selector_regions)}
154
+ end
133
155
  self.layout_regions = @layout_regions
134
156
  @need_convert_layout_regions_coordinates = false
135
157
  end
136
158
 
137
159
  def convert_strict_regions_coordinates
138
160
  return unless @need_convert_strict_regions_coordinates
161
+ if target.convert_coordinates_block.is_a?(Proc)
162
+ @strict_regions.each { |r| target.convert_coordinates_block.call(r, selector_regions)}
163
+ end
139
164
  self.strict_regions = @strict_regions
140
165
  @need_convert_strict_regions_coordinates = false
141
166
  end
142
167
 
143
168
  def convert_content_regions_coordinates
144
169
  return unless @need_convert_content_regions_coordinates
170
+ if target.convert_coordinates_block.is_a?(Proc)
171
+ @content_regions.each { |r| target.convert_coordinates_block.call(r, selector_regions)}
172
+ end
145
173
  self.content_regions = @content_regions
146
174
  @need_convert_content_regions_coordinates = false
147
175
  end
148
176
 
149
177
  def convert_accessibility_regions_coordinates
150
178
  return unless @need_convert_accessibility_regions_coordinates
179
+ if target.convert_coordinates_block.is_a?(Proc)
180
+ @accessibility_regions.each { |r| target.convert_coordinates_block.call(r, selector_regions)}
181
+ end
151
182
  self.accessibility_regions = @accessibility_regions
152
183
  @need_convert_accessibility_regions_coordinates = false
153
184
  end
@@ -154,6 +154,7 @@ module Applitools
154
154
  mod = Digest::SHA2.hexdigest(script_thread_result[:script_result])
155
155
 
156
156
  region_x_paths = get_regions_x_paths(target_to_check)
157
+
157
158
  render_task = RenderTask.new(
158
159
  "Render #{config.short_description} - #{tag}",
159
160
  script_thread_result[:result]['value'],
@@ -169,6 +170,10 @@ module Applitools
169
170
  )
170
171
  end
171
172
 
173
+ if size_mod == 'selector'
174
+ target_to_check.convert_coordinates(&Applitools::Selenium::VgMatchWindowData::CONVERT_COORDINATES)
175
+ end
176
+
172
177
  title = begin
173
178
  driver.title
174
179
  rescue StandardError => e
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Applitools
4
- VERSION = '3.17.3'.freeze
4
+ VERSION = '3.17.9'.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.17.3
4
+ version: 3.17.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Applitools Team
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-09 00:00:00.000000000 Z
11
+ date: 2020-06-19 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.17.3
19
+ version: 3.17.9
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.17.3
26
+ version: 3.17.9
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: selenium-webdriver
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -157,6 +157,7 @@ files:
157
157
  - lib/applitools/selenium/visual_grid/ios_device_info.rb
158
158
  - lib/applitools/selenium/visual_grid/ios_device_name.rb
159
159
  - lib/applitools/selenium/visual_grid/ios_screen_orientation.rb
160
+ - lib/applitools/selenium/visual_grid/render_browser_info.rb
160
161
  - lib/applitools/selenium/visual_grid/render_info.rb
161
162
  - lib/applitools/selenium/visual_grid/render_request.rb
162
163
  - lib/applitools/selenium/visual_grid/render_requests.rb
@@ -177,7 +178,7 @@ homepage: https://www.applitools.com
177
178
  licenses:
178
179
  - Applitools
179
180
  metadata: {}
180
- post_install_message:
181
+ post_install_message:
181
182
  rdoc_options: []
182
183
  require_paths:
183
184
  - lib
@@ -193,7 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
193
194
  version: '0'
194
195
  requirements: []
195
196
  rubygems_version: 3.0.8
196
- signing_key:
197
+ signing_key:
197
198
  specification_version: 4
198
199
  summary: Applitools Ruby Selenium SDK
199
200
  test_files: []