happo 6.8.0 → 6.9.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.
Files changed (53) hide show
  1. package/dist/browser/main.js +132 -10
  2. package/dist/browser/main.js.map +2 -2
  3. package/dist/browser/takeDOMSnapshot.d.ts +7 -1
  4. package/dist/browser/takeDOMSnapshot.d.ts.map +1 -1
  5. package/dist/cli/cancelJob-Y4WJCCU6.js +10 -0
  6. package/dist/cli/{chunk-33PSYGHX.js → chunk-BESQLM5F.js} +2 -2
  7. package/dist/cli/{chunk-EDBI7VNX.js → chunk-BK32666K.js} +3 -3
  8. package/dist/cli/{chunk-WFQHO45L.js → chunk-CVX5DVCT.js} +2 -2
  9. package/dist/cli/{chunk-URV3R5XF.js → chunk-J2EA5OBW.js} +2 -2
  10. package/dist/cli/{chunk-Q6DV4AEM.js → chunk-P4EXA4AX.js} +4 -4
  11. package/dist/cli/{chunk-Q6DV4AEM.js.map → chunk-P4EXA4AX.js.map} +1 -1
  12. package/dist/cli/{chunk-CQ7QTIYV.js → chunk-R6YURZXU.js} +2 -2
  13. package/dist/cli/createAsyncComparison-CQLGQXY2.js +10 -0
  14. package/dist/cli/{createAsyncReport-62YCQXCV.js → createAsyncReport-4ZD53TJC.js} +4 -4
  15. package/dist/cli/{getFlakes-257F34EF.js → getFlakes-6ZGTWZTM.js} +4 -4
  16. package/dist/cli/main.js +11 -11
  17. package/dist/cli/package-4NRNRUE3.js +7 -0
  18. package/dist/cli/{prepareSnapRequests-R2YIHDTR.js → prepareSnapRequests-2LHSGFZV.js} +4 -4
  19. package/dist/cli/startJob-JAO5FUA2.js +10 -0
  20. package/dist/cli/{wrapper-7A35DA3L.js → wrapper-7RE2N7Y3.js} +7 -7
  21. package/dist/config/index.d.ts +18 -0
  22. package/dist/config/index.d.ts.map +1 -1
  23. package/dist/config/index.js.map +2 -2
  24. package/dist/cypress/index.d.ts.map +1 -1
  25. package/dist/cypress/index.js +187 -46
  26. package/dist/cypress/index.js.map +2 -2
  27. package/dist/cypress/task.d.ts +4 -0
  28. package/dist/cypress/task.d.ts.map +1 -1
  29. package/dist/cypress/task.js +11 -4
  30. package/dist/cypress/task.js.map +2 -2
  31. package/dist/isomorphic/types.d.ts +14 -0
  32. package/dist/isomorphic/types.d.ts.map +1 -1
  33. package/dist/playwright/index.d.ts.map +1 -1
  34. package/dist/playwright/index.js +10 -6
  35. package/dist/playwright/index.js.map +3 -3
  36. package/package.json +3 -3
  37. package/dist/cli/cancelJob-3MYHESOW.js +0 -10
  38. package/dist/cli/createAsyncComparison-MOLWGUJT.js +0 -10
  39. package/dist/cli/package-7QCVHFDF.js +0 -7
  40. package/dist/cli/startJob-6EVDORMA.js +0 -10
  41. /package/dist/cli/{cancelJob-3MYHESOW.js.map → cancelJob-Y4WJCCU6.js.map} +0 -0
  42. /package/dist/cli/{chunk-33PSYGHX.js.map → chunk-BESQLM5F.js.map} +0 -0
  43. /package/dist/cli/{chunk-EDBI7VNX.js.map → chunk-BK32666K.js.map} +0 -0
  44. /package/dist/cli/{chunk-WFQHO45L.js.map → chunk-CVX5DVCT.js.map} +0 -0
  45. /package/dist/cli/{chunk-URV3R5XF.js.map → chunk-J2EA5OBW.js.map} +0 -0
  46. /package/dist/cli/{chunk-CQ7QTIYV.js.map → chunk-R6YURZXU.js.map} +0 -0
  47. /package/dist/cli/{createAsyncComparison-MOLWGUJT.js.map → createAsyncComparison-CQLGQXY2.js.map} +0 -0
  48. /package/dist/cli/{createAsyncReport-62YCQXCV.js.map → createAsyncReport-4ZD53TJC.js.map} +0 -0
  49. /package/dist/cli/{getFlakes-257F34EF.js.map → getFlakes-6ZGTWZTM.js.map} +0 -0
  50. /package/dist/cli/{package-7QCVHFDF.js.map → package-4NRNRUE3.js.map} +0 -0
  51. /package/dist/cli/{prepareSnapRequests-R2YIHDTR.js.map → prepareSnapRequests-2LHSGFZV.js.map} +0 -0
  52. /package/dist/cli/{startJob-6EVDORMA.js.map → startJob-JAO5FUA2.js.map} +0 -0
  53. /package/dist/cli/{wrapper-7A35DA3L.js.map → wrapper-7RE2N7Y3.js.map} +0 -0
