eyes_core 3.18.4 → 4.0.3

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 (38) hide show
  1. checksums.yaml +4 -4
  2. data/lib/applitools/appium/eyes.rb +3 -2
  3. data/lib/applitools/appium/target.rb +218 -193
  4. data/lib/applitools/calabash/calabash_screenshot_provider.rb +23 -23
  5. data/lib/applitools/calabash/full_page_capture_algorithm/base.rb +1 -1
  6. data/lib/applitools/connectivity/proxy.rb +11 -3
  7. data/lib/applitools/connectivity/server_connector.rb +2 -1
  8. data/lib/applitools/core/accessibility_level.rb +11 -0
  9. data/lib/applitools/core/batch_info.rb +24 -2
  10. data/lib/applitools/core/classic_runner.rb +9 -1
  11. data/lib/applitools/core/debug_screenshot_provider.rb +3 -3
  12. data/lib/applitools/core/eyes_base.rb +81 -28
  13. data/lib/applitools/core/eyes_base_configuration.rb +22 -1
  14. data/lib/applitools/core/eyes_runner.rb +12 -0
  15. data/lib/applitools/core/floating_region.rb +17 -8
  16. data/lib/applitools/core/image_match_settings.rb +54 -0
  17. data/lib/applitools/core/match_level.rb +3 -1
  18. data/lib/applitools/core/screenshot.rb +7 -7
  19. data/lib/applitools/core/test_result_summary.rb +17 -4
  20. data/lib/applitools/core/test_results.rb +2 -2
  21. data/lib/applitools/core/universal_eyes_checks.rb +66 -0
  22. data/lib/applitools/core/universal_eyes_open.rb +100 -0
  23. data/lib/applitools/core/universal_new_api.rb +43 -0
  24. data/lib/applitools/universal_sdk/universal_check_settings.rb +190 -0
  25. data/lib/applitools/universal_sdk/universal_client.rb +142 -0
  26. data/lib/applitools/universal_sdk/universal_client_socket.rb +110 -0
  27. data/lib/applitools/universal_sdk/universal_eyes.rb +45 -0
  28. data/lib/applitools/universal_sdk/universal_eyes_config.rb +205 -0
  29. data/lib/applitools/universal_sdk/universal_eyes_manager.rb +40 -0
  30. data/lib/applitools/universal_sdk/universal_eyes_manager_config.rb +62 -0
  31. data/lib/applitools/universal_sdk/universal_server.rb +81 -0
  32. data/lib/applitools/utils/image_utils.rb +7 -7
  33. data/lib/applitools/utils/utils.rb +13 -0
  34. data/lib/applitools/version.rb +2 -1
  35. data/lib/eyes_core.rb +4 -1
  36. metadata +55 -18
  37. data/lib/applitools/chunky_png/resampling.rb +0 -51
  38. data/lib/applitools/chunky_png_patch.rb +0 -11
@@ -0,0 +1,205 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Applitools
4
+ class UniversalEyesConfig
5
+ include Applitools::Jsonable
6
+
7
+ # export type EyesBaseConfig = {
8
+ # logs?: LogHandler
9
+ # debugScreenshots?: DebugScreenshotHandler
10
+ # agentId?: string
11
+ # apiKey?: string
12
+ # serverUrl?: string
13
+ # proxy?: Proxy
14
+ # isDisabled?: boolean
15
+ # connectionTimeout?: number
16
+ # removeSession?: boolean
17
+ # remoteEvents?: {serverUrl: string; accessKey?: string; timeout?: number}
18
+ # }
19
+ json_fields :logs,
20
+ :debugScreenshots,
21
+ :agentId,
22
+ :apiKey,
23
+ :serverUrl,
24
+ :proxy,
25
+ :isDisabled,
26
+ :connectionTimeout,
27
+ :removeSession,
28
+ :remoteEvents
29
+
30
+ # export type EyesOpenConfig = {
31
+ # appName?: string
32
+ # testName?: string
33
+ # displayName?: string
34
+ # viewportSize?: Size
35
+ # sessionType?: SessionType
36
+ # properties?: CustomProperty[]
37
+ # batch?: Batch
38
+ # defaultMatchSettings?: MatchSettings<Region>
39
+ # hostApp?: string
40
+ # hostOS?: string
41
+ # hostAppInfo?: string
42
+ # hostOSInfo?: string
43
+ # deviceInfo?: string
44
+ # baselineEnvName?: string
45
+ # environmentName?: string
46
+ # branchName?: string
47
+ # parentBranchName?: string
48
+ # baselineBranchName?: string
49
+ # compareWithParentBranch?: boolean
50
+ # ignoreBaseline?: boolean
51
+ # saveFailedTests?: boolean
52
+ # saveNewTests?: boolean
53
+ # saveDiffs?: boolean
54
+ # dontCloseBatches?: boolean
55
+ # }
56
+ json_fields :appName,
57
+ :testName,
58
+ :displayName,
59
+ :viewportSize,
60
+ :sessionType,
61
+ :properties,
62
+ :batch,
63
+ :defaultMatchSettings,
64
+ :hostApp,
65
+ :hostOS,
66
+ :hostAppInfo,
67
+ :hostOSInfo,
68
+ :deviceInfo,
69
+ :baselineEnvName,
70
+ :environmentName,
71
+ :branchName,
72
+ :parentBranchName,
73
+ :baselineBranchName,
74
+ :compareWithParentBranch,
75
+ :ignoreBaseline,
76
+ :saveFailedTests,
77
+ :saveNewTests,
78
+ :saveDiffs,
79
+ :dontCloseBatches
80
+
81
+ # export type EyesCheckConfig = {
82
+ # sendDom?: boolean
83
+ # matchTimeout?: number
84
+ # forceFullPageScreenshot?: boolean
85
+ # }
86
+ json_fields :sendDom,
87
+ :matchTimeout,
88
+ :forceFullPageScreenshot
89
+
90
+ # export type EyesClassicConfig<TElement = unknown, TSelector = unknown> = {
91
+ # waitBeforeScreenshots?: number
92
+ # stitchMode?: StitchMode
93
+ # hideScrollbars?: boolean
94
+ # hideCaret?: boolean
95
+ # stitchOverlap?: number
96
+ # scrollRootElement?: TElement | TSelector
97
+ # cut?: ImageCropRect | ImageCropRegion
98
+ # rotation?: ImageRotation
99
+ # scaleRatio?: number
100
+ # waitBeforeCapture?: number
101
+ # }
102
+ json_fields :waitBeforeScreenshots,
103
+ :stitchMode,
104
+ :hideScrollbars,
105
+ :hideCaret,
106
+ :stitchOverlap,
107
+ :scrollRootElement,
108
+ :cut,
109
+ :rotation,
110
+ :scaleRatio,
111
+ :waitBeforeCapture
112
+
113
+ # export type EyesUFGConfig = {
114
+ # concurrentSessions?: number
115
+ # browsersInfo?: (DesktopBrowserRenderer | ChromeEmulationDeviceRenderer | IOSDeviceRenderer)[]
116
+ # visualGridOptions?: Record<string, any>
117
+ # layoutBreakpoints?: boolean | number[]
118
+ # disableBrowserFetching?: boolean
119
+ # }
120
+ json_fields :concurrentSessions,
121
+ :browsersInfo,
122
+ :visualGridOptions,
123
+ :layoutBreakpoints,
124
+ :disableBrowserFetching
125
+
126
+ # 23 + 3 + 2 + 11 = 39
127
+ FROM_ORIGINAL_EYES = [:api_key, :app_name, :batch, :browsers_info, :concurrent_sessions, :debug_screenshots,
128
+ :force_full_page_screenshot, :hide_caret, :hide_scrollbars, :host_app, :host_os, :match_timeout, :proxy,
129
+ :save_failed_tests, :save_new_tests, :scale_ratio, :send_dom, :server_url, :stitch_mode, :test_name,
130
+ :viewport_size, :visual_grid_options, :wait_before_screenshots, :wait_before_capture] + [
131
+ :disabled?, # disabled? => is_disabled
132
+ :stitching_overlap, # SeleniumEyes.stitching_overlap => stitch_overlap
133
+ :dont_fetch_resources # dont_fetch_resources => disable_browser_fetching
134
+ ] + [
135
+ :layout_breakpoints,
136
+ :scroll_root_element,
137
+ ] + [
138
+ :environment_name, :branch_name, :default_match_settings, :properties, :parent_branch_name,
139
+ :compare_with_parent_branch, :baseline_env_name, :save_diffs, :session_type, :baseline_branch_name
140
+ ]
141
+
142
+ # 51 - 39 - 2 = 10
143
+ OTHER = [:logs, :remove_session, :remote_events, :display_name, :host_app_info, :host_os_info, :device_info,
144
+ :ignore_baseline, :cut, :rotation ]
145
+
146
+
147
+ alias disabled= is_disabled=
148
+ alias stitching_overlap= stitch_overlap=
149
+ alias dont_fetch_resources= disable_browser_fetching=
150
+
151
+ def initialize(*args)
152
+ options = Applitools::Utils.extract_options! args
153
+ options.keys.select {|k| options[k] && respond_to?("#{k}=") }.each {|k| send("#{k}=", options[k]) }
154
+ # other
155
+ self.connection_timeout = Applitools::Connectivity::ServerConnector::DEFAULT_TIMEOUT
156
+ if 'true'.casecmp(ENV['APPLITOOLS_DONT_CLOSE_BATCHES'] || '') == 0
157
+ self.dont_close_batches = true
158
+ Applitools::EyesLogger.info('APPLITOOLS_DONT_CLOSE_BATCHES environment variable set to true. Doing nothing.')
159
+ end
160
+ end
161
+
162
+ def from_original_sdk(original_eyes)
163
+ FROM_ORIGINAL_EYES.each {|m| copy_from(m, original_eyes) }
164
+ self.agent_id = original_eyes.base_agent_id if original_eyes.respond_to?(:base_agent_id)
165
+ self.agent_id = original_eyes.full_agent_id if original_eyes.respond_to?(:full_agent_id)
166
+ # self.display_name = original_eyes.app_name
167
+ prepare_for_json!
168
+ end
169
+
170
+ def copy_from(what, from)
171
+ if from.respond_to?(what)
172
+ send("#{what.to_s.chomp('?') }=", from.send(what))
173
+ else
174
+ puts "respond_to? #{what} - fail"
175
+ end
176
+ end
177
+
178
+ def prepare_for_json!
179
+ self.batch = batch.to_hash if batch.is_a?(Applitools::BatchInfo)
180
+ self.browsers_info = browsers_info.to_hash if browsers_info.is_a?(Applitools::Selenium::BrowsersInfo)
181
+ self.default_match_settings = default_match_settings.to_hash if default_match_settings.is_a?(Applitools::ImageMatchSettings)
182
+ self.proxy = proxy.to_hash if proxy.is_a?(Applitools::Connectivity::Proxy)
183
+ self.viewport_size = viewport_size.to_h if viewport_size.is_a?(Applitools::RectangleSize)
184
+ # require 'pry'
185
+ # binding.pry
186
+ end
187
+
188
+ def to_hash
189
+ json_data.compact.reject do |_, v|
190
+ case v
191
+ when Array, Hash
192
+ v.empty?
193
+ when Numeric
194
+ v.zero?
195
+ # when FalseClass
196
+ # true
197
+ else
198
+ false
199
+ end
200
+ end
201
+ end
202
+
203
+ end
204
+ end
205
+ # U-Notes : Added internal Applitools::UniversalEyesConfig
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ # require_relative 'universal_eyes'
4
+
5
+ module Applitools
6
+ class UniversalEyesManager
7
+
8
+ extend Forwardable
9
+ def_delegators 'Applitools::EyesLogger', :logger
10
+
11
+ def initialize(manager, universal_client)
12
+ @manager = manager
13
+ @universal_client = universal_client
14
+ end
15
+
16
+ def open_eyes(driver_config_json, config)
17
+ # Applitools::EyesLogger.logger.debug "Driver: #{driver_config_json}"
18
+ # Applitools::EyesLogger.logger.debug "open config: #{config}"
19
+
20
+ @eyes = @universal_client.eyes_manager_make_eyes(@manager, driver_config_json, config)
21
+
22
+ if @eyes[:message] && @eyes[:stack]
23
+ Applitools::EyesLogger.logger.debug "Eyes not opened: #{@eyes[:message]}"
24
+ Applitools::EyesLogger.logger.debug "Stack for #{Applitools::Connectivity::UniversalClient::EYES_MANAGER_MAKE_EYES} : #{@eyes[:stack]}"
25
+ return nil
26
+ end
27
+
28
+ Applitools::EyesLogger.logger.debug "Eyes applitools-ref-id: #{@eyes[:"applitools-ref-id"]}"
29
+ # U-Notes : !!! Eyes.new
30
+ Applitools::UniversalEyes.new(@eyes, @universal_client)
31
+ end
32
+
33
+ def close_all_eyes
34
+ @universal_client.eyes_manager_close_all_eyes(@manager)
35
+ end
36
+
37
+ end
38
+
39
+ end
40
+ # U-Notes : Added internal Applitools::UniversalEyesManager
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Applitools
4
+ class UniversalEyesManagerConfig
5
+
6
+ def self.classic
7
+ new(type: CLASSIC)
8
+ end
9
+
10
+ def self.vg(concurrent_open_sessions=1)
11
+ new(type: VG, concurrency: concurrent_open_sessions, legacy: false)
12
+ end
13
+
14
+ # export type EyesManagerConfig<TType extends 'vg' | 'classic' = 'vg' | 'classic'> = {
15
+ # type: TType
16
+ # concurrency?: TType extends 'vg' ? number : never
17
+ # legacy?: TType extends 'vg' ? boolean : never
18
+ # }
19
+ attr_reader :type, :concurrency, :legacy
20
+
21
+ VG = 'vg'.freeze
22
+ CLASSIC = 'classic'.freeze
23
+ def type_enum_values
24
+ [VG, CLASSIC]
25
+ end
26
+
27
+ def initialize(*args)
28
+ options = Applitools::Utils.extract_options!(args)
29
+ self.type = options[:type].to_s
30
+ self.concurrency = options[:concurrency]
31
+ self.legacy = options[:legacy]
32
+ end
33
+
34
+ # enum_field :type, Applitools::UniversalEyesManagerConfig.type_enum_values
35
+ def type=(value)
36
+ available_values_array = type_enum_values
37
+ unless available_values_array.include? value
38
+ msg = "Unknown type #{value}. Allowed type values: #{available_values_array.join(', ')}"
39
+ raise(Applitools::EyesIllegalArgument, msg)
40
+ end
41
+ @type = value
42
+ end
43
+
44
+ def concurrency=(value)
45
+ @concurrency = value.to_i if type == VG
46
+ end
47
+
48
+ def legacy=(value)
49
+ @legacy = !!value if type == VG
50
+ end
51
+
52
+ def to_hash
53
+ result = {}
54
+ result[:type] = type
55
+ result[:concurrency] = concurrency if concurrency
56
+ result[:legacy] = legacy if legacy
57
+ result.compact
58
+ end
59
+
60
+ end
61
+ end
62
+ # U-Notes : Added internal Applitools::UniversalEyesManagerConfig
@@ -0,0 +1,81 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'open-uri'
4
+ require 'digest'
5
+ require 'fileutils'
6
+
7
+ module Applitools::Connectivity
8
+ module UniversalServer
9
+ extend self
10
+
11
+ DEFAULT_SERVER_IP = '127.0.0.1'
12
+ DEFAULT_SERVER_PORT = 21077
13
+
14
+ def run
15
+ raise 'Universal server unrecognized' unless find_server_file?
16
+ pid = spawn(filepath, '--singleton --lazy', [:out, :err] => ["log", 'w'])
17
+ Process.detach(pid)
18
+ end
19
+
20
+ def confirm_is_up(ip, port, attempt = 1)
21
+ raise 'Universal server unavailable' if (attempt === 16)
22
+ begin
23
+ TCPSocket.new(ip, port)
24
+ rescue Errno::ECONNREFUSED
25
+ sleep 1
26
+ confirm_is_up(ip, port, attempt + 1)
27
+ end
28
+ end
29
+
30
+ def check_or_run(ip = DEFAULT_SERVER_IP, port = DEFAULT_SERVER_PORT)
31
+ server_uri = "#{ip}:#{port}"
32
+ socket_uri = "ws://#{server_uri}/eyes"
33
+ begin
34
+ TCPSocket.new(ip, port)
35
+ msg = "Connect to #{server_uri}"
36
+ rescue Errno::ECONNREFUSED
37
+ run
38
+ confirm_is_up(ip, port)
39
+ msg = "Connect to #{server_libname} : #{filename}"
40
+ end
41
+
42
+ Applitools::EyesLogger.logger.debug(msg) if ENV['APPLITOOLS_SHOW_LOGS']
43
+ socket_uri
44
+ end
45
+
46
+ private
47
+
48
+ def filename
49
+ case RUBY_PLATFORM
50
+ when /mswin|windows/i
51
+ 'eyes-universal-win.exe'
52
+ when /linux|arch/i
53
+ 'eyes-universal-linux'
54
+ when /darwin/i
55
+ 'eyes-universal-macos'
56
+ else
57
+ raise 'Unsupported platform'
58
+ end
59
+ end
60
+
61
+ def server_libname
62
+ 'eyes_universal'
63
+ end
64
+
65
+ def server_lib
66
+ Gem::Specification.find_by_name(server_libname)
67
+ rescue Gem::MissingSpecError
68
+ nil
69
+ end
70
+
71
+ def filepath
72
+ server_lib ? File.join(server_lib.gem_dir, 'ext', 'eyes-universal', filename) : ''
73
+ end
74
+
75
+ def find_server_file?
76
+ File.exist?(filepath) && File.executable?(filepath)
77
+ end
78
+
79
+ end
80
+ end
81
+ # U-Notes : Added internal Applitools::Connectivity::UniversalServer
@@ -15,16 +15,16 @@ module Applitools::Utils
15
15
  # Creates an image object from the PNG bytes.
16
16
  # @param [String] png_bytes A binary string of the PNG bytes of the image.
17
17
  # @return [ChunkyPNG::Canvas] An image object.
18
- def png_image_from_bytes(png_bytes)
19
- ChunkyPNG::Image.from_blob(png_bytes)
20
- end
18
+ # def png_image_from_bytes(png_bytes)
19
+ # ChunkyPNG::Image.from_blob(png_bytes)
20
+ # end
21
21
 
22
22
  # Creates an image instance from a base64 representation of its PNG encoding.
23
23
  # @param [String] png_bytes The Base64 representation of a PNG image.
24
24
  # @return [ChunkyPNG::Canvas] An image object.
25
- def png_image_from_base64(png_bytes)
26
- png_image_from_bytes(Base64.decode64(png_bytes))
27
- end
25
+ # def png_image_from_base64(png_bytes)
26
+ # png_image_from_bytes(Base64.decode64(png_bytes))
27
+ # end
28
28
 
29
29
  # Get the raw PNG bytes of an image.
30
30
  # @param [ChunkyPNG::Canvas] image The image object for which to get the PNG bytes.
@@ -99,7 +99,7 @@ module Applitools::Utils
99
99
  Applitools::ArgumentGuard.not_nil(new_width, 'new_width')
100
100
  Applitools::ArgumentGuard.not_nil(new_height, 'new_height')
101
101
  Applitools::ArgumentGuard.not_nil(image, 'image')
102
- Applitools::ArgumentGuard.is_a?(image, 'image', ::ChunkyPNG::Image)
102
+ # Applitools::ArgumentGuard.is_a?(image, 'image', ::ChunkyPNG::Image)
103
103
 
104
104
  raise Applitools::EyesIllegalArgument.new "Invalid width: #{new_width}" if new_width <= 0
105
105
  raise Applitools::EyesIllegalArgument.new "Invalid height: #{new_height}" if new_height <= 0
@@ -84,6 +84,19 @@ module Applitools::Utils
84
84
  end
85
85
  end
86
86
 
87
+ def deep_stringify_keys(value)
88
+ case value
89
+ when Hash
90
+ value.each_with_object({}) do |(key, val), result|
91
+ result[key.to_s] = deep_stringify_keys(val)
92
+ end
93
+ when Array
94
+ value.map { |e| deep_stringify_keys(e) }
95
+ else
96
+ value
97
+ end
98
+ end
99
+
87
100
  private
88
101
 
89
102
  def convert_hash_keys(value, method)
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Applitools
4
- VERSION = '3.18.4'.freeze
4
+ VERSION = '4.0.3'.freeze
5
+ UNIVERSAL_VERSION = '2.5.7'.freeze
5
6
  end
data/lib/eyes_core.rb CHANGED
@@ -31,6 +31,8 @@ module Applitools
31
31
  # @!visibility private
32
32
  class UnknownNetworkStackError < EyesError; end
33
33
 
34
+ class NotUniversalServerRequestError < EyesError; end
35
+
34
36
  # @!visibility private
35
37
  class AbstractMethodCalled < EyesError
36
38
  attr_accessor :method_name, :object
@@ -63,10 +65,11 @@ end
63
65
  require_relative 'applitools/method_tracer'
64
66
  require_relative 'applitools/extensions'
65
67
  require_relative 'applitools/version'
66
- require_relative 'applitools/chunky_png_patch'
68
+ # require_relative 'applitools/chunky_png_patch'
67
69
 
68
70
  Applitools.require_dir 'utils'
69
71
  Applitools.require_dir 'core'
70
72
  Applitools.require_dir 'connectivity'
73
+ Applitools.require_dir 'universal_sdk'
71
74
 
72
75
  require_relative 'applitools/eyes_logger'
metadata CHANGED
@@ -1,45 +1,45 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eyes_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.18.4
4
+ version: 4.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Applitools Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-31 00:00:00.000000000 Z
11
+ date: 2022-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: oily_png
14
+ name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.2'
19
+ version: '0'
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: '1.2'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: chunky_png
28
+ name: faraday_middleware
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 1.3.6
33
+ version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 1.3.6
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: faraday
42
+ name: faraday-cookie_jar
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: faraday_middleware
56
+ name: oj
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: faraday-cookie_jar
70
+ name: colorize
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -81,7 +81,21 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: oj
84
+ name: faye-websocket
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: eventmachine
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - ">="
@@ -94,6 +108,20 @@ dependencies:
94
108
  - - ">="
