eyes_core 6.7.0 → 6.7.1
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 +4 -4
- data/CHANGELOG.md +10 -0
- data/eyes_core.gemspec +1 -1
- data/lib/applitools/core/test_results.rb +75 -2
- data/lib/applitools/core/universal_eyes_open.rb +4 -1
- data/lib/applitools/eyes_core/version.rb +1 -1
- data/lib/applitools/universal_sdk/universal_eyes_config.rb +17 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e8270b52cdd58ec5d01252e085200ba62f8c9b9c056cfb6a5f217f58003f2a5
|
4
|
+
data.tar.gz: 8f01ec47b288f64c84aad4d7684d691a52376fc635014e059ecab49b3dec76ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d78fa4f0fc03842d096f0af4fb7cca76b4416176fd0cdb84b30d34ef90d9bef40c839a8093197a0f111ac1e8ae1a6764df697b09850350824b5e40cd819e7f55
|
7
|
+
data.tar.gz: 9cd38ffa78203fdfb4615259a3d426f30bf8178f112e5c56d6f992d23be14cad0bdc6d5d9fca7ff840e5ef54fcad8e05e249161f2a619bf6e7b57e126b61c3f2
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [6.7.1](https://github.com/Applitools-Dev/sdk/compare/ruby/eyes_core@6.7.0...ruby/eyes_core@6.7.1) (2025-05-22)
|
4
|
+
|
5
|
+
|
6
|
+
### Dependencies
|
7
|
+
|
8
|
+
* eyes_universal bumped to 4.38.0
|
9
|
+
#### Features
|
10
|
+
|
11
|
+
* adding the mac-arm64 binary ([#2975](https://github.com/Applitools-Dev/sdk/issues/2975)) ([95d647f](https://github.com/Applitools-Dev/sdk/commit/95d647ff4a451309d985a786f7cec544d926f0e5))
|
12
|
+
|
3
13
|
## [6.7.0](https://github.com/Applitools-Dev/sdk/compare/ruby/eyes_core@6.6.1...ruby/eyes_core@6.7.0) (2025-04-17)
|
4
14
|
|
5
15
|
|
data/eyes_core.gemspec
CHANGED
@@ -38,7 +38,7 @@ Gem::Specification.new do |spec|
|
|
38
38
|
spec.add_dependency 'colorize'
|
39
39
|
spec.add_dependency 'websocket'
|
40
40
|
spec.add_dependency 'sorted_set'
|
41
|
-
spec.add_dependency 'eyes_universal', "= 4.
|
41
|
+
spec.add_dependency 'eyes_universal', "= 4.38.0"
|
42
42
|
|
43
43
|
spec.add_development_dependency 'bundler'
|
44
44
|
spec.add_development_dependency 'rake'
|
@@ -3,6 +3,70 @@
|
|
3
3
|
require 'yaml'
|
4
4
|
|
5
5
|
module Applitools
|
6
|
+
# First, extend OpenStruct with a custom method for case-insensitive hash access
|
7
|
+
class FlexibleOpenStruct < OpenStruct
|
8
|
+
def [](key)
|
9
|
+
# Convert the key to string in case it's a symbol or number
|
10
|
+
key_str = key.to_s
|
11
|
+
|
12
|
+
# Direct access first (most efficient)
|
13
|
+
return super(key) if respond_to?(key)
|
14
|
+
|
15
|
+
# If the key contains uppercase letters, try snake_case version
|
16
|
+
if key_str =~ /[A-Z]/
|
17
|
+
snake_case_key = key_str.gsub(/([A-Z])/, '_\1').downcase.gsub(/^_/, '')
|
18
|
+
return send(snake_case_key) if respond_to?(snake_case_key)
|
19
|
+
else
|
20
|
+
# If the key is snake_case, try camelCase version
|
21
|
+
camel_case_key = key_str.gsub(/_([a-z])/) { $1.upcase }
|
22
|
+
return send(camel_case_key) if respond_to?(camel_case_key)
|
23
|
+
end
|
24
|
+
|
25
|
+
# Fall back to nil if no matching attribute is found
|
26
|
+
nil
|
27
|
+
end
|
28
|
+
|
29
|
+
# Also handle nested hashes by recursively converting them to FlexibleOpenStruct
|
30
|
+
def method_missing(name, *args)
|
31
|
+
value = super
|
32
|
+
|
33
|
+
if value.is_a?(Hash)
|
34
|
+
send("#{name}=", hash_to_flexible_open_struct(value))
|
35
|
+
value = send(name)
|
36
|
+
elsif value.is_a?(Array)
|
37
|
+
send("#{name}=", array_to_flexible_open_struct(value))
|
38
|
+
value = send(name)
|
39
|
+
end
|
40
|
+
|
41
|
+
value
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def hash_to_flexible_open_struct(hash)
|
47
|
+
result = FlexibleOpenStruct.new
|
48
|
+
hash.each do |k, v|
|
49
|
+
result[k] = process_value(v)
|
50
|
+
end
|
51
|
+
result
|
52
|
+
end
|
53
|
+
|
54
|
+
def array_to_flexible_open_struct(array)
|
55
|
+
array.map { |item| process_value(item) }
|
56
|
+
end
|
57
|
+
|
58
|
+
def process_value(value)
|
59
|
+
case value
|
60
|
+
when Hash
|
61
|
+
hash_to_flexible_open_struct(value)
|
62
|
+
when Array
|
63
|
+
array_to_flexible_open_struct(value)
|
64
|
+
else
|
65
|
+
value
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
6
70
|
class TestResults
|
7
71
|
class AccessibilityStatus
|
8
72
|
attr_accessor :status, :level, :version
|
@@ -19,11 +83,16 @@ module Applitools
|
|
19
83
|
attr_accessor :is_new, :url, :screenshot
|
20
84
|
attr_reader :status, :steps, :matches, :mismatches, :missing, :original_results, :browser_info, :renderer
|
21
85
|
|
86
|
+
attr_reader :results
|
87
|
+
|
22
88
|
def initialize(init_results = {})
|
23
89
|
environment = init_results[:environment] || {}
|
24
90
|
@renderer = Applitools::Utils.deep_stringify_keys(Applitools::Utils.underscore_hash_keys(environment[:requested]))
|
25
|
-
|
26
|
-
|
91
|
+
|
92
|
+
# Use allow querying as both with camel and snake cases
|
93
|
+
@browser_info = JSON.parse(@renderer.to_json, object_class: FlexibleOpenStruct)
|
94
|
+
|
95
|
+
@results = Applitools::Utils.deep_stringify_keys(init_results[:result] ? init_results[:result] : init_results)
|
27
96
|
@original_results = results
|
28
97
|
@steps = results.fetch('steps', 0)
|
29
98
|
@matches = results.fetch('matches', 0)
|
@@ -34,6 +103,10 @@ module Applitools
|
|
34
103
|
@url = results.fetch('url', nil)
|
35
104
|
end
|
36
105
|
|
106
|
+
def [](index)
|
107
|
+
@results[index]
|
108
|
+
end
|
109
|
+
|
37
110
|
def test_results
|
38
111
|
self
|
39
112
|
end
|
@@ -87,7 +87,10 @@ module Applitools
|
|
87
87
|
|
88
88
|
self.app_name = options[:app_name] if options[:app_name]
|
89
89
|
self.test_name = options[:test_name] if options[:test_name]
|
90
|
-
|
90
|
+
|
91
|
+
if (config.respond_to?(:viewport_size, true) &&
|
92
|
+
(config.send(:viewport_size).nil? || config.send(:viewport_size)&.empty?)) &&
|
93
|
+
options[:viewport_size]
|
91
94
|
self.viewport_size = Applitools::RectangleSize.from_any_argument options[:viewport_size]
|
92
95
|
end
|
93
96
|
self.session_type = options[:session_type] if options[:session_type]
|
@@ -186,7 +186,23 @@ module Applitools
|
|
186
186
|
|
187
187
|
def from_original_sdk(original_eyes)
|
188
188
|
from_eyes = original_eyes.class.name != 'Applitools::Images::Eyes' ? FROM_ORIGINAL_EYES : from_eyes_images
|
189
|
-
|
189
|
+
|
190
|
+
# Use a filtered list to avoid accessing private viewport_size method
|
191
|
+
# We will handle viewport_size specially
|
192
|
+
filtered_eyes = from_eyes.reject { |m| m == :viewport_size }
|
193
|
+
|
194
|
+
# Copy all properties except viewport_size
|
195
|
+
filtered_eyes.each { |m| copy_from(m, original_eyes) }
|
196
|
+
|
197
|
+
# Handle viewport_size specially to avoid private method access warning
|
198
|
+
# Access the config's viewport_size directly if available
|
199
|
+
if original_eyes.respond_to?(:config) && original_eyes.config.respond_to?(:viewport_size)
|
200
|
+
self.viewport_size = original_eyes.config.viewport_size
|
201
|
+
elsif original_eyes.respond_to?(:viewport_size)
|
202
|
+
# Fallback to original_eyes.viewport_size if necessary
|
203
|
+
self.viewport_size = original_eyes.viewport_size
|
204
|
+
end
|
205
|
+
|
190
206
|
self.agent_id = original_eyes.base_agent_id if original_eyes.respond_to?(:base_agent_id)
|
191
207
|
self.agent_id = original_eyes.full_agent_id if original_eyes.respond_to?(:full_agent_id)
|
192
208
|
# self.display_name = original_eyes.app_name
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eyes_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.7.
|
4
|
+
version: 6.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Applitools Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-05-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - '='
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 4.
|
117
|
+
version: 4.38.0
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - '='
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 4.
|
124
|
+
version: 4.38.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: bundler
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|