@@ -32,6 +32,20 @@ export interface TakeDOMSnapshotOptions {
32
32
  element: HTMLImageElement;
33
33
  }) => void;
34
34
  strategy?: 'hoist' | 'clip';
35
+ /**
36
+ * When true, extends the default pseudo-state handling by automatically
37
+ * detecting and applying data attributes for elements currently in `:hover`,
38
+ * `:active`, and `:focus-visible` pseudo states, and by doing deeper focus
39
+ * traversal (e.g. into shadow DOM) when determining which element should
40
+ * receive `data-happo-focus`.
41
+ *
42
+ * Note: basic focus handling (`data-happo-focus` based on `activeElement`)
43
+ * is always applied regardless of this option. Enabling this option means
44
+ * you can write your Playwright or Cypress tests naturally (e.g. hover or
45
+ * focus an element) and have Happo capture those states without manually
46
+ * adding `data-happo-hover`, `data-happo-focus-visible`, etc. attributes.
47
+ */
48
+ autoApplyPseudoStateAttributes?: boolean;
35
49
  }
36
50
  export interface DOMSnapshotResult {
37
51
  html: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/isomorphic/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;IACjC,OAAO,EAAE,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/D,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,YAAY,CAAC,EAAE;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC;KACzD,CAAC;IACF,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE;QAC3B,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,gBAAgB,CAAC;KAC3B,KAAK,IAAI,CAAC;IACX,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3B,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpD,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC;IAC3D,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,iBAAiB,CAAC;CAC1E,CAAC;AAEF,MAAM,WAAW,eAAgB,SAAQ,MAAM;IAC7C,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/isomorphic/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;IACjC,OAAO,EAAE,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/D,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,YAAY,CAAC,EAAE;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC;KACzD,CAAC;IACF,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE;QAC3B,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,gBAAgB,CAAC;KAC3B,KAAK,IAAI,CAAC;IACX,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B;;;;;;;;;;;;OAYG;IACH,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAC1C;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3B,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpD,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC;IAC3D,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,iBAAiB,CAAC;CAC1E,CAAC;AAEF,MAAM,WAAW,eAAgB,SAAQ,MAAM;IAC7C,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/playwright/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,aAAa,EACb,OAAO,EACP,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,QAAQ,EACT,MAAM,kBAAkB,CAAC;AAiB1B,KAAK,kBAAkB,GAAG,CACxB,eAAe,EAAE,aAAa,GAAG,OAAO,GAAG,IAAI,EAC/C,OAAO,EAAE;IACP,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,KACE,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,kBAAkB,CAAC;IACpC,iBAAiB,EAAE,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,mBAAmB,EAAE,IAAI,CAAC;CAC3B;AAMD,eAAO,MAAM,IAAI,EAAE,QAAQ,CACzB,kBAAkB,GAAG,qBAAqB,GAAG,YAAY,EACzD,oBAAoB,GAAG,uBAAuB,GAAG,cAAc,CAkH/D,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/playwright/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,aAAa,EACb,OAAO,EACP,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,QAAQ,EACT,MAAM,kBAAkB,CAAC;AAiB1B,KAAK,kBAAkB,GAAG,CACxB,eAAe,EAAE,aAAa,GAAG,OAAO,GAAG,IAAI,EAC/C,OAAO,EAAE;IACP,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,KACE,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,kBAAkB,CAAC;IACpC,iBAAiB,EAAE,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,mBAAmB,EAAE,IAAI,CAAC;CAC3B;AAMD,eAAO,MAAM,IAAI,EAAE,QAAQ,CACzB,kBAAkB,GAAG,qBAAqB,GAAG,YAAY,EACzD,oBAAoB,GAAG,uBAAuB,GAAG,cAAc,CA0H/D,CAAC"}
@@ -19,7 +19,7 @@ import asyncRetry from "async-retry";
19
19
  // package.json
20
20
  var package_default = {
21
21
  name: "happo",
22
- version: "6.8.0",
22
+ version: "6.9.0",
23
23
  description: "Catch unexpected visual and accessibility changes and UI bugs",
24
24
  license: "MIT",
25
25
  repository: {
@@ -151,8 +151,8 @@ var package_default = {
151
151
  "react-dom": "^19.2.0",
152
152
  "react-error-boundary": "^6.0.0",
153
153
  storybook: "^10.0.1",
154
- typescript: "^5.9.2",
155
- "typescript-eslint": "^8.56.1"
154
+ typescript: "^6.0.2",
155
+ "typescript-eslint": "^8.57.2"
156
156
  },
157
157
  dependencies: {
158
158
  "async-retry": "^1.3.3",
@@ -1835,6 +1835,8 @@ var test = base.extend({
1835
1835
  },
1836
1836
  // Passes down the happoScreenshot function as a fixture
1837
1837
  happoScreenshot: async ({ page }, use) => {
1838
+ const integration = controller.config?.integration;
1839
+ const autoApplyPseudoStateAttributes = integration?.type === "playwright" ? integration.autoApplyPseudoStateAttributes ?? false : false;
1838
1840
  const happoScreenshot = async (handleOrLocator, { component, variant, snapshotStrategy = "hoist", ...rest }) => {
1839
1841
  if (!controller.isActive()) {
1840
1842
  return;
@@ -1860,7 +1862,7 @@ var test = base.extend({
1860
1862
  throw new Error("elementHandle cannot be null or undefined");
1861
1863
  }
1862
1864
  const snapshot = await page.evaluate(
1863
- ({ element, strategy }) => {
1865
+ ({ element, strategy, autoApplyPseudoStateAttributes: autoApplyPseudoStateAttributes2 }) => {
1864
1866
  if (!globalThis.happo) {
1865
1867
  throw new Error("globalThis.happo is not defined");
1866
1868
  }
@@ -1872,12 +1874,14 @@ var test = base.extend({
1872
1874
  return takeDOMSnapshot({
1873
1875
  doc: element.ownerDocument,
1874
1876
  element,
1875
- strategy
1877
+ strategy,
1878
+ autoApplyPseudoStateAttributes: autoApplyPseudoStateAttributes2
1876
1879
  });
1877
1880
  },
1878
1881
  {
1879
1882
  element: elementHandle,
1880
- strategy: snapshotStrategy
1883
+ strategy: snapshotStrategy,
1884
+ autoApplyPseudoStateAttributes
1881
1885
  }
1882
1886
  );
1883
1887
  await controller.registerSnapshot({