95
109
  - !ruby/object:Gem::Version
96
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: eyes_universal
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 2.5.7
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 2.5.7
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: bundler
99
127
  requirement: !ruby/object:Gem::Requirement
@@ -297,8 +325,6 @@ files:
297
325
  - lib/applitools/calabash_steps.rb
298
326
  - lib/applitools/capybara/capybara_settings.rb
299
327
  - lib/applitools/capybara/driver.rb
300
- - lib/applitools/chunky_png/resampling.rb
301
- - lib/applitools/chunky_png_patch.rb
302
328
  - lib/applitools/connectivity/proxy.rb
303
329
  - lib/applitools/connectivity/server_connector.rb
304
330
  - lib/applitools/connectivity/user_agent_middleware.rb
@@ -352,11 +378,22 @@ files:
352
378
  - lib/applitools/core/test_results.rb
353
379
  - lib/applitools/core/text_trigger.rb
354
380
  - lib/applitools/core/trigger.rb
381
+ - lib/applitools/core/universal_eyes_checks.rb
382
+ - lib/applitools/core/universal_eyes_open.rb
383
+ - lib/applitools/core/universal_new_api.rb
355
384
  - lib/applitools/extensions.rb
356
385
  - lib/applitools/eyes_logger.rb
357
386
  - lib/applitools/method_tracer.rb
358
387
  - lib/applitools/rspec/target_matcher.rb
359
388
  - lib/applitools/sauce.rb
389
+ - lib/applitools/universal_sdk/universal_check_settings.rb
390
+ - lib/applitools/universal_sdk/universal_client.rb
391
+ - lib/applitools/universal_sdk/universal_client_socket.rb
392
+ - lib/applitools/universal_sdk/universal_eyes.rb
393
+ - lib/applitools/universal_sdk/universal_eyes_config.rb
394
+ - lib/applitools/universal_sdk/universal_eyes_manager.rb
395
+ - lib/applitools/universal_sdk/universal_eyes_manager_config.rb
396
+ - lib/applitools/universal_sdk/universal_server.rb
360
397
  - lib/applitools/utils/eyes_selenium_utils.rb
361
398
  - lib/applitools/utils/image_delta_compressor.rb
362
399
  - lib/applitools/utils/image_utils.rb
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Applitools
4
- class Enumerator < ::Enumerator
5
- if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.0.0')
6
- attr_reader :size
7
- def initialize(*args)
8
- @size = args[0] if args.size == 1
9
- super()
10
- end
11
- end
12
- end
13
- end
14
-
15
- module Applitools::ChunkyPNG
16
- module Resampling
17
- def resample_bicubic!(dst_width, dst_height)
18
- new_pixels = resampling_first_step(dst_width, dst_height)
19
- replace_canvas!(dst_width, dst_height, new_pixels)
20
- self
21
- end
22
-
23
- def resample_bicubic(new_width, new_height)
24
- dup.resample_bicubic!(new_width, new_height)
25
- end
26
-
27
- def bicubic_x_points(dst_width)
28
- bicubic_points2(width, dst_width, false)
29
- end
30
-
31
- def bicubic_y_points(dst_height)
32
- bicubic_points2(height, dst_height, true)
33
- end
34
-
35
- def line_with_bounds(y, src_dimension, direction)
36
- line = (direction ? column(y) : row(y))
37
- [imaginable_point(line[0], line[1])] + line + [
38
- imaginable_point(line[src_dimension - 2], line[src_dimension - 3]),
39
- imaginable_point(line[src_dimension - 1], line[src_dimension - 2])
40
- ]
41
- end
42
-
43
- def imaginable_point(point1, point2)
44
- r = [0, [255, ChunkyPNG::Color.r(point1) << 1].min - ChunkyPNG::Color.r(point2)].max
45
- g = [0, [255, ChunkyPNG::Color.g(point1) << 1].min - ChunkyPNG::Color.g(point2)].max
46
- b = [0, [255, ChunkyPNG::Color.b(point1) << 1].min - ChunkyPNG::Color.b(point2)].max
47
- a = [0, [255, ChunkyPNG::Color.a(point1) << 1].min - ChunkyPNG::Color.a(point2)].max
48
- ChunkyPNG::Color.rgba(r, g, b, a)
49
- end
50
- end
51
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'oily_png'
4
- # require 'chunky_png'
5
- require_relative 'chunky_png/resampling'
6
- require 'eyes_core/eyes_core'
7
-
8
- ChunkyPNG::Canvas.class_eval do
9
- include Applitools::ChunkyPNG::Resampling
10
- include Applitools::ResamplingFast
11
- end