happo 6.2.6 → 6.3.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 +4 -4
  2. package/dist/browser/main.js.map +3 -3
  3. package/dist/cli/cancelJob-LSNOE34P.js +10 -0
  4. package/dist/cli/{chunk-UBNAHFZ5.js → chunk-2TMK44N3.js} +2 -2
  5. package/dist/cli/{chunk-2GWYMCM5.js → chunk-3EXZUW2Z.js} +15 -11
  6. package/dist/cli/chunk-3EXZUW2Z.js.map +7 -0
  7. package/dist/cli/{chunk-4SMOBHQY.js → chunk-AR3AP6FT.js} +2 -2
  8. package/dist/cli/{chunk-HFWMNEW7.js → chunk-DJLG5MCW.js} +3 -3
  9. package/dist/cli/{chunk-Q3DT6FIT.js → chunk-HELH6UTI.js} +2 -2
  10. package/dist/cli/{chunk-Q3DT6FIT.js.map → chunk-HELH6UTI.js.map} +1 -1
  11. package/dist/cli/{chunk-56XY3V7T.js → chunk-O7N6QKIL.js} +2 -2
  12. package/dist/cli/createAsyncComparison-T7JOBG7A.js +10 -0
  13. package/dist/cli/{createAsyncReport-EAFZGNCW.js → createAsyncReport-EEY5VHG4.js} +4 -4
  14. package/dist/cli/getFlakes-H7UPZETQ.js +73 -0
  15. package/dist/cli/getFlakes-H7UPZETQ.js.map +7 -0
  16. package/dist/cli/index.d.ts.map +1 -1
  17. package/dist/cli/main.js +186 -11
  18. package/dist/cli/main.js.map +2 -2
  19. package/dist/cli/package-TFI74YPA.js +7 -0
  20. package/dist/cli/{prepareSnapRequests-FQJAOJNF.js → prepareSnapRequests-7OHC5YSR.js} +4 -4
  21. package/dist/cli/startJob-ULCBWJ3I.js +10 -0
  22. package/dist/cli/telemetry.d.ts.map +1 -1
  23. package/dist/cli/{wrapper-LPL52GIF.js → wrapper-YN56WRXE.js} +7 -7
  24. package/dist/config/index.d.ts +43 -0
  25. package/dist/config/index.d.ts.map +1 -1
  26. package/dist/config/index.js.map +2 -2
  27. package/dist/config/loadConfig.d.ts.map +1 -1
  28. package/dist/cypress/index.js +3 -3
  29. package/dist/cypress/index.js.map +1 -1
  30. package/dist/cypress/task.js +45 -1
  31. package/dist/cypress/task.js.map +2 -2
  32. package/dist/network/createAsyncComparison.d.ts.map +1 -1
  33. package/dist/network/getFlakes.d.ts +39 -0
  34. package/dist/network/getFlakes.d.ts.map +1 -0
  35. package/dist/playwright/index.js +45 -1
  36. package/dist/playwright/index.js.map +2 -2
  37. package/package.json +1 -1
  38. package/dist/cli/cancelJob-JVBWGU62.js +0 -10
  39. package/dist/cli/chunk-2GWYMCM5.js.map +0 -7
  40. package/dist/cli/createAsyncComparison-IVFALQTJ.js +0 -10
  41. package/dist/cli/package-LZDJBDUK.js +0 -7
  42. package/dist/cli/startJob-ZYTK6OMK.js +0 -10
  43. /package/dist/cli/{cancelJob-JVBWGU62.js.map → cancelJob-LSNOE34P.js.map} +0 -0
  44. /package/dist/cli/{chunk-UBNAHFZ5.js.map → chunk-2TMK44N3.js.map} +0 -0
  45. /package/dist/cli/{chunk-4SMOBHQY.js.map → chunk-AR3AP6FT.js.map} +0 -0
  46. /package/dist/cli/{chunk-HFWMNEW7.js.map → chunk-DJLG5MCW.js.map} +0 -0
  47. /package/dist/cli/{chunk-56XY3V7T.js.map → chunk-O7N6QKIL.js.map} +0 -0
  48. /package/dist/cli/{createAsyncComparison-IVFALQTJ.js.map → createAsyncComparison-T7JOBG7A.js.map} +0 -0
  49. /package/dist/cli/{createAsyncReport-EAFZGNCW.js.map → createAsyncReport-EEY5VHG4.js.map} +0 -0
  50. /package/dist/cli/{package-LZDJBDUK.js.map → package-TFI74YPA.js.map} +0 -0
  51. /package/dist/cli/{prepareSnapRequests-FQJAOJNF.js.map → prepareSnapRequests-7OHC5YSR.js.map} +0 -0
  52. /package/dist/cli/{startJob-ZYTK6OMK.js.map → startJob-ULCBWJ3I.js.map} +0 -0
  53. /package/dist/cli/{wrapper-LPL52GIF.js.map → wrapper-YN56WRXE.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFlakes.d.ts","sourceRoot":"","sources":["../../src/network/getFlakes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGrD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,MAAM,CAiCnE;AAED,wBAA8B,SAAS,CACrC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,gBAAgB,EAC3E,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAuC5B"}
@@ -18,7 +18,7 @@ import asyncRetry from "async-retry";
18
18
  // package.json
19
19
  var package_default = {
20
20
  name: "happo",
21
- version: "6.2.6",
21
+ version: "6.3.0",
22
22
  description: "Catch unexpected visual and accessibility changes and UI bugs",
23
23
  license: "MIT",
24
24
  repository: {
@@ -514,6 +514,44 @@ async function getFallbackApiToken(endpoint, environment, logger) {
514
514
  }
515
515
  return void 0;
516
516
  }
517
+ function validateDeepCompareSettings(deepCompare, configFilePath) {
518
+ if (typeof deepCompare !== "object" || Array.isArray(deepCompare)) {
519
+ throw new TypeError(
520
+ `Invalid \`deepCompare\` in config file ${configFilePath}: must be an object, got: ${Array.isArray(deepCompare) ? "array" : typeof deepCompare}.`
521
+ );
522
+ }
523
+ const settings = deepCompare;
524
+ if (!("compareThreshold" in settings) || settings.compareThreshold === void 0) {
525
+ throw new TypeError(
526
+ `Invalid \`deepCompare\` in config file ${configFilePath}: \`compareThreshold\` is required.`
527
+ );
528
+ }
529
+ if (typeof settings.compareThreshold !== "number" || settings.compareThreshold < 0 || settings.compareThreshold > 1) {
530
+ throw new TypeError(
531
+ `Invalid \`deepCompare.compareThreshold\` in config file ${configFilePath}: must be a number between 0 and 1, got: ${JSON.stringify(settings.compareThreshold)}.`
532
+ );
533
+ }
534
+ if ("diffAlgorithm" in settings && settings.diffAlgorithm !== void 0 && (typeof settings.diffAlgorithm !== "string" || settings.diffAlgorithm !== "color-delta" && settings.diffAlgorithm !== "ssim")) {
535
+ throw new TypeError(
536
+ `Invalid \`deepCompare.diffAlgorithm\` in config file ${configFilePath}: must be "color-delta" or "ssim", got: ${JSON.stringify(settings.diffAlgorithm)}.`
537
+ );
538
+ }
539
+ if ("ignoreThreshold" in settings && settings.ignoreThreshold !== void 0 && (typeof settings.ignoreThreshold !== "number" || settings.ignoreThreshold < 0 || settings.ignoreThreshold > 1)) {
540
+ throw new TypeError(
541
+ `Invalid \`deepCompare.ignoreThreshold\` in config file ${configFilePath}: must be a number between 0 and 1, got: ${JSON.stringify(settings.ignoreThreshold)}.`
542
+ );
543
+ }
544
+ if ("ignoreWhitespace" in settings && settings.ignoreWhitespace !== void 0 && typeof settings.ignoreWhitespace !== "boolean") {
545
+ throw new TypeError(
546
+ `Invalid \`deepCompare.ignoreWhitespace\` in config file ${configFilePath}: must be a boolean, got: ${JSON.stringify(settings.ignoreWhitespace)}.`
547
+ );
548
+ }
549
+ if ("applyBlur" in settings && settings.applyBlur !== void 0 && typeof settings.applyBlur !== "boolean") {
550
+ throw new TypeError(
551
+ `Invalid \`deepCompare.applyBlur\` in config file ${configFilePath}: must be a boolean, got: ${JSON.stringify(settings.applyBlur)}.`
552
+ );
553
+ }
554
+ }
517
555
  async function loadConfigFile(configFilePath, environment, logger = console) {
518
556
  try {
519
557
  const stats = await fs.promises.stat(configFilePath);
@@ -600,6 +638,12 @@ async function loadConfigFile(configFilePath, environment, logger = console) {
600
638
  target.freezeAnimations = target.freezeAnimations || "last-frame";
601
639
  target.prefersReducedMotion = target.prefersReducedMotion ?? true;
602
640
  }
641
+ if (config.deepCompare !== void 0 && config.deepCompare !== null) {
642
+ validateDeepCompareSettings(config.deepCompare, configFilePath);
643
+ if (!config.deepCompare.diffAlgorithm) {
644
+ config.deepCompare.diffAlgorithm = "color-delta";
645
+ }
646
+ }
603
647
  const configWithDefaults = {
604
648
  endpoint: DEFAULT_ENDPOINT,
605
649
  githubApiUrl: "https://api.github.com",