percy-capybara 5.0.1 → 5.0.2.pre.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7db2c14fc57a6c57c3b6622525553787384946fb9391a2f725cb2200798973a7
4
- data.tar.gz: ac4086661c230766111c2a15ffebf403941f4e42349a2a550b90c2becfd7ecc9
3
+ metadata.gz: 2df3b25d83f60fb1e936b2e7dacd200ae4d26544d95271487bc621c44bf2c54d
4
+ data.tar.gz: 6cae727a95c84075221a2892abaf0446fa2456f90f42c17adcc2c082f63425c1
5
5
  SHA512:
6
- metadata.gz: 6233ec353b93414b17a01300f2c3fdcbe5350a4e9a847c52e1a115da333cf9dbf96c8647540c64ddaeb7cb7cb9913594f16682c77e46e59f76f606b103200ff8
7
- data.tar.gz: 44951b8de50525cd017ecc705a02ee57d6faf93f2fa36c174bdadb126ab66f1260191ca53abf046e7dda2ed8aa61961c202441f2aec9c4f3901b63fe70823a0e
6
+ metadata.gz: a0e7ae3aad42d0e79f716ac874a9907a15a7638520b6d096335c801f7bc4057674f7dc7dc46d114973c0dd6f6f7740b006c2f9404727e20526f0a3bc45422ef9
7
+ data.tar.gz: 8b5e2e4fc5c9436539d3717ead83c8511dabb765d33ac2383b7e5e1f1220521237e01fb35defc24850fe5e403afda6d9d08f05ab2a223b9836b85fb5294a3c7c
@@ -30,8 +30,6 @@ module PercyCapybara
30
30
  begin
31
31
  percy_dom_script = fetch_percy_dom
32
32
  page.evaluate_script(percy_dom_script)
33
- dom_snapshot = get_serialized_dom(page, options, percy_dom_script)
34
- page.evaluate_script(fetch_percy_dom)
35
33
 
36
34
  # Readiness gate -- runs before serialize when CLI supports it.
37
35
  # Uses evaluate_async_script with a callback signal so the SDK can block
@@ -45,8 +43,9 @@ module PercyCapybara
45
43
  config_options = @cli_config&.dig('snapshot') || {}
46
44
  merged_options = deep_merge_options(config_options, deep_stringify(options))
47
45
 
48
- dom_snapshot = page
49
- .evaluate_script("(function() { return PercyDOM.serialize(#{merged_options.to_json}) })()")
46
+ # Single serialize pass -- get_serialized_dom serializes the page with the
47
+ # merged options and attaches any captured cross-origin iframes.
48
+ dom_snapshot = get_serialized_dom(page, merged_options, percy_dom_script)
50
49
 
51
50
  if readiness_diagnostics && dom_snapshot.is_a?(Hash)
52
51
  dom_snapshot['readiness_diagnostics'] = readiness_diagnostics
@@ -83,7 +82,9 @@ module PercyCapybara
83
82
  dom_snapshot = page
84
83
  .evaluate_script("(function() { return PercyDOM.serialize(#{options.to_json}) })()")
85
84
 
86
- driver = page.driver.browser
85
+ driver = selenium_browser(page)
86
+ return dom_snapshot if driver.nil?
87
+
87
88
  begin
88
89
  page_origin = get_origin(page.current_url)
89
90
  iframes = driver.find_elements(:tag_name, 'iframe')
@@ -138,6 +139,22 @@ module PercyCapybara
138
139
  dom_snapshot
139
140
  end
140
141
 
142
+ private def selenium_browser(page)
143
+ driver = page.driver
144
+ return nil unless driver.respond_to?(:browser)
145
+
146
+ browser = driver.browser
147
+ unless browser.respond_to?(:find_elements) && browser.respond_to?(:switch_to)
148
+ log('Skipping cross-origin iframe capture: driver is not Selenium-backed') if PERCY_DEBUG
149
+ return nil
150
+ end
151
+
152
+ browser
153
+ rescue StandardError => e
154
+ log("Skipping cross-origin iframe capture: #{e}") if PERCY_DEBUG
155
+ nil
156
+ end
157
+
141
158
  private def unsupported_iframe_src?(src)
142
159
  return true if src.nil? || src.empty?
143
160
 
data/lib/percy/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module PercyCapybara
2
- VERSION = '5.0.1'.freeze
2
+ VERSION = '5.0.2.pre.0'.freeze
3
3
  end
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
4
+ version: 5.0.2.pre.0
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-07-13 00:00:00.000000000 Z
11
+ date: 2026-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
@@ -150,9 +150,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
150
150
  version: 2.3.0
151
151
  required_rubygems_version: !ruby/object:Gem::Requirement
152
152
  requirements:
153
- - - ">="
153
+ - - ">"
154
154
  - !ruby/object:Gem::Version
155
- version: '0'
155
+ version: 1.3.1
156
156
  requirements: []
157
157
  rubygems_version: 3.0.3.1
158
158
  signing_key: