eyes_selenium 3.15.2.beta → 3.15.3.beta

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 (27) hide show
  1. checksums.yaml +4 -4
  2. data/lib/applitools/selenium/browser_types.rb +13 -0
  3. data/lib/applitools/selenium/browsers_info.rb +14 -0
  4. data/lib/applitools/selenium/configuration.rb +61 -0
  5. data/lib/applitools/selenium/external_css_resources.rb +29 -0
  6. data/lib/applitools/selenium/render_browser_info_fluent.rb +40 -0
  7. data/lib/applitools/selenium/render_resources.rb +13 -0
  8. data/lib/applitools/selenium/rgrid_dom.rb +44 -0
  9. data/lib/applitools/selenium/selenium_eyes.rb +2 -1
  10. data/lib/applitools/selenium/stitch_modes.rb +13 -0
  11. data/lib/applitools/selenium/{concerns/test_list.rb → test_list.rb} +0 -0
  12. data/lib/applitools/selenium/visual_grid/eyes_connector.rb +1 -1
  13. data/lib/applitools/selenium/visual_grid/render_browser_info.rb +3 -3
  14. data/lib/applitools/selenium/visual_grid/render_task.rb +3 -2
  15. data/lib/applitools/selenium/visual_grid/running_test.rb +2 -2
  16. data/lib/applitools/selenium/visual_grid/visual_grid_eyes.rb +13 -16
  17. data/lib/applitools/version.rb +1 -1
  18. data/lib/eyes_selenium.rb +0 -1
  19. metadata +13 -13
  20. data/lib/applitools/selenium/concerns/browser_types.rb +0 -15
  21. data/lib/applitools/selenium/concerns/browsers_info.rb +0 -16
  22. data/lib/applitools/selenium/concerns/external_css_resources.rb +0 -31
  23. data/lib/applitools/selenium/concerns/render_browser_info_fluent.rb +0 -42
  24. data/lib/applitools/selenium/concerns/render_resources.rb +0 -15
  25. data/lib/applitools/selenium/concerns/rgrid_dom.rb +0 -46
  26. data/lib/applitools/selenium/concerns/stitch_modes.rb +0 -15
  27. data/lib/applitools/selenium/selenium_configuration.rb +0 -64
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6e5a38b0b8f0fac7661319fb1e1c358cf079c20da51be8af25cd20700c641369
4
- data.tar.gz: 7bb328c1da85593d5c470fd7404afa51628cba6a7d087c563d95fa0d74a528cf
3
+ metadata.gz: 8a16bd000d3c6425d1a5bdce022190199236939cd6386afe54bc808567c32a58
4
+ data.tar.gz: 07e34b7850610d964fd05d6bfec8b61af58427b4e78905af148b4dee32914085
5
5
  SHA512:
