@decocms/parity 0.17.2 → 0.17.4

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.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.17.3](https://github.com/decocms/parity/compare/v0.17.2...v0.17.3) (2026-07-28)
11
+
12
+ ### Fixed
13
+
14
+ * **`open-minicart` fallback click when already-open drawer is empty (issue #159).** Sites that use a react-query on-demand cart (query `enabled` only when a cart-intent signal is `true`) never hydrate the drawer when it opens via an add-to-cart toast side-effect — the intent signal is only set on an explicit cart-icon click, so the panel renders empty and `validateCartContainsTitle` finds 0 items. When `cartOpenMethod === "already-open"` and validation returns `found=false`, parity now looks up the `minicartTrigger` and clicks it explicitly (mirroring what the user does), waits for cart hydration, then re-validates. The fallback is skipped entirely when the drawer hydrates normally via the initial validation.
15
+
10
16
  ## [0.17.0](https://github.com/decocms/parity/compare/v0.16.0...v0.17.0) (2026-07-28)
11
17
 
12
18
  ### Added
package/dist/cli.js CHANGED
@@ -52089,7 +52089,23 @@ async function flowPurchaseJourney(ctx) {
52089
52089
  }
52090
52090
  let step7Validation;
52091
52091
  if (expectedProductTitle && cartOpenMethod !== "failed") {
52092
- const v = await validateCartContainsTitle(page, expectedProductTitle, ctx);
52092
+ let v = await validateCartContainsTitle(page, expectedProductTitle, ctx);
52093
+ if (cartOpenMethod === "already-open" && !v.found) {
52094
+ const triggerSels = selFor(ctx, "minicartTrigger");
52095
+ for (const sel of triggerSels) {
52096
+ const el = page.locator(sel).first();
52097
+ if (await el.count()) {
52098
+ dlog2(ctx, "step 7: already-open drawer empty — force-clicking minicartTrigger (collapsed inside daisyUI drawer-content)");
52099
+ miniHit = { locator: el, selector: sel };
52100
+ await el.click({ force: true, timeout: 3000 }).catch(() => {
52101
+ return;
52102
+ });
52103
+ await waitForCartHydration(page);
52104
+ v = await validateCartContainsTitle(page, expectedProductTitle, ctx);
52105
+ break;
52106
+ }
52107
+ }
52108
+ }
52093
52109
  let reasonText;
52094
52110
  if (!v.found) {
52095
52111
  if (v.observedTitles.length === 0) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decocms/parity",
3
- "version": "0.17.2",
3
+ "version": "0.17.4",
4
4
  "description": "E2E parity validator for site migrations. Compares prod vs cand and reports UI, functional, SEO, visual, and Web Vitals deltas with an LLM-ranked HTML report.",
5
5
  "type": "module",
6
6
  "license": "MIT",