From f9ed826ba75ef7d676b2c32182176a0940df8a91 Mon Sep 17 00:00:00 2001 From: rishigupta1599 Date: Wed, 6 May 2026 00:49:58 +0530 Subject: [PATCH] fix: merge .percy.yml config options with snapshot options for serializeDOM Config options from .percy.yml (like widths, minHeight, enableJavaScript, etc.) were not being passed to PercyDOM.serialize(). Only per-snapshot options were used. Now merges both, with per-snapshot options taking priority. Co-Authored-By: Claude Opus 4.6 --- src/main/java/io/percy/selenium/Percy.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/percy/selenium/Percy.java b/src/main/java/io/percy/selenium/Percy.java index 453c4bf..c5e7d67 100644 --- a/src/main/java/io/percy/selenium/Percy.java +++ b/src/main/java/io/percy/selenium/Percy.java @@ -353,6 +353,18 @@ public JSONObject snapshot(String name, Map options) { Object domSnapshot = null; + // Merge .percy.yml config options with snapshot options (snapshot options take priority) + Map mergedOptions = new HashMap<>(); + if (cliConfig != null && cliConfig.has("snapshot") && !cliConfig.isNull("snapshot")) { + JSONObject snapshotConfig = cliConfig.getJSONObject("snapshot"); + for (String key : snapshotConfig.keySet()) { + mergedOptions.put(key, snapshotConfig.get(key)); + } + } + if (options != null) { + mergedOptions.putAll(options); + } + try { JavascriptExecutor jse = (JavascriptExecutor) driver; jse.executeScript(fetchPercyDOM()); @@ -362,10 +374,10 @@ public JSONObject snapshot(String name, Map options) { } catch(Exception e) { log("Cookie collection failed " + e.getMessage(), "debug"); } - if (isCaptureResponsiveDOM(options)) { - domSnapshot = captureResponsiveDom(driver, cookies, options); + if (isCaptureResponsiveDOM(mergedOptions)) { + domSnapshot = captureResponsiveDom(driver, cookies, mergedOptions); } else { - domSnapshot = getSerializedDOM(jse, cookies, options); + domSnapshot = getSerializedDOM(jse, cookies, mergedOptions); } } catch (WebDriverException e) { // For some reason, the execution in the browser failed.