6
- metadata.gz: 6dbfa231ac4405f9b0e3ac669c8b3cf5b32e1acabab11e26b735b91af495590c953a1f59556821ea52ee8415c57d97b9ad59f9441816905e043421ffae20a5ff
7
- data.tar.gz: 6c1b856c17cf0ad44777b8bb09e3952b7fde08c07b3cc291bd6d8a4b84476c517402ac0a8bee95f3bd837b722489b8278695bef264f2948533a0ac0b36d1c75f
6
+ metadata.gz: af6c6901ed20979de2da90cca6cbc8900d6bb33e55cc9e88d3a4915e67e7d2c3b4276d262b7f7d0566d63391f0f6e528b2405b18e855e840fa654e311c5cf94f
7
+ data.tar.gz: ab3f2253b38875e6e0f779f4f691bc388f84c466fabdaca790b099321e508bc5dbb345d4ba60141d7db47ea4bcf29659b7af412fb6a4dc67078fba5db4205591
@@ -0,0 +1,13 @@
1
+ module Applitools
2
+ module Selenium
3
+ module BrowserTypes
4
+ extend self
5
+ CHROME = :chrome
6
+ FIREFOX = :firefox
7
+
8
+ def enum_values
9
+ [CHROME, FIREFOX]
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ module Applitools
2
+ module Selenium
3
+ class BrowsersInfo < Set
4
+ def add(obj)
5
+ return super if obj.is_a? Applitools::Selenium::RenderBrowserInfo
6
+ raise(
7
+ Applitools::EyesIllegalArgument,
8
+ "It is expected the value to be an Applitools::Selenium::RenderBrowserInfo instance," \
9
+ " but got #{obj.class} instead"
10
+ )
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,61 @@
1
+ require 'applitools/selenium/stitch_modes'
2
+ require 'applitools/selenium/stitch_modes'
3
+ require 'applitools/selenium/browsers_info'
4
+
5
+ module Applitools
6
+ module Selenium
7
+ class Configuration < Applitools::EyesBaseConfiguration
8
+ DEFAULT_CONFIG = proc do
9
+ {
10
+ force_full_page_screenshot: false,
11
+ wait_before_screenshots: 100,
12
+ stitch_mode: Applitools::Selenium::StitchModes::CSS,
13
+ hide_scrollbars: false,
14
+ hide_caret: false,
15
+ browsers_info: Applitools::Selenium::BrowsersInfo.new
16
+ }
17
+ end
18
+ class << self
19
+ def default_config
20
+ super.merge DEFAULT_CONFIG.call
21
+ end
22
+ end
23
+
24
+ boolean_field :force_full_page_screenshot
25
+ int_field :wait_before_screenshots
26
+ enum_field :stitch_mode, Applitools::Selenium::StitchModes.enum_values
27
+ boolean_field :hide_scrollbars
28
+ boolean_field :hide_caret
29
+ boolean_field :send_dom
30
+
31
+ object_field :browsers_info, Applitools::Selenium::BrowsersInfo
32
+
33
+ int_field :concurrent_sessions
34
+
35
+ def add_browser(*args)
36
+ case args.size
37
+ when 0, 1
38
+ b = args[0]
39
+ browser = b || Applitools::Selenium::RenderBrowserInfo.new
40
+ when 3
41
+ browser = Applitools::Selenium::RenderBrowserInfo.new.tap do |bi|
42
+ bi.viewport_size = Applitools::RectangleSize.new(args[0], args[1])
43
+ bi.browser_type = args[2]
44
+ end
45
+ end
46
+ yield(Applitools::Selenium::RenderBrowserInfoFluent.new(browser)) if block_given?
47
+ browsers_info.add browser
48
+ self.viewport_size = browser.viewport_size unless viewport_size
49
+ self
50
+ end
51
+
52
+ def deep_clone
53
+ new_config = self.class.new
54
+ config_keys.each do |k|
55
+ new_config.send("#{k}=", self.send(k).clone)
56
+ end
57
+ new_config
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,29 @@
1
+ require 'css_parser'
2
+ # require 'pry'
3
+
4
+ module Applitools
5
+ module Selenium
6
+ class ExternalCssResources
7
+ include CssParser
8
+ def initialize(url, base_url = nil)
9
+ @parser = CssParser::Parser.new(absolute_paths: true)
10
+ @parser.load_uri!(url)
11
+ @parser.compact!
12
+ end
13
+
14
+ def flatten_rules
15
+ @flatten ||= flatten_hash(hash, 0)
16
+ end
17
+
18
+ def hash
19
+ @h ||= @parser.to_h
20
+ end
21
+
22
+ def images
23
+ result = []
24
+ @parser.each_rule_set { |s| s.expand_background_shorthand!; result.push(s) unless s.get_value('background-image').empty? }
25
+ result
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,40 @@
1
+ module Applitools
2
+ module Selenium
3
+ class RenderBrowserInfoFluent
4
+ attr_accessor :browser_info
5
+ def initialize(browser_info)
6
+ self.browser_info = browser_info
7
+ end
8
+
9
+ def width(value)
10
+ browser_info.viewport_size.width = value
11
+ self
12
+ end
13
+
14
+ def height(value)
15
+ browser_info.viewport_size.height = value
16
+ self
17
+ end
18
+
19
+ def type(value)
20
+ browser_info.browser_type = value
21
+ self
22
+ end
23
+
24
+ def platform(value)
25
+ browser_info.platform = value
26
+ self
27
+ end
28
+
29
+ def size_mode(value)
30
+ browser_info.size_mode = value
31
+ self
32
+ end
33
+
34
+ def environment(value)
35
+ browser_info.baseline_env_name = value
36
+ self
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,13 @@
1
+ module Applitools
2
+ module Selenium
3
+ class RenderResources < Hash
4
+ def []=(key, value)
5
+ raise Applitools::EyesIllegalArgument, "Expected key to be an instance of URI (but got #{key.class})" unless
6
+ key.is_a? URI
7
+ raise Applitools::EyesIllegalArgument, "Expected key to be an instance of Applitools::Selenium::VGResource" \
8
+ " (but got #{value.class})" unless value.is_a? Applitools::Selenium::VGResource
9
+ return super
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,44 @@
1
+ module Applitools
2
+ module Selenium
3
+ class RGridDom
4
+ CONTENT_TYPE = 'x-applitools-html/cdt'.freeze
5
+ include Applitools::Jsonable
6
+ json_fields :hash, :hashFormat
7
+ attr_accessor :dom_nodes, :resources, :url, :data
8
+
9
+ def initialize(*args)
10
+ options = Applitools::Utils.extract_options! args
11
+ self.url = options[:url]
12
+ self.dom_nodes = options[:dom_nodes]
13
+ self.resources = options[:resources]
14
+ self.hash_format = 'sha256'
15
+ self.data = {
16
+ 'resources' => resources,
17
+ 'domNodes' => dom_nodes
18
+ }
19
+ self.hash = calculate_sha_256
20
+ end
21
+
22
+ def calculate_sha_256
23
+ # str = Applitools::Utils.stringify_for_hash(data)
24
+ Digest::SHA256.hexdigest(content)
25
+ end
26
+
27
+ # def hash
28
+ # calculate_sha_256
29
+ # end
30
+
31
+ def content
32
+ Oj.dump(json_value(data.sort.to_h))
33
+ end
34
+
35
+ def resource
36
+ Applitools::Selenium::VGResource.new(
37
+ url,
38
+ CONTENT_TYPE,
39
+ content
40
+ )
41
+ end
42
+ end
43
+ end
44
+ end
@@ -98,7 +98,8 @@ module Applitools::Selenium
98
98
  attr_accessor :base_agent_id, :screenshot, :force_full_page_screenshot, :hide_scrollbars,
99
99
  :wait_before_screenshots, :debug_screenshots, :stitch_mode, :disable_horizontal_scrolling,
100
100
  :disable_vertical_scrolling, :explicit_entire_size, :debug_screenshot_provider, :stitching_overlap,
101
- :full_page_capture_algorithm_left_top_offset, :screenshot_type, :send_dom, :use_dom, :enable_patterns
101
+ :full_page_capture_algorithm_left_top_offset, :screenshot_type, :send_dom, :use_dom, :enable_patterns,
102
+ :config
102
103
  attr_reader :driver
103
104
 
104
105
  def_delegators 'Applitools::EyesLogger', :logger, :log_handler, :log_handler=
@@ -0,0 +1,13 @@
1
+ module Applitools
2
+ module Selenium
3
+ module StitchModes
4
+ extend self
5
+ CSS = :CSS
6
+ SCROLL = :SCROLL
7
+
8
+ def enum_values
9
+ [CSS, SCROLL]
10
+ end
11
+ end
12
+ end
13
+ end
@@ -21,7 +21,7 @@ module Applitools
21
21
  end
22
22
 
23
23
  def ensure_config
24
- self.config = Applitools::Selenium::SeleniumConfiguration.new
24
+ self.config = Applitools::Selenium::Configuration.new
25
25
  end
26
26
 
27
27
 
@@ -1,4 +1,4 @@
1
- require 'applitools/selenium/concerns/browser_types'
1
+ require 'applitools/selenium/browser_types'
2
2
 
3
3
  module Applitools
4
4
  module Selenium
@@ -6,7 +6,7 @@ module Applitools
6
6
  DEFAULT_CONFIG = proc do
7
7
  {
8
8
  platform: 'linux',
9
- browser_type: Applitools::Selenium::Concerns::BrowserTypes::CHROME,
9
+ browser_type: Applitools::Selenium::BrowserTypes::CHROME,
10
10
  size_mode: 'full-page',
11
11
  viewport_size: Applitools::RectangleSize.from_any_argument(width: 0, height: 0)
12
12
  }
@@ -18,7 +18,7 @@ module Applitools
18
18
  end
19
19
 
20
20
  object_field :viewport_size, Applitools::RectangleSize
