happo 6.9.0 → 6.10.1

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 (95) hide show
  1. package/dist/cli/cancelJob-4I7RBUQG.js +10 -0
  2. package/dist/cli/{chunk-P4EXA4AX.js → chunk-64XRFVHC.js} +8 -4
  3. package/dist/cli/chunk-64XRFVHC.js.map +7 -0
  4. package/dist/cli/{chunk-J2EA5OBW.js → chunk-GG7D7TQZ.js} +2 -2
  5. package/dist/cli/chunk-ML3Z5Z22.js +44 -0
  6. package/dist/cli/chunk-ML3Z5Z22.js.map +7 -0
  7. package/dist/cli/{chunk-BK32666K.js → chunk-OCKO64S4.js} +3 -3
  8. package/dist/cli/{chunk-R6YURZXU.js → chunk-RJXHIGT5.js} +2 -2
  9. package/dist/cli/{chunk-BESQLM5F.js → chunk-UTRRH3WF.js} +2 -2
  10. package/dist/cli/{chunk-CVX5DVCT.js → chunk-XZTQZZFK.js} +2 -2
  11. package/dist/cli/createAsyncComparison-WLPUS2NJ.js +10 -0
  12. package/dist/cli/{createAsyncReport-4ZD53TJC.js → createAsyncReport-2ZTQOHDA.js} +4 -4
  13. package/dist/cli/createExtendsReportSnapRequest-4ZSBNCPL.js +32 -0
  14. package/dist/cli/createExtendsReportSnapRequest-4ZSBNCPL.js.map +7 -0
  15. package/dist/cli/findBaselineReport-2SHS2OH7.js +36 -0
  16. package/dist/cli/findBaselineReport-2SHS2OH7.js.map +7 -0
  17. package/dist/cli/{getFlakes-6ZGTWZTM.js → getFlakes-DLKH2VLM.js} +4 -4
  18. package/dist/cli/index.d.ts.map +1 -1
  19. package/dist/cli/main.js +160 -19
  20. package/dist/cli/main.js.map +3 -3
  21. package/dist/cli/package-TU7REKQ6.js +7 -0
  22. package/dist/cli/parseOptions.d.ts +6 -0
  23. package/dist/cli/parseOptions.d.ts.map +1 -1
  24. package/dist/cli/{prepareSnapRequests-2LHSGFZV.js → prepareSnapRequests-WBXFGB4B.js} +170 -65
  25. package/dist/cli/prepareSnapRequests-WBXFGB4B.js.map +7 -0
  26. package/dist/cli/startJob-33HGTT4N.js +10 -0
  27. package/dist/cli/{wrapper-7RE2N7Y3.js → wrapper-CCHBHKT2.js} +45 -26
  28. package/dist/cli/wrapper-CCHBHKT2.js.map +7 -0
  29. package/dist/config/index.d.ts +0 -8
  30. package/dist/config/index.d.ts.map +1 -1
  31. package/dist/config/index.js.map +2 -2
  32. package/dist/custom/index.d.ts.map +1 -1
  33. package/dist/custom/index.js +70 -14
  34. package/dist/custom/index.js.map +3 -3
  35. package/dist/cypress/chunk-TYBGAHYH.js +69 -0
  36. package/dist/cypress/chunk-TYBGAHYH.js.map +7 -0
  37. package/dist/cypress/index.d.ts.map +1 -1
  38. package/dist/cypress/index.js +14 -4
  39. package/dist/cypress/index.js.map +2 -2
  40. package/dist/cypress/task.d.ts +4 -2
  41. package/dist/cypress/task.d.ts.map +1 -1
  42. package/dist/cypress/task.js +25 -6
  43. package/dist/cypress/task.js.map +4 -4
  44. package/dist/e2e/wrapper.d.ts +1 -1
  45. package/dist/e2e/wrapper.d.ts.map +1 -1
  46. package/dist/environment/index.d.ts +2 -1
  47. package/dist/environment/index.d.ts.map +1 -1
  48. package/dist/isomorphic/parseOnly.d.ts +15 -0
  49. package/dist/isomorphic/parseOnly.d.ts.map +1 -0
  50. package/dist/isomorphic/parseSkip.d.ts +28 -0
  51. package/dist/isomorphic/parseSkip.d.ts.map +1 -0
  52. package/dist/isomorphic/types.d.ts +11 -0
  53. package/dist/isomorphic/types.d.ts.map +1 -1
  54. package/dist/network/createExtendsReportSnapRequest.d.ts +4 -0
  55. package/dist/network/createExtendsReportSnapRequest.d.ts.map +1 -0
  56. package/dist/network/findBaselineReport.d.ts +5 -0
  57. package/dist/network/findBaselineReport.d.ts.map +1 -0
  58. package/dist/network/prepareSnapRequests.d.ts +9 -1
  59. package/dist/network/prepareSnapRequests.d.ts.map +1 -1
  60. package/dist/playwright/index.d.ts.map +1 -1
  61. package/dist/playwright/index.js +59 -3
  62. package/dist/playwright/index.js.map +3 -3
  63. package/dist/storybook/browser/register.d.ts +2 -1
  64. package/dist/storybook/browser/register.d.ts.map +1 -1
  65. package/dist/storybook/browser/register.js +5 -1
  66. package/dist/storybook/browser/register.js.map +2 -2
  67. package/dist/storybook/index.d.ts +9 -1
  68. package/dist/storybook/index.d.ts.map +1 -1
  69. package/dist/storybook/index.js +134 -42
  70. package/dist/storybook/index.js.map +4 -4
  71. package/dist/storybook/isomorphic/types.d.ts +4 -0
  72. package/dist/storybook/isomorphic/types.d.ts.map +1 -1
  73. package/dist/storybook/resolveStoryFileItems.d.ts +21 -0
  74. package/dist/storybook/resolveStoryFileItems.d.ts.map +1 -0
  75. package/package.json +7 -3
  76. package/dist/cli/cancelJob-Y4WJCCU6.js +0 -10
  77. package/dist/cli/chunk-P4EXA4AX.js.map +0 -7
  78. package/dist/cli/createAsyncComparison-CQLGQXY2.js +0 -10
  79. package/dist/cli/package-4NRNRUE3.js +0 -7
  80. package/dist/cli/prepareSnapRequests-2LHSGFZV.js.map +0 -7
  81. package/dist/cli/startJob-JAO5FUA2.js +0 -10
  82. package/dist/cli/wrapper-7RE2N7Y3.js.map +0 -7
  83. package/dist/cypress/chunk-RKK2MPML.js +0 -20
  84. package/dist/cypress/chunk-RKK2MPML.js.map +0 -7
  85. /package/dist/cli/{cancelJob-Y4WJCCU6.js.map → cancelJob-4I7RBUQG.js.map} +0 -0
  86. /package/dist/cli/{chunk-J2EA5OBW.js.map → chunk-GG7D7TQZ.js.map} +0 -0
  87. /package/dist/cli/{chunk-BK32666K.js.map → chunk-OCKO64S4.js.map} +0 -0
  88. /package/dist/cli/{chunk-R6YURZXU.js.map → chunk-RJXHIGT5.js.map} +0 -0
  89. /package/dist/cli/{chunk-BESQLM5F.js.map → chunk-UTRRH3WF.js.map} +0 -0
  90. /package/dist/cli/{chunk-CVX5DVCT.js.map → chunk-XZTQZZFK.js.map} +0 -0
  91. /package/dist/cli/{createAsyncComparison-CQLGQXY2.js.map → createAsyncComparison-WLPUS2NJ.js.map} +0 -0
  92. /package/dist/cli/{createAsyncReport-4ZD53TJC.js.map → createAsyncReport-2ZTQOHDA.js.map} +0 -0
  93. /package/dist/cli/{getFlakes-6ZGTWZTM.js.map → getFlakes-DLKH2VLM.js.map} +0 -0
  94. /package/dist/cli/{package-4NRNRUE3.js.map → package-TU7REKQ6.js.map} +0 -0
  95. /package/dist/cli/{startJob-JAO5FUA2.js.map → startJob-33HGTT4N.js.map} +0 -0
@@ -17,6 +17,6 @@ export declare function finalizeAll({ happoConfig, environment, logger, }: Final
17
17
  * @param logger The logger
18
18
  * @returns The exit code of the command
19
19
  */
20
- export default function runWithWrapper(dashdashCommandParts: Array<string>, happoConfig: ConfigWithDefaults, environment: EnvironmentResult, logger: Logger, configFilePath: string): Promise<number>;
20
+ export default function runWithWrapper(dashdashCommandParts: Array<string>, happoConfig: ConfigWithDefaults, environment: EnvironmentResult, logger: Logger, configFilePath: string, skipJSON?: string): Promise<number>;
21
21
  export {};
22
22
  //# sourceMappingURL=wrapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../../src/e2e/wrapper.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAkB,MAAM,oBAAoB,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAuCjE,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC;AAE7C,UAAU,kBAAkB;IAC1B,WAAW,EAAE,kBAAkB,CAAC;IAChC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,WAAW,CAAC,EAChC,WAAW,EACX,WAAW,EACX,MAAM,GACP,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDpC;AAoGD;;;;;;;;;GASG;AACH,wBAA8B,cAAc,CAC1C,oBAAoB,EAAE,KAAK,CAAC,MAAM,CAAC,EACnC,WAAW,EAAE,kBAAkB,EAC/B,WAAW,EAAE,iBAAiB,EAC9B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,CA8DjB"}
1
+ {"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../../src/e2e/wrapper.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAkB,MAAM,oBAAoB,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAuCjE,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC;AAE7C,UAAU,kBAAkB;IAC1B,WAAW,EAAE,kBAAkB,CAAC;IAChC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,WAAW,CAAC,EAChC,WAAW,EACX,WAAW,EACX,MAAM,GACP,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDpC;AAoGD;;;;;;;;;GASG;AACH,wBAA8B,cAAc,CAC1C,oBAAoB,EAAE,KAAK,CAAC,MAAM,CAAC,EACnC,WAAW,EAAE,kBAAkB,EAC/B,WAAW,EAAE,iBAAiB,EAC9B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAoFjB"}
@@ -11,7 +11,8 @@ export interface EnvironmentResult {
11
11
  fallbackShas: Array<string> | undefined;
12
12
  githubToken: string | undefined;
13
13
  ci: boolean;
14
- skippedExamples: string | undefined;
14
+ skip: string | undefined;
15
+ only: string | undefined;
15
16
  }
16
17
  export default function resolveEnvironment(cliArgs: ParsedCLIArgs, env?: Record<string, string | undefined>): Promise<EnvironmentResult>;
17
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/environment/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AA8B5D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACxC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAgjBD,wBAA8B,kBAAkB,CAC9C,OAAO,EAAE,aAAa,EACtB,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAAC,iBAAiB,CAAC,CAyC5B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/environment/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AA8B5D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACxC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAgjBD,wBAA8B,kBAAkB,CAC9C,OAAO,EAAE,aAAa,EACtB,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAAC,iBAAiB,CAAC,CA0C5B"}
@@ -0,0 +1,15 @@
1
+ import type { OnlyItem } from './types.ts';
2
+ /**
3
+ * Parses and validates a JSON string, returning an array of OnlyItems.
4
+ * Throws a TypeError if the JSON is invalid or not an array of OnlyItems.
5
+ *
6
+ * Note: `variant` is not supported in `--only` items because variants cannot
7
+ * be resolved statically from the Storybook built files.
8
+ */
9
+ export declare function validateOnly(json: string): Array<OnlyItem>;
10
+ /**
11
+ * Parses a JSON string into an array of OnlyItems. Returns an empty array on
12
+ * any parse error or if the value is not a valid array of OnlyItems.
13
+ */
14
+ export declare function parseOnly(json?: string): Array<OnlyItem>;
15
+ //# sourceMappingURL=parseOnly.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseOnly.d.ts","sourceRoot":"","sources":["../../src/isomorphic/parseOnly.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAa3C;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAQ1D;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAOxD"}
@@ -0,0 +1,28 @@
1
+ import type { SkipItem } from './types.ts';
2
+ /**
3
+ * A pair of Sets used for O(1) skip lookups.
4
+ * - [0]: component-only skips (match all variants of the component)
5
+ * - [1]: component+variant skips (match a specific variant, keyed as "component\0variant")
6
+ */
7
+ export type SkipSet = readonly [componentOnly: Set<string>, componentVariant: Set<string>];
8
+ /**
9
+ * Parses and validates a JSON string, returning an array of SkipItems.
10
+ * Throws a TypeError if the JSON is invalid or not an array of SkipItems.
11
+ */
12
+ export declare function validateSkip(json: string): Array<SkipItem>;
13
+ /**
14
+ * Parses a JSON string into an array of SkipItems. Returns an empty array on
15
+ * any parse error or if the value is not a valid array of SkipItems.
16
+ */
17
+ export declare function parseSkip(json?: string): Array<SkipItem>;
18
+ /**
19
+ * Converts an array of SkipItems into a SkipSet for efficient lookups.
20
+ * Items with a `storyFile` key (unresolved) are silently ignored.
21
+ */
22
+ export declare function toSkipSet(items: Array<SkipItem>): SkipSet;
23
+ /**
24
+ * Returns true if the given component+variant should be skipped according to
25
+ * the SkipSet.
26
+ */
27
+ export declare function isInSkipSet([componentOnly, componentVariant]: SkipSet, component: string, variant: string): boolean;
28
+ //# sourceMappingURL=parseSkip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseSkip.d.ts","sourceRoot":"","sources":["../../src/isomorphic/parseSkip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAa3F;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAQ1D;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAOxD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,OAAO,CAazD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,CAAC,aAAa,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAC1C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAET"}
@@ -70,4 +70,15 @@ export interface WindowWithHappo extends Window {
70
70
  happo?: WindowHappo | undefined;
71
71
  }
72
72
  export type Logger = Pick<Console, 'log' | 'error'>;
73
+ export type SkipItem = {
74
+ component: string;
75
+ variant?: string;
76
+ } | {
77
+ storyFile: string;
78
+ };
79
+ export type OnlyItem = {
80
+ component: string;
81
+ } | {
82
+ storyFile: string;
83
+ };
73
84
  //# sourceMappingURL=types.d.ts.map
@@ -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;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
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/isomorphic/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ConfigWithDefaults } from '../config/index.ts';
2
+ import type { SkipItem } from '../isomorphic/types.ts';
3
+ export default function createExtendsReportSnapRequest(extendsSha: string, skip: Array<SkipItem>, config: ConfigWithDefaults): Promise<number>;
4
+ //# sourceMappingURL=createExtendsReportSnapRequest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createExtendsReportSnapRequest.d.ts","sourceRoot":"","sources":["../../src/network/createExtendsReportSnapRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGvD,wBAA8B,8BAA8B,CAC1D,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,EACrB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,MAAM,CAAC,CAsBjB"}
@@ -0,0 +1,5 @@
1
+ import type { ConfigWithDefaults } from '../config/index.ts';
2
+ import type { EnvironmentResult } from '../environment/index.ts';
3
+ import type { Logger } from '../isomorphic/types.ts';
4
+ export default function findBaselineReport(environment: EnvironmentResult, config: ConfigWithDefaults, logger: Logger): Promise<string | undefined>;
5
+ //# sourceMappingURL=findBaselineReport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findBaselineReport.d.ts","sourceRoot":"","sources":["../../src/network/findBaselineReport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGrD,wBAA8B,kBAAkB,CAC9C,WAAW,EAAE,iBAAiB,EAC9B,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA2B7B"}
@@ -1,3 +1,11 @@
1
1
  import type { ConfigWithDefaults } from '../config/index.ts';
2
- export default function prepareSnapRequests(config: ConfigWithDefaults): Promise<Array<number>>;
2
+ import type { OnlyItem, SkipItem } from '../isomorphic/types.ts';
3
+ export interface PrepareSnapRequestsResult {
4
+ snapRequestIds: Array<number>;
5
+ resolvedSkip?: Array<{
6
+ component: string;
7
+ variant?: string;
8
+ }>;
9
+ }
10
+ export default function prepareSnapRequests(config: ConfigWithDefaults, skip?: Array<SkipItem>, only?: Array<OnlyItem>): Promise<PrepareSnapRequestsResult>;
3
11
  //# sourceMappingURL=prepareSnapRequests.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prepareSnapRequests.d.ts","sourceRoot":"","sources":["../../src/network/prepareSnapRequests.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAqH7D,wBAA8B,mBAAmB,CAC/C,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAsDxB"}
1
+ {"version":3,"file":"prepareSnapRequests.d.ts","sourceRoot":"","sources":["../../src/network/prepareSnapRequests.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAI7D,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAqJjE,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/D;AAED,wBAA8B,mBAAmB,CAC/C,MAAM,EAAE,kBAAkB,EAC1B,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,EACtB,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,GACrB,OAAO,CAAC,yBAAyB,CAAC,CA0DpC"}
@@ -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,CA0H/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;AAsB1B,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,CAoI/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.9.0",
22
+ version: "6.10.1",
23
23
  description: "Catch unexpected visual and accessibility changes and UI bugs",
24
24
  license: "MIT",
25
25
  repository: {
@@ -94,7 +94,10 @@ var package_default = {
94
94
  "test:playwright": "pnpm build:dist && node --env-file-if-exists=.env.local dist/cli/main.js -c ./happoconfigs/happo.playwright.config.ts e2e -- playwright test",
95
95
  "test:playwright:nonce": "pnpm build:dist && node --env-file-if-exists=.env.local dist/cli/main.js -c ./happoconfigs/happo.playwright-nonce.config.ts --nonce $HAPPO_NONCE e2e -- playwright test && node --env-file-if-exists=.env.local dist/cli/main.js -c ./happoconfigs/happo.playwright-nonce.config.ts --nonce $HAPPO_NONCE finalize",
96
96
  "test:storybook": "pnpm build:dist && node --env-file-if-exists=.env.local dist/cli/main.js -c ./happoconfigs/happo.storybook.config.ts",
97
+ "test:storybook:skipped": 'pnpm build:dist && node --env-file-if-exists=.env.local dist/cli/main.js -c ./happoconfigs/happo.storybook.config.ts --project storybook-skipped --skip "$(node ./scripts/getSkip.ts)"',
98
+ "test:storybook:only": 'pnpm build:dist && node --env-file-if-exists=.env.local dist/cli/main.js -c ./happoconfigs/happo.storybook.config.ts --project storybook-only --only "$(node ./scripts/getOnly.ts)"',
97
99
  "test:pages": "pnpm build:dist && node --env-file-if-exists=.env.local dist/cli/main.js -c ./happoconfigs/happo.pages.config.ts",
100
+ release: "set -a && source .env && set +a && release-with-ease",
98
101
  tsc: "tsc --build tsconfig.json"
99
102
  },
100
103
  browserslist: {
@@ -136,13 +139,13 @@ var package_default = {
136
139
  "@types/react": "^19.2.0",
137
140
  "@types/react-dom": "^19.2.0",
138
141
  cypress: "^15.5.0",
139
- esbuild: "^0.27.0",
142
+ esbuild: "^0.28.0",
140
143
  eslint: "^10.0.2",
141
144
  "eslint-config-prettier": "^10.1.8",
142
145
  "eslint-plugin-compat": "^7.0.1",
143
146
  "eslint-plugin-depend": "^1.4.0",
144
147
  "eslint-plugin-simple-import-sort": "^12.1.1",
145
- "eslint-plugin-unicorn": "^63.0.0",
148
+ "eslint-plugin-unicorn": "^64.0.0",
146
149
  jiti: "^2.6.1",
147
150
  jsdom: "^29.0.0",
148
151
  multiparty: "^4.2.3",
@@ -152,6 +155,7 @@ var package_default = {
152
155
  "react-error-boundary": "^6.0.0",
153
156
  storybook: "^10.0.1",
154
157
  typescript: "^6.0.2",
158
+ "release-with-ease": "^2.1.0",
155
159
  "typescript-eslint": "^8.57.2"
156
160
  },
157
161
  dependencies: {
@@ -1788,6 +1792,52 @@ var Controller = class {
1788
1792
  };
1789
1793
  var controller_default = Controller;
1790
1794
 
1795
+ // src/isomorphic/parseSkip.ts
1796
+ function isSkipItem(item) {
1797
+ if (typeof item !== "object" || item === null) return false;
1798
+ const record = item;
1799
+ const hasComponent = typeof record["component"] === "string";
1800
+ const hasStoryFile = typeof record["storyFile"] === "string";
1801
+ if (hasComponent && hasStoryFile) return false;
1802
+ if (hasStoryFile) return record["variant"] === void 0;
1803
+ if (hasComponent) return record["variant"] === void 0 || typeof record["variant"] === "string";
1804
+ return false;
1805
+ }
1806
+ function validateSkip(json) {
1807
+ const parsed = JSON.parse(json);
1808
+ if (!Array.isArray(parsed) || !parsed.every(isSkipItem)) {
1809
+ throw new TypeError(
1810
+ "--skip must be a JSON array of {component, variant?} or {storyFile} objects"
1811
+ );
1812
+ }
1813
+ return parsed;
1814
+ }
1815
+ function parseSkip(json) {
1816
+ if (!json) return [];
1817
+ try {
1818
+ return validateSkip(json);
1819
+ } catch {
1820
+ return [];
1821
+ }
1822
+ }
1823
+ function toSkipSet(items) {
1824
+ const componentOnly = /* @__PURE__ */ new Set();
1825
+ const componentVariant = /* @__PURE__ */ new Set();
1826
+ for (const item of items) {
1827
+ if (!("component" in item)) continue;
1828
+ const { component, variant } = item;
1829
+ if (variant === void 0) {
1830
+ componentOnly.add(component);
1831
+ } else {
1832
+ componentVariant.add(`${component}\0${variant}`);
1833
+ }
1834
+ }
1835
+ return [componentOnly, componentVariant];
1836
+ }
1837
+ function isInSkipSet([componentOnly, componentVariant], component, variant) {
1838
+ return componentOnly.has(component) || componentVariant.has(`${component}\0${variant}`);
1839
+ }
1840
+
1791
1841
  // src/playwright/index.ts
1792
1842
  var pathToBrowserBuild = path3.resolve(
1793
1843
  import.meta.dirname,
@@ -1837,6 +1887,9 @@ var test = base.extend({
1837
1887
  happoScreenshot: async ({ page }, use) => {
1838
1888
  const integration = controller.config?.integration;
1839
1889
  const autoApplyPseudoStateAttributes = integration?.type === "playwright" ? integration.autoApplyPseudoStateAttributes ?? false : false;
1890
+ const skippedFilePath = process.env.HAPPO_SKIP_FILE;
1891
+ const rawSkipped = skippedFilePath ? fs5.readFileSync(skippedFilePath, "utf8") : void 0;
1892
+ const skipSet = toSkipSet(parseSkip(rawSkipped));
1840
1893
  const happoScreenshot = async (handleOrLocator, { component, variant, snapshotStrategy = "hoist", ...rest }) => {
1841
1894
  if (!controller.isActive()) {
1842
1895
  return;
@@ -1857,6 +1910,9 @@ var test = base.extend({
1857
1910
  if (!variant) {
1858
1911
  throw new Error("Missing `variant`");
1859
1912
  }
1913
+ if (isInSkipSet(skipSet, component, variant)) {
1914
+ return;
1915
+ }
1860
1916
  const elementHandle = "elementHandle" in handleOrLocator ? await handleOrLocator.elementHandle() : handleOrLocator;
1861
1917
  if (!elementHandle) {
1862
1918
  throw new Error("elementHandle cannot be null or undefined");