percy-capybara 5.0.1.pre.2 → 5.0.1.pre.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.
- checksums.yaml +4 -4
- data/lib/percy/capybara.rb +28 -1
- data/lib/percy/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 55183f20f35bdf96129984ea3eafb21f484bf7d8abd648a07a5da0f9cbed8b20
|
|
4
|
+
data.tar.gz: 9f2338e88239dcb83767bfa8c0edac9a8e0cbe311c341fa2a43f0540dee295d7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5638fbbfc7505c07fa32a638a415f8ff0dc46ffcdb4d74695800158e8ee85ec011eea3cee429495baf24f34aba256b370e2cc73f0c7c6369a72a143ee638780f
|
|
7
|
+
data.tar.gz: 51aa201e617f53d1e75592cb64f4920f7c1717966e5f990b12c977b819fca7a37a7a812e7e100c727f1d96fd61da63800ea3666f99d21e1e17bb1920a8b60581
|
data/lib/percy/capybara.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
require 'json'
|
|
1
2
|
require 'net/http'
|
|
2
3
|
require 'uri'
|
|
3
4
|
require 'capybara/dsl'
|
|
@@ -38,8 +39,14 @@ module PercyCapybara
|
|
|
38
39
|
# older CLIs that lack waitForReady.
|
|
39
40
|
readiness_diagnostics = wait_for_ready(page, options)
|
|
40
41
|
|
|
42
|
+
# Merge .percy.yml config options with snapshot options (snapshot options take priority).
|
|
43
|
+
# Deep merge with consistent string keys at all levels: nested Hashes merge
|
|
44
|
+
# recursively, per-call wins at leaves, arrays/scalars replace.
|
|
45
|
+
config_options = @cli_config&.dig('snapshot') || {}
|
|
46
|
+
merged_options = deep_merge_options(config_options, deep_stringify(options))
|
|
47
|
+
|
|
41
48
|
dom_snapshot = page
|
|
42
|
-
.evaluate_script("(function() { return PercyDOM.serialize(#{
|
|
49
|
+
.evaluate_script("(function() { return PercyDOM.serialize(#{merged_options.to_json}) })()")
|
|
43
50
|
|
|
44
51
|
if readiness_diagnostics && dom_snapshot.is_a?(Hash)
|
|
45
52
|
dom_snapshot['readiness_diagnostics'] = readiness_diagnostics
|
|
@@ -224,6 +231,8 @@ module PercyCapybara
|
|
|
224
231
|
return false
|
|
225
232
|
end
|
|
226
233
|
|
|
234
|
+
body = response.body.to_s.empty? ? {} : JSON.parse(response.body)
|
|
235
|
+
@cli_config = body['config'] || {}
|
|
227
236
|
@percy_enabled = true
|
|
228
237
|
true
|
|
229
238
|
rescue StandardError => e
|
|
@@ -276,6 +285,24 @@ module PercyCapybara
|
|
|
276
285
|
end
|
|
277
286
|
end
|
|
278
287
|
|
|
288
|
+
# Recursively stringify all Hash keys so per-call options match the
|
|
289
|
+
# string-keyed config parsed from .percy.yml JSON at every nesting level.
|
|
290
|
+
private def deep_stringify(obj)
|
|
291
|
+
case obj
|
|
292
|
+
when Hash then obj.each_with_object({}) { |(k, v), h| h[k.to_s] = deep_stringify(v) }
|
|
293
|
+
when Array then obj.map { |e| deep_stringify(e) }
|
|
294
|
+
else obj
|
|
295
|
+
end
|
|
296
|
+
end
|
|
297
|
+
|
|
298
|
+
# Deep-merge two string-keyed Hashes: nested Hashes merge recursively,
|
|
299
|
+
# per-call (override) wins at the leaves, arrays/scalars replace.
|
|
300
|
+
private def deep_merge_options(base, override)
|
|
301
|
+
base.merge(override) do |_key, old_val, new_val|
|
|
302
|
+
old_val.is_a?(Hash) && new_val.is_a?(Hash) ? deep_merge_options(old_val, new_val) : new_val
|
|
303
|
+
end
|
|
304
|
+
end
|
|
305
|
+
|
|
279
306
|
private def log(msg)
|
|
280
307
|
puts "#{PERCY_LABEL} #{msg}"
|
|
281
308
|
end
|
data/lib/percy/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: percy-capybara
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.0.1.pre.
|
|
4
|
+
version: 5.0.1.pre.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Perceptual Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-07-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: capybara
|