21
- enum_field :browser_type, Applitools::Selenium::Concerns::BrowserTypes.enum_values
21
+ enum_field :browser_type, Applitools::Selenium::BrowserTypes.enum_values
22
22
  string_field :platform
23
23
  string_field :size_mode
24
24
  string_field :baseline_env_name
@@ -87,6 +87,7 @@ module Applitools
87
87
  def poll_render_status(rq)
88
88
  iterations = 0
89
89
  statuses = []
90
+ raise Applitools::EyesError, 'RenderStatus: Got empty renderId!' unless rq.render_id.is_a?(String) && !rq.render_id.empty?
90
91
  begin
91
92
  fails_count = 0
92
93
  proc = proc do
@@ -118,7 +119,7 @@ module Applitools
118
119
  def prepare_data_for_rg(data)
119
120
  self.all_blobs = data["blobs"]
120
121
  self.resource_urls = data["resourceUrls"]
121
- self.request_resources = Applitools::Selenium::Concerns::RenderResources.new
122
+ self.request_resources = Applitools::Selenium::RenderResources.new
122
123
  # self.request_resources = {}
123
124
  all_blobs.map {|blob| Applitools::Selenium::VGResource.parse_blob_from_script(blob)}.each do |blob|
124
125
  request_resources[blob.url] = blob
@@ -148,7 +149,7 @@ module Applitools
148
149
  r.size_mode = running_test.browser_info.size_mode
149
150
  end
150
151
 
151
- dom = Applitools::Selenium::Concerns::RGridDom.new(
152
+ dom = Applitools::Selenium::RGridDom.new(
152
153
  url: script_data["url"], dom_nodes: script_data['cdt'], resources: request_resources
153
154
  )
154
155
 
@@ -1,5 +1,6 @@
1
1
  require 'state_machine'
2
2
  require 'digest'
3
+ require 'applitools/selenium/visual_grid/render_task'
3
4
 
4
5
  module Applitools
5
6
  module Selenium
@@ -106,7 +107,7 @@ module Applitools
106
107
  end
107
108
 
108
109
  event :becomes_tested do
109
- transition :opened => :tested
110
+ transition [:new, :not_rendered, :opened] => :tested
110
111
  end
111
112
 
112
113
  event :becomes_completed do
@@ -120,7 +121,6 @@ module Applitools
120
121
 
121
122
  def initialize(eyes, browser_info, driver)
122
123
  Applitools::ArgumentGuard.is_a? eyes, 'eyes', Applitools::Selenium::EyesConnector
123
- Applitools::ArgumentGuard.is_a? browser_info, 'browser_info', Applitools::Selenium::RenderBrowserInfo
124
124
 
125
125
  self.eyes = eyes
126
126
  self.browser_info = browser_info
@@ -1,4 +1,4 @@
1
- require 'applitools/selenium/selenium_configuration'
1
+ require 'applitools/selenium/configuration'
2
2
  module Applitools
3
3
  module Selenium
4
4
  class VisualGridEyes
@@ -11,7 +11,7 @@ module Applitools
11
11
 
12
12
  attr_accessor :api_key, :server_url, :proxy, :opened
13
13
 
14
- def_delegators 'config', *Applitools::Selenium::SeleniumConfiguration.methods_to_delegate
14
+ def_delegators 'config', *Applitools::Selenium::Configuration.methods_to_delegate
15
15
  def_delegators 'config', *Applitools::EyesBaseConfiguration.methods_to_delegate
16
16
 
17
17
  def initialize(visual_grid_manager, server_url = nil)
@@ -22,7 +22,7 @@ module Applitools
22
22
  end
23
23
 
24
24
  def ensure_config
25
- self.config = Applitools::Selenium::SeleniumConfiguration.new
25
+ self.config = Applitools::Selenium::Configuration.new
26
26
  end
27
27
 
28
28
 
@@ -31,13 +31,6 @@ module Applitools
31
31
  options = Applitools::Utils.extract_options!(args)
32
32
  Applitools::ArgumentGuard.hash(options, 'options', [:driver])
33
33
 
34
- # self.current_config = options.delete(:config)
35
- # self.current_config = yield(Applitools::Selenium::SeleniumConfiguration.new) if block_given?
36
-
37
- # Applitools::ArgumentGuard.is_a? options[:driver], 'options[:driver]', ::Selenium::WebDriver
38
- # Applitools::ArgumentGuard.is_a? current_config, 'options[:config]', Applitools::Selenium::SeleniumConfiguration
39
-
40
- # batch_info.name = config.app_name
41
34
  self.driver = options.delete(:driver)
42
35
  self.current_url = driver.current_url
43
36
 
@@ -66,13 +59,17 @@ module Applitools
66
59
  script = <<-END
67
60
  var callback = arguments[arguments.length - 1]; return (#{Applitools::Selenium::Scripts::PROCESS_RESOURCES})().then(JSON.stringify).then(callback, function(err) {callback(err.stack || err.toString())});
68
61
  END
69
-
70
- script_result = driver.execute_async_script(script).freeze
71
- mod = Digest::SHA2.hexdigest(script_result)
72
- test_list.each do |test|
73
- test.check(tag, target, script_result.dup, visual_grid_manager, mod)
62
+ begin
63
+ script_result = driver.execute_async_script(script).freeze
64
+ mod = Digest::SHA2.hexdigest(script_result)
65
+ test_list.each do |t|
66
+ t.check(tag, target, script_result.dup, visual_grid_manager, mod)
67
+ end
68
+ test_list.each { |t| t.becomes_not_rendered}
69
+ rescue StandardError => e
70
+ Applitools::EyesLogger.error e.message
71
+ test_list.each { |t| t.becomes_tested}
74
72
  end
75
- test_list.each { |t| t.becomes_not_rendered}
76
73
  end
77
74
 
78
75
  def close(throw_exception = true)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Applitools
4
- VERSION = '3.15.2.beta'.freeze
4
+ VERSION = '3.15.3.beta'.freeze
5
5
  end
@@ -20,7 +20,6 @@ end
20
20
 
21
21
  Applitools::Selenium.require_dir 'selenium/scripts'
22
22
  Applitools::Selenium.require_dir 'selenium/visual_grid'
23
- Applitools::Selenium.require_dir 'selenium/concerns'
24
23
  Applitools::Selenium.require_dir 'selenium'
25
24
  Applitools::Selenium.require_dir 'selenium/dom_capture'
26
25
 
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.2.beta
4
+ version: 3.15.3.beta
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-03-31 00:00:00.000000000 Z
11
+ date: 2019-04-01 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.2.beta
19
+ version: 3.15.3.beta
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.2.beta
26
+ version: 3.15.3.beta
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: selenium-webdriver
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -75,14 +75,9 @@ extra_rdoc_files: []
75
75
  files:
76
76
  - lib/applitools/selenium/border_aware_element_content_location_provider.rb
77
77
  - lib/applitools/selenium/browser.rb
78
- - lib/applitools/selenium/concerns/browser_types.rb
79
- - lib/applitools/selenium/concerns/browsers_info.rb
80
- - lib/applitools/selenium/concerns/external_css_resources.rb
81
- - lib/applitools/selenium/concerns/render_browser_info_fluent.rb
82
- - lib/applitools/selenium/concerns/render_resources.rb
83
- - lib/applitools/selenium/concerns/rgrid_dom.rb
84
- - lib/applitools/selenium/concerns/stitch_modes.rb
85
- - lib/applitools/selenium/concerns/test_list.rb
78
+ - lib/applitools/selenium/browser_types.rb
79
+ - lib/applitools/selenium/browsers_info.rb
80
+ - lib/applitools/selenium/configuration.rb
86
81
  - lib/applitools/selenium/context_based_scale_provider.rb
87
82
  - lib/applitools/selenium/css_transform/css_transform.rb
88
83
  - lib/applitools/selenium/css_translate_element_position_provider.rb
@@ -93,6 +88,7 @@ files:
93
88
  - lib/applitools/selenium/element.rb
94
89
  - lib/applitools/selenium/element_position_provider.rb
95
90
  - lib/applitools/selenium/entire_element_screenshot.rb
91
+ - lib/applitools/selenium/external_css_resources.rb
96
92
  - lib/applitools/selenium/eyes.rb
97
93
  - lib/applitools/selenium/eyes_screenshot.rb
98
94
  - lib/applitools/selenium/eyes_target_locator.rb
@@ -106,13 +102,17 @@ files:
106
102
  - lib/applitools/selenium/move_to_region_visibility_strategy.rb
107
103
  - lib/applitools/selenium/nop_region_visibility_strategy.rb
108
104
  - lib/applitools/selenium/region_provider.rb
105
+ - lib/applitools/selenium/render_browser_info_fluent.rb
106
+ - lib/applitools/selenium/render_resources.rb
107
+ - lib/applitools/selenium/rgrid_dom.rb
109
108
  - lib/applitools/selenium/sauce/driver.rb
110
109
  - lib/applitools/selenium/scripts/process_page_and_serialize.rb
111
110
  - lib/applitools/selenium/scroll_position_provider.rb
112
- - lib/applitools/selenium/selenium_configuration.rb
113
111
  - lib/applitools/selenium/selenium_eyes.rb
112
+ - lib/applitools/selenium/stitch_modes.rb
114
113
  - lib/applitools/selenium/takes_screenshot_image_provider.rb
115
114
  - lib/applitools/selenium/target.rb
115
+ - lib/applitools/selenium/test_list.rb
116
116
  - lib/applitools/selenium/viewport_screenshot.rb
117
117
  - lib/applitools/selenium/viewport_size.rb
118
118
  - lib/applitools/selenium/visual_grid/eyes_connector.rb
@@ -1,15 +0,0 @@
1
- module Applitools
2
- module Selenium
3
- module Concerns
4
- module BrowserTypes
5
- extend self
6
- CHROME = :chrome
7
- FIREFOX = :firefox
8
-
9
- def enum_values
10
- [CHROME, FIREFOX]
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,16 +0,0 @@
1
- module Applitools
2
- module Selenium
3
- module Concerns
4
- class BrowsersInfo < Set
5
- def add(obj)
6
- return super if obj.is_a? Applitools::Selenium::RenderBrowserInfo
7
- raise(
8
- Applitools::EyesIllegalArgument,
9
- "It is expected the value to be an Applitools::Selenium::RenderBrowserInfo instance," \
10
- " but got #{obj.class} instead"
11
- )
12
- end
13
- end
14
- end
15
- end
16
- end
@@ -1,31 +0,0 @@
1
- require 'css_parser'
2
- # require 'pry'
3
-
4
- module Applitools
5
- module Selenium
6
- module Concerns
7
- class ExternalCssResources
8
- include CssParser
9
- def initialize(url, base_url = nil)
10
- @parser = CssParser::Parser.new(absolute_paths: true)
11
- @parser.load_uri!(url)
12
- @parser.compact!
13
- end
14
-
15
- def flatten_rules
16
- @flatten ||= flatten_hash(hash, 0)
17
- end
18
-
19
- def hash
20
- @h ||= @parser.to_h
21
- end
22
-
23
- def images
24
- result = []
25
- @parser.each_rule_set { |s| s.expand_background_shorthand!; result.push(s) unless s.get_value('background-image').empty? }
26
- result
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,42 +0,0 @@
1
- module Applitools
2
- module Selenium
3
- module Concerns
4
- class RenderBrowserInfoFluent
5
- attr_accessor :browser_info
6
- def initialize(browser_info)
7
- self.browser_info = browser_info
8
- end
9
-
10
- def width(value)
11
- browser_info.viewport_size.width = value
12
- self
13
- end
14
-
15
- def height(value)
16
- browser_info.viewport_size.height = value
17
- self
18
- end
19
-
20
- def type(value)
21
- browser_info.browser_type = value
22
- self
23
- end
24
-
25
- def platform(value)
26
- browser_info.platform = value
27
- self
28
- end
29
-
30
- def size_mode(value)
31
- browser_info.size_mode = value
32
- self
33
- end
34
-
35
- def environment(value)
36
- browser_info.baseline_env_name = value
37
- self
38
- end
39
- end
40
- end
41
- end
42
- end
@@ -1,15 +0,0 @@
1
- module Applitools
2
- module Selenium
3
- module Concerns
4
- class RenderResources < Hash
5
- def []=(key, value)
6
- raise Applitools::EyesIllegalArgument, "Expected key to be an instance of URI (but got #{key.class})" unless
7
- key.is_a? URI
8
- raise Applitools::EyesIllegalArgument, "Expected key to be an instance of Applitools::Selenium::VGResource" \
9
- " (but got #{value.class})" unless value.is_a? Applitools::Selenium::VGResource
10
- return super
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,46 +0,0 @@
1
- module Applitools
2
- module Selenium
3
- module Concerns
4
- class RGridDom
5
- CONTENT_TYPE = 'x-applitools-html/cdt'.freeze
6
- include Applitools::Jsonable
7
- json_fields :hash, :hashFormat
8
- attr_accessor :dom_nodes, :resources, :url, :data
9
-
10
- def initialize(*args)
11
- options = Applitools::Utils.extract_options! args
12
- self.url = options[:url]
13
- self.dom_nodes = options[:dom_nodes]
14
- self.resources = options[:resources]
15
- self.hash_format = 'sha256'
16
- self.data = {
17
- 'resources' => resources,
18
- 'domNodes' => dom_nodes
19
- }
20
- self.hash = calculate_sha_256
21
- end
22
-
23
- def calculate_sha_256
24
- # str = Applitools::Utils.stringify_for_hash(data)
25
- Digest::SHA256.hexdigest(content)
26
- end
27
-
28
- # def hash
29
- # calculate_sha_256
30
- # end
31
-
32
- def content
33
- Oj.dump(json_value(data.sort.to_h))
34
- end
35
-
36
- def resource
37
- Applitools::Selenium::VGResource.new(
38
- url,
39
- CONTENT_TYPE,
40
- content
41
- )
42
- end
43
- end
44
- end
45
- end
46
- end
@@ -1,15 +0,0 @@
1
- module Applitools
2
- module Selenium
3
- module Concerns
4
- module StitchModes
5
- extend self
6
- CSS = :CSS
7
- SCROLL = :SCROLL
8
-
9
- def enum_values
10
- [CSS, SCROLL]
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,64 +0,0 @@
1
- require 'applitools/selenium/concerns/stitch_modes'
2
- require 'applitools/selenium/concerns/stitch_modes'
3
- require 'applitools/selenium/concerns/browsers_info'
4
-
5
- module Applitools
6
- module Selenium
7
- class SeleniumConfiguration < Applitools::EyesBaseConfiguration
8
- DEFAULT_CONFIG = proc do
9
- {
10
- force_full_page_screenshot: false,
11
- wait_before_screenshots: 100,
12
- stitch_mode: Applitools::Selenium::Concerns::StitchModes::CSS,
13
- hide_scrollbars: false,
14
- hide_caret: false,
15
- browsers_info: Applitools::Selenium::Concerns::BrowsersInfo.new
16
- }
17
- end
18
- class << self
19
- def default_config
20
- super.merge DEFAULT_CONFIG.call
21
- end
22
- end
23
-
24
- boolean_field :force_full_page_screenshot
25
- int_field :wait_before_screenshots
26
- enum_field :stitch_mode, Applitools::Selenium::Concerns::StitchModes.enum_values
27
- boolean_field :hide_scrollbars
28
- boolean_field :hide_caret
29
- boolean_field :send_dom
30
-
31
- object_field :browsers_info, Applitools::Selenium::Concerns::BrowsersInfo
32
-
33
- int_field :concurrent_sessions
34
-
35
- # private int waitBeforeScreenshots = DEFAULT_WAIT_BEFORE_SCREENSHOTS;
36
- # private StitchMode stitchMode = StitchMode.SCROLL;
37
- # private boolean hideScrollbars = true;
38
- # private boolean hideCaret = true;
39
- #
40
- # //Rendering Configuration
41
- # private int concurrentSessions = 3;
42
- # private boolean isThrowExceptionOn = false;
43
- # private Boolean isRenderingConfig = false;
44
- #
45
- # public enum BrowserType {CHROME, FIREFOX}
46
- # private List<RenderBrowserInfo> browsersInfo =
47
- def add_browser(b = nil)
48
- browser = b || Applitools::Selenium::RenderBrowserInfo.new
49
- yield(Applitools::Selenium::Concerns::RenderBrowserInfoFluent.new(browser)) if block_given?
50
- browsers_info.add browser
51
- self.viewport_size = browser.viewport_size unless viewport_size
52
- self
53
- end
54
-
55
- def deep_clone
56
- new_config = self.class.new
57
- config_keys.each do |k|
58
- new_config.send("#{k}=", self.send(k).clone)
59
- end
60
- new_config
61
- end
62
- end
63
- end
64
- end