happo 6.10.5 → 6.10.6

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 (43) hide show
  1. package/dist/cli/cancelJob-QJGMFV4N.js +10 -0
  2. package/dist/cli/{chunk-U7PP5H4X.js → chunk-6PTXBJ22.js} +2 -2
  3. package/dist/cli/{chunk-I7YA4BE4.js → chunk-GXJ3GRNU.js} +2 -2
  4. package/dist/cli/{chunk-MMMV4X5N.js → chunk-JGORCIIC.js} +3 -3
  5. package/dist/cli/{chunk-EVFTOWPY.js → chunk-L3G3K5UR.js} +2 -2
  6. package/dist/cli/{chunk-W5VXG6TS.js → chunk-NMDCVCUW.js} +2 -2
  7. package/dist/cli/{chunk-W5VXG6TS.js.map → chunk-NMDCVCUW.js.map} +1 -1
  8. package/dist/cli/{chunk-QDHHO2TF.js → chunk-RHWWCAFJ.js} +2 -2
  9. package/dist/cli/createAsyncComparison-UXGLQIEF.js +10 -0
  10. package/dist/cli/{createAsyncReport-LV3IHATT.js → createAsyncReport-OF5GZJ34.js} +4 -4
  11. package/dist/cli/{createExtendsReportSnapRequest-HQO3KHTW.js → createExtendsReportSnapRequest-J5DCLPDW.js} +4 -4
  12. package/dist/cli/{findBaselineReport-4E3CI257.js → findBaselineReport-BNVRQZWM.js} +4 -4
  13. package/dist/cli/{getFlakes-CFBQ3M6H.js → getFlakes-WW3574IX.js} +4 -4
  14. package/dist/cli/main.js +15 -15
  15. package/dist/cli/package-Y7DOMFON.js +7 -0
  16. package/dist/cli/{prepareSnapRequests-IN6OYDIH.js → prepareSnapRequests-QUWWW6DO.js} +4 -4
  17. package/dist/cli/startJob-SBUIMISC.js +10 -0
  18. package/dist/cli/{wrapper-CLE4TC6Y.js → wrapper-IN4XZXFF.js} +8 -8
  19. package/dist/cli/wrapper-IN4XZXFF.js.map +7 -0
  20. package/dist/cypress/task.js +1 -1
  21. package/dist/cypress/task.js.map +1 -1
  22. package/dist/playwright/index.js +1 -1
  23. package/dist/playwright/index.js.map +1 -1
  24. package/package.json +1 -1
  25. package/dist/cli/cancelJob-KTNZTMJE.js +0 -10
  26. package/dist/cli/createAsyncComparison-EW72MBJV.js +0 -10
  27. package/dist/cli/package-WCQOTISM.js +0 -7
  28. package/dist/cli/startJob-RGYM5473.js +0 -10
  29. package/dist/cli/wrapper-CLE4TC6Y.js.map +0 -7
  30. /package/dist/cli/{cancelJob-KTNZTMJE.js.map → cancelJob-QJGMFV4N.js.map} +0 -0
  31. /package/dist/cli/{chunk-U7PP5H4X.js.map → chunk-6PTXBJ22.js.map} +0 -0
  32. /package/dist/cli/{chunk-I7YA4BE4.js.map → chunk-GXJ3GRNU.js.map} +0 -0
  33. /package/dist/cli/{chunk-MMMV4X5N.js.map → chunk-JGORCIIC.js.map} +0 -0
  34. /package/dist/cli/{chunk-EVFTOWPY.js.map → chunk-L3G3K5UR.js.map} +0 -0
  35. /package/dist/cli/{chunk-QDHHO2TF.js.map → chunk-RHWWCAFJ.js.map} +0 -0
  36. /package/dist/cli/{createAsyncComparison-EW72MBJV.js.map → createAsyncComparison-UXGLQIEF.js.map} +0 -0
  37. /package/dist/cli/{createAsyncReport-LV3IHATT.js.map → createAsyncReport-OF5GZJ34.js.map} +0 -0
  38. /package/dist/cli/{createExtendsReportSnapRequest-HQO3KHTW.js.map → createExtendsReportSnapRequest-J5DCLPDW.js.map} +0 -0
  39. /package/dist/cli/{findBaselineReport-4E3CI257.js.map → findBaselineReport-BNVRQZWM.js.map} +0 -0
  40. /package/dist/cli/{getFlakes-CFBQ3M6H.js.map → getFlakes-WW3574IX.js.map} +0 -0
  41. /package/dist/cli/{package-WCQOTISM.js.map → package-Y7DOMFON.js.map} +0 -0
  42. /package/dist/cli/{prepareSnapRequests-IN6OYDIH.js.map → prepareSnapRequests-QUWWW6DO.js.map} +0 -0
  43. /package/dist/cli/{startJob-RGYM5473.js.map → startJob-SBUIMISC.js.map} +0 -0
@@ -0,0 +1,10 @@
1
+ import {
2
+ cancelJob
3
+ } from "./chunk-JGORCIIC.js";
4
+ import "./chunk-RHWWCAFJ.js";
5
+ import "./chunk-6PTXBJ22.js";
6
+ import "./chunk-NMDCVCUW.js";
7
+ export {
8
+ cancelJob as default
9
+ };
10
+ //# sourceMappingURL=cancelJob-QJGMFV4N.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  package_default
3
- } from "./chunk-W5VXG6TS.js";
3
+ } from "./chunk-NMDCVCUW.js";
4
4
 
5
5
  // src/network/fetchWithRetry.ts
6
6
  import asyncRetry from "async-retry";
@@ -95,4 +95,4 @@ export {
95
95
  ErrorWithStatusCode,
96
96
  fetchWithRetry
97
97
  };
98
- //# sourceMappingURL=chunk-U7PP5H4X.js.map
98
+ //# sourceMappingURL=chunk-6PTXBJ22.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeHappoAPIRequest
3
- } from "./chunk-QDHHO2TF.js";
3
+ } from "./chunk-RHWWCAFJ.js";
4
4
 
5
5
  // src/network/createAsyncComparison.ts
6
6
  function assertResultIsCreateAsyncComparisonResult(result) {
@@ -60,4 +60,4 @@ async function createAsyncComparison(config, {
60
60
  export {
61
61
  createAsyncComparison
62
62
  };
63
- //# sourceMappingURL=chunk-I7YA4BE4.js.map
63
+ //# sourceMappingURL=chunk-GXJ3GRNU.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  makeHappoAPIRequest
3
- } from "./chunk-QDHHO2TF.js";
3
+ } from "./chunk-RHWWCAFJ.js";
4
4
  import {
5
5
  ErrorWithStatusCode
6
- } from "./chunk-U7PP5H4X.js";
6
+ } from "./chunk-6PTXBJ22.js";
7
7
 
8
8
  // src/network/cancelJob.ts
9
9
  async function cancelJob(status, message, config, { beforeSha, afterSha, link }, logger) {
@@ -43,4 +43,4 @@ async function cancelJob(status, message, config, { beforeSha, afterSha, link },
43
43
  export {
44
44
  cancelJob
45
45
  };
46
- //# sourceMappingURL=chunk-MMMV4X5N.js.map
46
+ //# sourceMappingURL=chunk-JGORCIIC.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  makeHappoAPIRequest
3
- } from "./chunk-QDHHO2TF.js";
3
+ } from "./chunk-RHWWCAFJ.js";
4
4
 
5
5
  // src/network/startJob.ts
6
6
  function assertResultIsStartJobResult(result) {
@@ -36,4 +36,4 @@ async function startJob(config, { beforeSha, afterSha, link, message }, logger)
36
36
  export {
37
37
  startJob
38
38
  };
39
- //# sourceMappingURL=chunk-EVFTOWPY.js.map
39
+ //# sourceMappingURL=chunk-L3G3K5UR.js.map
@@ -1,7 +1,7 @@
1
1
  // package.json
2
2
  var package_default = {
3
3
  name: "happo",
4
- version: "6.10.5",
4
+ version: "6.10.6",
5
5
  description: "Catch unexpected visual and accessibility changes and UI bugs",
6
6
  license: "MIT",
7
7
  repository: {
@@ -188,4 +188,4 @@ var package_default = {
188
188
  export {
189
189
  package_default
190
190
  };
191
- //# sourceMappingURL=chunk-W5VXG6TS.js.map
191
+ //# sourceMappingURL=chunk-NMDCVCUW.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../package.json"],
4
- "sourcesContent": ["{\n \"name\": \"happo\",\n \"version\": \"6.10.5\",\n \"description\": \"Catch unexpected visual and accessibility changes and UI bugs\",\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/happo/happo.git\"\n },\n \"bugs\": \"https://github.com/happo/happo/issues\",\n \"homepage\": \"https://happo.io\",\n \"bin\": {\n \"happo\": \"dist/cli/main.js\"\n },\n \"type\": \"module\",\n \"main\": \"./dist/config/index.js\",\n \"types\": \"./dist/config/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/config/index.d.ts\",\n \"default\": \"./dist/config/index.js\"\n },\n \"./cypress\": {\n \"types\": \"./dist/cypress/index.d.ts\",\n \"default\": \"./dist/cypress/index.js\"\n },\n \"./cypress/task\": {\n \"types\": \"./dist/cypress/task.d.ts\",\n \"default\": \"./dist/cypress/task.js\"\n },\n \"./playwright\": {\n \"types\": \"./dist/playwright/index.d.ts\",\n \"default\": \"./dist/playwright/index.js\"\n },\n \"./custom\": {\n \"types\": \"./dist/custom/index.d.ts\",\n \"default\": \"./dist/custom/index.js\"\n },\n \"./storybook/addon\": {\n \"types\": \"./dist/storybook/browser/addon.d.ts\",\n \"default\": \"./dist/storybook/browser/addon.js\"\n },\n \"./storybook/decorator\": {\n \"types\": \"./dist/storybook/browser/decorator.d.ts\",\n \"default\": \"./dist/storybook/browser/decorator.js\"\n },\n \"./storybook/preset\": {\n \"types\": \"./dist/storybook/preset.d.ts\",\n \"default\": \"./dist/storybook/preset.js\"\n },\n \"./storybook/register\": {\n \"types\": \"./dist/storybook/browser/register.d.ts\",\n \"default\": \"./dist/storybook/browser/register.js\"\n }\n },\n \"files\": [\n \"dist\",\n \"preset.js\"\n ],\n \"scripts\": {\n \"all\": \"node ./scripts/allchecks.ts\",\n \"build\": \"pnpm build:types && pnpm build:dist\",\n \"build:custom\": \"esbuild src/custom/__happo__/index.ts --bundle --format=iife --global-name=happoCustom --outfile=tmp/happo-custom/bundle.js --platform=browser --target=esnext\",\n \"build:dist\": \"node ./scripts/build.ts\",\n \"build:types\": \"pnpm tsc --pretty\",\n \"build:watch\": \"tsc --build --watch\",\n \"clean\": \"node ./scripts/clean.ts\",\n \"lint\": \"eslint .\",\n \"prepublishOnly\": \"pnpm clean && pnpm build\",\n \"storybook:dev\": \"storybook dev --config-dir src/storybook/__tests__/storybook-app -p ${PORT:-6007}\",\n \"test\": \"node --env-file-if-exists=.env.local ./scripts/test.ts\",\n \"test:custom\": \"pnpm build:dist && pnpm build:custom && node --env-file-if-exists=.env.local dist/cli/main.js -c ./happoconfigs/happo.custom.config.ts\",\n \"test:cypress\": \"pnpm build:dist && node --env-file-if-exists=.env.local dist/cli/main.js -c ./happoconfigs/happo.cypress.config.ts e2e -- cypress run -C src/cypress/__cypress__/cypress.config.ts\",\n \"test:cypress:open\": \"cypress open -C src/cypress/__cypress__/cypress.config.ts\",\n \"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\",\n \"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\",\n \"test:storybook\": \"pnpm build:dist && node --env-file-if-exists=.env.local dist/cli/main.js -c ./happoconfigs/happo.storybook.config.ts\",\n \"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)\\\"\",\n \"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)\\\"\",\n \"test:pages\": \"pnpm build:dist && node --env-file-if-exists=.env.local dist/cli/main.js -c ./happoconfigs/happo.pages.config.ts\",\n \"release\": \"set -a && source .env && set +a && release-with-ease\",\n \"tsc\": \"tsc --build tsconfig.json\"\n },\n \"browserslist\": {\n \"node\": [\n \"node 22\"\n ],\n \"browser\": [\n \"last 2 Chrome major versions\",\n \"last 2 Firefox major versions\",\n \"last 2 Safari major versions\",\n \"last 2 Edge major versions\"\n ],\n \"isomorphic\": [\n \"node 22\",\n \"last 2 Chrome major versions\",\n \"last 2 Firefox major versions\",\n \"last 2 Safari major versions\",\n \"last 2 Edge major versions\"\n ]\n },\n \"prettier\": {\n \"printWidth\": 85,\n \"singleQuote\": true,\n \"trailingComma\": \"all\",\n \"arrowParens\": \"always\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^10.0.1\",\n \"@playwright/test\": \"^1.55.1\",\n \"@reporters/github\": \"^1.11.0\",\n \"@storybook/builder-vite\": \"^10.0.1\",\n \"@storybook/react-vite\": \"^10.0.1\",\n \"@types/async-retry\": \"^1.4.9\",\n \"@types/base64-stream\": \"^1.0.5\",\n \"@types/jsdom\": \"^28.0.0\",\n \"@types/mime-types\": \"^3.0.1\",\n \"@types/multiparty\": \"^4.2.1\",\n \"@types/node\": \"^24.9.1\",\n \"@types/react\": \"^19.2.0\",\n \"@types/react-dom\": \"^19.2.0\",\n \"cypress\": \"^15.5.0\",\n \"esbuild\": \"^0.28.0\",\n \"eslint\": \"^10.0.2\",\n \"eslint-config-prettier\": \"^10.1.8\",\n \"eslint-plugin-compat\": \"^7.0.1\",\n \"eslint-plugin-depend\": \"^1.4.0\",\n \"eslint-plugin-simple-import-sort\": \"^12.1.1\",\n \"eslint-plugin-unicorn\": \"^64.0.0\",\n \"jiti\": \"^2.6.1\",\n \"jsdom\": \"^29.0.0\",\n \"multiparty\": \"^4.2.3\",\n \"prettier\": \"^3.6.2\",\n \"react\": \"^19.2.0\",\n \"react-dom\": \"^19.2.0\",\n \"react-error-boundary\": \"^6.0.0\",\n \"storybook\": \"^10.0.1\",\n \"typescript\": \"^6.0.2\",\n \"release-with-ease\": \"^2.1.0\",\n \"typescript-eslint\": \"^8.57.2\"\n },\n \"dependencies\": {\n \"async-retry\": \"^1.3.3\",\n \"base64-stream\": \"^1.0.0\",\n \"empathic\": \"^2.0.0\",\n \"fflate\": \"^0.8.2\",\n \"jose\": \"^6.1.0\",\n \"limit-concur\": \"^4.0.0\",\n \"mime-types\": \"^3.0.1\",\n \"srcset\": \"^5.0.2\"\n },\n \"storybook\": {\n \"displayName\": \"Happo\",\n \"icon\": \"https://happo.io/static/happo-hippo.png\",\n \"supportedFrameworks\": [\n \"angular\",\n \"ember\",\n \"html\",\n \"preact\",\n \"react\",\n \"react-native\",\n \"svelte\",\n \"vue\",\n \"web-components\"\n ],\n \"unsupportedFrameworks\": []\n },\n \"keywords\": [\n \"storybook-addon\",\n \"accessibility\",\n \"cypress\",\n \"playwright\",\n \"regression\",\n \"storybook\",\n \"test\",\n \"testing\",\n \"ui\",\n \"visual-regression\",\n \"visual\",\n \"vrt\"\n ],\n \"engines\": {\n \"node\": \"^22.18.0 || ^23.6.0 || >=24.0.0\"\n }\n}\n"],
4
+ "sourcesContent": ["{\n \"name\": \"happo\",\n \"version\": \"6.10.6\",\n \"description\": \"Catch unexpected visual and accessibility changes and UI bugs\",\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/happo/happo.git\"\n },\n \"bugs\": \"https://github.com/happo/happo/issues\",\n \"homepage\": \"https://happo.io\",\n \"bin\": {\n \"happo\": \"dist/cli/main.js\"\n },\n \"type\": \"module\",\n \"main\": \"./dist/config/index.js\",\n \"types\": \"./dist/config/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/config/index.d.ts\",\n \"default\": \"./dist/config/index.js\"\n },\n \"./cypress\": {\n \"types\": \"./dist/cypress/index.d.ts\",\n \"default\": \"./dist/cypress/index.js\"\n },\n \"./cypress/task\": {\n \"types\": \"./dist/cypress/task.d.ts\",\n \"default\": \"./dist/cypress/task.js\"\n },\n \"./playwright\": {\n \"types\": \"./dist/playwright/index.d.ts\",\n \"default\": \"./dist/playwright/index.js\"\n },\n \"./custom\": {\n \"types\": \"./dist/custom/index.d.ts\",\n \"default\": \"./dist/custom/index.js\"\n },\n \"./storybook/addon\": {\n \"types\": \"./dist/storybook/browser/addon.d.ts\",\n \"default\": \"./dist/storybook/browser/addon.js\"\n },\n \"./storybook/decorator\": {\n \"types\": \"./dist/storybook/browser/decorator.d.ts\",\n \"default\": \"./dist/storybook/browser/decorator.js\"\n },\n \"./storybook/preset\": {\n \"types\": \"./dist/storybook/preset.d.ts\",\n \"default\": \"./dist/storybook/preset.js\"\n },\n \"./storybook/register\": {\n \"types\": \"./dist/storybook/browser/register.d.ts\",\n \"default\": \"./dist/storybook/browser/register.js\"\n }\n },\n \"files\": [\n \"dist\",\n \"preset.js\"\n ],\n \"scripts\": {\n \"all\": \"node ./scripts/allchecks.ts\",\n \"build\": \"pnpm build:types && pnpm build:dist\",\n \"build:custom\": \"esbuild src/custom/__happo__/index.ts --bundle --format=iife --global-name=happoCustom --outfile=tmp/happo-custom/bundle.js --platform=browser --target=esnext\",\n \"build:dist\": \"node ./scripts/build.ts\",\n \"build:types\": \"pnpm tsc --pretty\",\n \"build:watch\": \"tsc --build --watch\",\n \"clean\": \"node ./scripts/clean.ts\",\n \"lint\": \"eslint .\",\n \"prepublishOnly\": \"pnpm clean && pnpm build\",\n \"storybook:dev\": \"storybook dev --config-dir src/storybook/__tests__/storybook-app -p ${PORT:-6007}\",\n \"test\": \"node --env-file-if-exists=.env.local ./scripts/test.ts\",\n \"test:custom\": \"pnpm build:dist && pnpm build:custom && node --env-file-if-exists=.env.local dist/cli/main.js -c ./happoconfigs/happo.custom.config.ts\",\n \"test:cypress\": \"pnpm build:dist && node --env-file-if-exists=.env.local dist/cli/main.js -c ./happoconfigs/happo.cypress.config.ts e2e -- cypress run -C src/cypress/__cypress__/cypress.config.ts\",\n \"test:cypress:open\": \"cypress open -C src/cypress/__cypress__/cypress.config.ts\",\n \"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\",\n \"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\",\n \"test:storybook\": \"pnpm build:dist && node --env-file-if-exists=.env.local dist/cli/main.js -c ./happoconfigs/happo.storybook.config.ts\",\n \"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)\\\"\",\n \"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)\\\"\",\n \"test:pages\": \"pnpm build:dist && node --env-file-if-exists=.env.local dist/cli/main.js -c ./happoconfigs/happo.pages.config.ts\",\n \"release\": \"set -a && source .env && set +a && release-with-ease\",\n \"tsc\": \"tsc --build tsconfig.json\"\n },\n \"browserslist\": {\n \"node\": [\n \"node 22\"\n ],\n \"browser\": [\n \"last 2 Chrome major versions\",\n \"last 2 Firefox major versions\",\n \"last 2 Safari major versions\",\n \"last 2 Edge major versions\"\n ],\n \"isomorphic\": [\n \"node 22\",\n \"last 2 Chrome major versions\",\n \"last 2 Firefox major versions\",\n \"last 2 Safari major versions\",\n \"last 2 Edge major versions\"\n ]\n },\n \"prettier\": {\n \"printWidth\": 85,\n \"singleQuote\": true,\n \"trailingComma\": \"all\",\n \"arrowParens\": \"always\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^10.0.1\",\n \"@playwright/test\": \"^1.55.1\",\n \"@reporters/github\": \"^1.11.0\",\n \"@storybook/builder-vite\": \"^10.0.1\",\n \"@storybook/react-vite\": \"^10.0.1\",\n \"@types/async-retry\": \"^1.4.9\",\n \"@types/base64-stream\": \"^1.0.5\",\n \"@types/jsdom\": \"^28.0.0\",\n \"@types/mime-types\": \"^3.0.1\",\n \"@types/multiparty\": \"^4.2.1\",\n \"@types/node\": \"^24.9.1\",\n \"@types/react\": \"^19.2.0\",\n \"@types/react-dom\": \"^19.2.0\",\n \"cypress\": \"^15.5.0\",\n \"esbuild\": \"^0.28.0\",\n \"eslint\": \"^10.0.2\",\n \"eslint-config-prettier\": \"^10.1.8\",\n \"eslint-plugin-compat\": \"^7.0.1\",\n \"eslint-plugin-depend\": \"^1.4.0\",\n \"eslint-plugin-simple-import-sort\": \"^12.1.1\",\n \"eslint-plugin-unicorn\": \"^64.0.0\",\n \"jiti\": \"^2.6.1\",\n \"jsdom\": \"^29.0.0\",\n \"multiparty\": \"^4.2.3\",\n \"prettier\": \"^3.6.2\",\n \"react\": \"^19.2.0\",\n \"react-dom\": \"^19.2.0\",\n \"react-error-boundary\": \"^6.0.0\",\n \"storybook\": \"^10.0.1\",\n \"typescript\": \"^6.0.2\",\n \"release-with-ease\": \"^2.1.0\",\n \"typescript-eslint\": \"^8.57.2\"\n },\n \"dependencies\": {\n \"async-retry\": \"^1.3.3\",\n \"base64-stream\": \"^1.0.0\",\n \"empathic\": \"^2.0.0\",\n \"fflate\": \"^0.8.2\",\n \"jose\": \"^6.1.0\",\n \"limit-concur\": \"^4.0.0\",\n \"mime-types\": \"^3.0.1\",\n \"srcset\": \"^5.0.2\"\n },\n \"storybook\": {\n \"displayName\": \"Happo\",\n \"icon\": \"https://happo.io/static/happo-hippo.png\",\n \"supportedFrameworks\": [\n \"angular\",\n \"ember\",\n \"html\",\n \"preact\",\n \"react\",\n \"react-native\",\n \"svelte\",\n \"vue\",\n \"web-components\"\n ],\n \"unsupportedFrameworks\": []\n },\n \"keywords\": [\n \"storybook-addon\",\n \"accessibility\",\n \"cypress\",\n \"playwright\",\n \"regression\",\n \"storybook\",\n \"test\",\n \"testing\",\n \"ui\",\n \"visual-regression\",\n \"visual\",\n \"vrt\"\n ],\n \"engines\": {\n \"node\": \"^22.18.0 || ^23.6.0 || >=24.0.0\"\n }\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  fetchWithRetry
3
- } from "./chunk-U7PP5H4X.js";
3
+ } from "./chunk-6PTXBJ22.js";
4
4
 
5
5
  // src/network/getSignedToken.ts
6
6
  import { SignJWT } from "jose";
@@ -81,4 +81,4 @@ async function makeHappoAPIRequest({ url, path, method = "GET", formData, body }
81
81
  export {
82
82
  makeHappoAPIRequest
83
83
  };
84
- //# sourceMappingURL=chunk-QDHHO2TF.js.map
84
+ //# sourceMappingURL=chunk-RHWWCAFJ.js.map
@@ -0,0 +1,10 @@
1
+ import {
2
+ createAsyncComparison
3
+ } from "./chunk-GXJ3GRNU.js";
4
+ import "./chunk-RHWWCAFJ.js";
5
+ import "./chunk-6PTXBJ22.js";
6
+ import "./chunk-NMDCVCUW.js";
7
+ export {
8
+ createAsyncComparison as default
9
+ };
10
+ //# sourceMappingURL=createAsyncComparison-UXGLQIEF.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  makeHappoAPIRequest
3
- } from "./chunk-QDHHO2TF.js";
4
- import "./chunk-U7PP5H4X.js";
5
- import "./chunk-W5VXG6TS.js";
3
+ } from "./chunk-RHWWCAFJ.js";
4
+ import "./chunk-6PTXBJ22.js";
5
+ import "./chunk-NMDCVCUW.js";
6
6
 
7
7
  // src/network/createAsyncReport.ts
8
8
  function assertResultIsCreateAsyncReportResult(result) {
@@ -38,4 +38,4 @@ async function createAsyncReport(snapRequestIds, config, { afterSha, link, messa
38
38
  export {
39
39
  createAsyncReport as default
40
40
  };
41
- //# sourceMappingURL=createAsyncReport-LV3IHATT.js.map
41
+ //# sourceMappingURL=createAsyncReport-OF5GZJ34.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  makeHappoAPIRequest
3
- } from "./chunk-QDHHO2TF.js";
4
- import "./chunk-U7PP5H4X.js";
5
- import "./chunk-W5VXG6TS.js";
3
+ } from "./chunk-RHWWCAFJ.js";
4
+ import "./chunk-6PTXBJ22.js";
5
+ import "./chunk-NMDCVCUW.js";
6
6
 
7
7
  // src/network/createExtendsReportSnapRequest.ts
8
8
  async function createExtendsReportSnapRequest(extendsSha, skip, config) {
@@ -29,4 +29,4 @@ async function createExtendsReportSnapRequest(extendsSha, skip, config) {
29
29
  export {
30
30
  createExtendsReportSnapRequest as default
31
31
  };
32
- //# sourceMappingURL=createExtendsReportSnapRequest-HQO3KHTW.js.map
32
+ //# sourceMappingURL=createExtendsReportSnapRequest-J5DCLPDW.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  makeHappoAPIRequest
3
- } from "./chunk-QDHHO2TF.js";
4
- import "./chunk-U7PP5H4X.js";
5
- import "./chunk-W5VXG6TS.js";
3
+ } from "./chunk-RHWWCAFJ.js";
4
+ import "./chunk-6PTXBJ22.js";
5
+ import "./chunk-NMDCVCUW.js";
6
6
 
7
7
  // src/network/findBaselineReport.ts
8
8
  async function findBaselineReport(environment, config, logger) {
@@ -33,4 +33,4 @@ async function findBaselineReport(environment, config, logger) {
33
33
  export {
34
34
  findBaselineReport as default
35
35
  };
36
- //# sourceMappingURL=findBaselineReport-4E3CI257.js.map
36
+ //# sourceMappingURL=findBaselineReport-BNVRQZWM.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  makeHappoAPIRequest
3
- } from "./chunk-QDHHO2TF.js";
4
- import "./chunk-U7PP5H4X.js";
5
- import "./chunk-W5VXG6TS.js";
3
+ } from "./chunk-RHWWCAFJ.js";
4
+ import "./chunk-6PTXBJ22.js";
5
+ import "./chunk-NMDCVCUW.js";
6
6
 
7
7
  // src/network/getFlakes.ts
8
8
  function formatFlakeOutput(flakes) {
@@ -70,4 +70,4 @@ export {
70
70
  getFlakes as default,
71
71
  formatFlakeOutput
72
72
  };
73
- //# sourceMappingURL=getFlakes-CFBQ3M6H.js.map
73
+ //# sourceMappingURL=getFlakes-WW3574IX.js.map
package/dist/cli/main.js CHANGED
@@ -7,10 +7,10 @@ import {
7
7
  } from "./chunk-ML3Z5Z22.js";
8
8
  import {
9
9
  fetchWithRetry
10
- } from "./chunk-U7PP5H4X.js";
10
+ } from "./chunk-6PTXBJ22.js";
11
11
  import {
12
12
  package_default
13
- } from "./chunk-W5VXG6TS.js";
13
+ } from "./chunk-NMDCVCUW.js";
14
14
 
15
15
  // src/cli/index.ts
16
16
  import path3 from "node:path";
@@ -1228,7 +1228,7 @@ function createReporter(opts = {}) {
1228
1228
 
1229
1229
  // src/cli/index.ts
1230
1230
  async function getVersion() {
1231
- const packageJson = await import("./package-WCQOTISM.js");
1231
+ const packageJson = await import("./package-Y7DOMFON.js");
1232
1232
  return packageJson.default.version;
1233
1233
  }
1234
1234
  function parseDashdashCommandParts(rawArgs) {
@@ -1498,10 +1498,10 @@ async function main(rawArgs = process.argv, logger = console) {
1498
1498
  async function handleDefaultCommand(config, environment, logger) {
1499
1499
  logger.log("Running happo tests...");
1500
1500
  const [startJob, createAsyncComparison, createAsyncReport, prepareSnapRequests] = await Promise.all([
1501
- (await import("./startJob-RGYM5473.js")).default,
1502
- (await import("./createAsyncComparison-EW72MBJV.js")).default,
1503
- (await import("./createAsyncReport-LV3IHATT.js")).default,
1504
- (await import("./prepareSnapRequests-IN6OYDIH.js")).default
1501
+ (await import("./startJob-SBUIMISC.js")).default,
1502
+ (await import("./createAsyncComparison-UXGLQIEF.js")).default,
1503
+ (await import("./createAsyncReport-OF5GZJ34.js")).default,
1504
+ (await import("./prepareSnapRequests-QUWWW6DO.js")).default
1505
1505
  ]);
1506
1506
  await startJob(config, environment, logger);
1507
1507
  try {
@@ -1533,7 +1533,7 @@ async function handleDefaultCommand(config, environment, logger) {
1533
1533
  process.exitCode = 1;
1534
1534
  return;
1535
1535
  }
1536
- const findBaselineReport = (await import("./findBaselineReport-4E3CI257.js")).default;
1536
+ const findBaselineReport = (await import("./findBaselineReport-BNVRQZWM.js")).default;
1537
1537
  baselineSha = await findBaselineReport(environment, config, logger);
1538
1538
  if (!baselineSha) {
1539
1539
  logger.log(
@@ -1562,7 +1562,7 @@ async function handleDefaultCommand(config, environment, logger) {
1562
1562
  return;
1563
1563
  }
1564
1564
  if (!baselineSha) {
1565
- const findBaselineReport = (await import("./findBaselineReport-4E3CI257.js")).default;
1565
+ const findBaselineReport = (await import("./findBaselineReport-BNVRQZWM.js")).default;
1566
1566
  baselineSha = await findBaselineReport(environment, config, logger);
1567
1567
  if (!baselineSha) {
1568
1568
  logger.log(
@@ -1574,7 +1574,7 @@ async function handleDefaultCommand(config, environment, logger) {
1574
1574
  const { snapRequestIds, resolvedSkip } = await prepareSnapRequests(config, skip, only);
1575
1575
  let allSnapRequestIds = snapRequestIds;
1576
1576
  if (skip && baselineSha) {
1577
- const createExtendsReportSnapRequest = (await import("./createExtendsReportSnapRequest-HQO3KHTW.js")).default;
1577
+ const createExtendsReportSnapRequest = (await import("./createExtendsReportSnapRequest-J5DCLPDW.js")).default;
1578
1578
  const extendsRequestId = await createExtendsReportSnapRequest(
1579
1579
  baselineSha,
1580
1580
  resolvedSkip ?? skip,
@@ -1582,7 +1582,7 @@ async function handleDefaultCommand(config, environment, logger) {
1582
1582
  );
1583
1583
  allSnapRequestIds = [...snapRequestIds, extendsRequestId];
1584
1584
  } else if (only && baselineSha && resolvedSkip && resolvedSkip.length > 0) {
1585
- const createExtendsReportSnapRequest = (await import("./createExtendsReportSnapRequest-HQO3KHTW.js")).default;
1585
+ const createExtendsReportSnapRequest = (await import("./createExtendsReportSnapRequest-J5DCLPDW.js")).default;
1586
1586
  const extendsRequestId = await createExtendsReportSnapRequest(
1587
1587
  baselineSha,
1588
1588
  resolvedSkip,
@@ -1618,7 +1618,7 @@ async function handleDefaultCommand(config, environment, logger) {
1618
1618
  } catch (e) {
1619
1619
  const message = e instanceof Error ? e.message : String(e);
1620
1620
  logger.error(`${config.integration.type} run failed: ${message}`, e);
1621
- const cancelJob = (await import("./cancelJob-KTNZTMJE.js")).default;
1621
+ const cancelJob = (await import("./cancelJob-QJGMFV4N.js")).default;
1622
1622
  await cancelJob("failure", message, config, environment, logger);
1623
1623
  process.exitCode = 1;
1624
1624
  return;
@@ -1629,7 +1629,7 @@ async function handleFinalizeCommand(config, environment, logger) {
1629
1629
  logger.log("Config:", config);
1630
1630
  logger.log("Environment:", environment);
1631
1631
  try {
1632
- const finalizeAll = (await import("./wrapper-CLE4TC6Y.js")).finalizeAll;
1632
+ const finalizeAll = (await import("./wrapper-IN4XZXFF.js")).finalizeAll;
1633
1633
  await finalizeAll({ happoConfig: config, environment, logger });
1634
1634
  } catch (e) {
1635
1635
  logger.error(e instanceof Error ? e.message : String(e), e);
@@ -1657,7 +1657,7 @@ async function handleFlakeCommand(config, {
1657
1657
  process.exitCode = 1;
1658
1658
  return;
1659
1659
  }
1660
- const { default: getFlakes, formatFlakeOutput } = await import("./getFlakes-CFBQ3M6H.js");
1660
+ const { default: getFlakes, formatFlakeOutput } = await import("./getFlakes-WW3574IX.js");
1661
1661
  const project = allProjects ? void 0 : projectOverride ?? config.project;
1662
1662
  const flakes = await getFlakes(
1663
1663
  {
@@ -1699,7 +1699,7 @@ async function handleE2ECommand(config, environment, dashdashCommandParts, confi
1699
1699
  logger.log("Config:", config);
1700
1700
  logger.log("Environment:", environment);
1701
1701
  logger.log("Dashdash command parts:", dashdashCommandParts);
1702
- const runWithWrapper = (await import("./wrapper-CLE4TC6Y.js")).default;
1702
+ const runWithWrapper = (await import("./wrapper-IN4XZXFF.js")).default;
1703
1703
  const exitCode = await runWithWrapper(
1704
1704
  dashdashCommandParts,
1705
1705
  config,
@@ -0,0 +1,7 @@
1
+ import {
2
+ package_default
3
+ } from "./chunk-NMDCVCUW.js";
4
+ export {
5
+ package_default as default
6
+ };
7
+ //# sourceMappingURL=package-Y7DOMFON.js.map
@@ -4,11 +4,11 @@ import {
4
4
  } from "./chunk-ML3Z5Z22.js";
5
5
  import {
6
6
  makeHappoAPIRequest
7
- } from "./chunk-QDHHO2TF.js";
7
+ } from "./chunk-RHWWCAFJ.js";
8
8
  import {
9
9
  ErrorWithStatusCode
10
- } from "./chunk-U7PP5H4X.js";
11
- import "./chunk-W5VXG6TS.js";
10
+ } from "./chunk-6PTXBJ22.js";
11
+ import "./chunk-NMDCVCUW.js";
12
12
 
13
13
  // src/network/prepareSnapRequests.ts
14
14
  import fs5 from "node:fs";
@@ -1033,4 +1033,4 @@ async function prepareSnapRequests(config, skip, only) {
1033
1033
  export {
1034
1034
  prepareSnapRequests as default
1035
1035
  };
1036
- //# sourceMappingURL=prepareSnapRequests-IN6OYDIH.js.map
1036
+ //# sourceMappingURL=prepareSnapRequests-QUWWW6DO.js.map
@@ -0,0 +1,10 @@
1
+ import {
2
+ startJob
3
+ } from "./chunk-L3G3K5UR.js";
4
+ import "./chunk-RHWWCAFJ.js";
5
+ import "./chunk-6PTXBJ22.js";
6
+ import "./chunk-NMDCVCUW.js";
7
+ export {
8
+ startJob as default
9
+ };
10
+ //# sourceMappingURL=startJob-SBUIMISC.js.map
@@ -3,21 +3,21 @@ import {
3
3
  } from "./chunk-X4TE2VNY.js";
4
4
  import {
5
5
  cancelJob
6
- } from "./chunk-MMMV4X5N.js";
6
+ } from "./chunk-JGORCIIC.js";
7
7
  import {
8
8
  startServer
9
9
  } from "./chunk-JTRP4JVC.js";
10
10
  import {
11
11
  startJob
12
- } from "./chunk-EVFTOWPY.js";
12
+ } from "./chunk-L3G3K5UR.js";
13
13
  import {
14
14
  createAsyncComparison
15
- } from "./chunk-I7YA4BE4.js";
15
+ } from "./chunk-GXJ3GRNU.js";
16
16
  import {
17
17
  makeHappoAPIRequest
18
- } from "./chunk-QDHHO2TF.js";
19
- import "./chunk-U7PP5H4X.js";
20
- import "./chunk-W5VXG6TS.js";
18
+ } from "./chunk-RHWWCAFJ.js";
19
+ import "./chunk-6PTXBJ22.js";
20
+ import "./chunk-NMDCVCUW.js";
21
21
 
22
22
  // src/e2e/wrapper.ts
23
23
  import { spawn } from "node:child_process";
@@ -106,7 +106,7 @@ async function finalizeHappoReport(happoConfig, environment, job, logger) {
106
106
  throw new Error("Failed to create async Happo report");
107
107
  }
108
108
  const { nonce } = environment;
109
- if (!nonce) {
109
+ if (!nonce && environment.beforeSha !== environment.afterSha) {
110
110
  const compareResult = await createAsyncComparison(
111
111
  happoConfig,
112
112
  environment,
@@ -235,4 +235,4 @@ export {
235
235
  runWithWrapper as default,
236
236
  finalizeAll
237
237
  };
238
- //# sourceMappingURL=wrapper-CLE4TC6Y.js.map
238
+ //# sourceMappingURL=wrapper-IN4XZXFF.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/e2e/wrapper.ts"],
4
+ "sourcesContent": ["import { spawn } from 'node:child_process';\nimport fs from 'node:fs';\nimport http from 'node:http';\nimport os from 'node:os';\nimport path from 'node:path';\n\nimport type { ConfigWithDefaults, E2EIntegration } from '../config/index.ts';\nimport type { EnvironmentResult } from '../environment/index.ts';\nimport cancelJob from '../network/cancelJob.ts';\nimport createAsyncComparison from '../network/createAsyncComparison.ts';\nimport makeHappoAPIRequest from '../network/makeHappoAPIRequest.ts';\nimport postGitHubComment from '../network/postGitHubComment.ts';\nimport startJob, { type StartJobResult } from '../network/startJob.ts';\nimport startServer, { type ServerInfo } from '../network/startServer.ts';\n\nlet allRequestIds: Set<number>;\n\nasync function postAsyncReport(\n requestIds: Array<number>,\n environment: EnvironmentResult,\n happoConfig: ConfigWithDefaults,\n) {\n const { afterSha, nonce, link, message } = environment;\n return await makeHappoAPIRequest(\n {\n path: `/api/async-reports/${afterSha}`,\n method: 'POST',\n body: {\n requestIds,\n project: happoConfig.project,\n nonce,\n link,\n message,\n },\n },\n happoConfig,\n { retryCount: 2 },\n );\n}\n\ntype Example = {\n component: string;\n variant: string;\n target: string;\n};\n\ntype Logger = Pick<Console, 'log' | 'error'>;\n\ninterface FinalizeAllOptions {\n happoConfig: ConfigWithDefaults;\n environment: EnvironmentResult;\n logger: Logger;\n}\n\nexport async function finalizeAll({\n happoConfig,\n environment,\n logger,\n}: FinalizeAllOptions): Promise<void> {\n const { afterSha, nonce, skip: skipJSON } = environment;\n\n if (!nonce) {\n throw new Error('[HAPPO] Missing --nonce argument');\n }\n\n const body: {\n project?: string | undefined;\n nonce: string;\n skip: Array<Example>;\n } = {\n project: happoConfig.project,\n nonce,\n skip: [],\n };\n\n if (skipJSON) {\n try {\n const skipItems = JSON.parse(skipJSON);\n body.skip = skipItems;\n } catch (e) {\n logger.error('Error when parsing --skip', skipJSON);\n throw e;\n }\n }\n await makeHappoAPIRequest(\n {\n path: `/api/async-reports/${afterSha}/finalize`,\n method: 'POST',\n body,\n },\n happoConfig,\n { retryCount: 3 },\n );\n\n if (environment.beforeSha !== environment.afterSha) {\n const compareResult = await createAsyncComparison(\n happoConfig,\n environment,\n logger,\n );\n\n if (environment.link && environment.githubToken && happoConfig.githubApiUrl) {\n // githubToken and githubApiUrl are set which means that we should post\n // a comment to the PR.\n // https://docs.happo.io/docs/continuous-integration#posting-statuses-without-installing-the-happo-github-app\n await postGitHubComment({\n authToken: environment.githubToken,\n link: environment.link,\n statusImageUrl: compareResult.statusImageUrl,\n compareUrl: compareResult.compareUrl,\n githubApiUrl: happoConfig.githubApiUrl,\n });\n }\n }\n}\n\nasync function finalizeHappoReport(\n happoConfig: ConfigWithDefaults,\n environment: EnvironmentResult,\n job: StartJobResult,\n logger: Logger,\n) {\n if (!allRequestIds.size) {\n logger.log(`[HAPPO] No snapshots were recorded. Ignoring.`);\n return;\n }\n const reportResult = await postAsyncReport(\n [...allRequestIds],\n environment,\n happoConfig,\n );\n\n if (!reportResult) {\n throw new Error('Failed to create async Happo report');\n }\n\n const { nonce } = environment;\n\n if (!nonce && environment.beforeSha !== environment.afterSha) {\n // If there is a nonce, the comparison will happen when the finalize\n // command is called.\n const compareResult = await createAsyncComparison(\n happoConfig,\n environment,\n logger,\n );\n\n if (\n compareResult &&\n environment.link &&\n environment.githubToken &&\n happoConfig.githubApiUrl\n ) {\n // githubToken and githubApiUrl is set which means that we should post\n // a comment to the PR.\n // https://docs.happo.io/docs/continuous-integration#posting-statuses-without-installing-the-happo-github-app\n await postGitHubComment({\n authToken: environment.githubToken,\n link: environment.link,\n statusImageUrl: compareResult.statusImageUrl,\n compareUrl: compareResult.compareUrl,\n githubApiUrl: happoConfig.githubApiUrl,\n });\n }\n }\n logger.log(`[HAPPO] ${job.url}`);\n}\n\nfunction startE2EServer(\n environment: EnvironmentResult,\n happoConfig: ConfigWithDefaults,\n): Promise<ServerInfo> {\n function requestHandler(req: http.IncomingMessage, res: http.ServerResponse) {\n const bodyParts: Array<string> = [];\n req.on('data', (chunk: Buffer) => {\n bodyParts.push(chunk.toString());\n });\n req.on('end', async () => {\n const potentialIds = bodyParts\n .join('')\n .split('\\n')\n .filter(Boolean)\n .map((requestId) => Number.parseInt(requestId, 10));\n\n if (potentialIds.some((id) => Number.isNaN(id))) {\n res.writeHead(400);\n res.end('invalid payload');\n return;\n }\n\n for (const requestId of potentialIds) {\n allRequestIds.add(requestId);\n }\n\n const { nonce } = environment;\n if (nonce && potentialIds.length) {\n // Associate these snapRequests with the async report as soon as possible\n await postAsyncReport(potentialIds, environment, happoConfig);\n }\n res.writeHead(200);\n res.end('');\n });\n }\n return startServer(requestHandler);\n}\n\nfunction assertE2EIntegration(\n integration: NonNullable<ConfigWithDefaults['integration']>,\n): asserts integration is E2EIntegration {\n if (integration.type !== 'cypress' && integration.type !== 'playwright') {\n throw new Error(`Unsupported integration type: ${integration.type}`);\n }\n}\n\n/**\n * Runs a command with the wrapper and returns the exit code.\n *\n * @param dashdashCommandParts The command to run with the wrapper\n * @param happoConfig The Happo config\n * @param environment The environment\n * @param port The port to listen on\n * @param logger The logger\n * @returns The exit code of the command\n */\nexport default async function runWithWrapper(\n dashdashCommandParts: Array<string>,\n happoConfig: ConfigWithDefaults,\n environment: EnvironmentResult,\n logger: Logger,\n configFilePath: string,\n skipJSON?: string,\n): Promise<number> {\n allRequestIds = new Set<number>();\n const e2eServer = await startE2EServer(environment, happoConfig);\n logger.log(`[HAPPO] Listening on port ${e2eServer.port}`);\n\n const job = await startJob(happoConfig, environment, logger);\n if (!job) {\n throw new Error('Failed to create Happo job');\n }\n\n // Write skipped examples to a temp file to avoid env var size limits.\n let skipFilePath: string | undefined;\n if (skipJSON) {\n skipFilePath = path.join(\n os.tmpdir(),\n `happo-skipped-${process.pid}.json`,\n );\n await fs.promises.writeFile(skipFilePath, skipJSON, 'utf8');\n }\n\n try {\n const exitCode = await new Promise<number>((resolve, reject) => {\n const childEnv: Record<string, string | undefined> = {\n ...process.env,\n HAPPO_E2E_PORT: e2eServer.port.toString(),\n HAPPO_CONFIG_FILE: configFilePath,\n HAPPO_API_KEY: happoConfig.apiKey,\n HAPPO_API_SECRET: happoConfig.apiSecret,\n };\n\n if (skipFilePath) {\n childEnv.HAPPO_SKIP_FILE = skipFilePath;\n }\n\n const child = spawn(dashdashCommandParts[0]!, dashdashCommandParts.slice(1), {\n stdio: 'inherit',\n env: childEnv,\n shell: process.platform == 'win32',\n });\n\n child.on('error', (e) => {\n return reject(e);\n });\n\n const e2eIntegration = happoConfig.integration;\n assertE2EIntegration(e2eIntegration);\n child.on('close', async (code: number) => {\n if (code === 0 || e2eIntegration.allowFailures) {\n try {\n await finalizeHappoReport(happoConfig, environment, job, logger);\n } catch (e) {\n logger.error('Failed to finalize Happo report', e);\n return reject(e);\n }\n } else {\n logger.error(\n 'Command failed with exit code ${code}. Cancelling Happo job.',\n );\n try {\n await cancelJob(\n 'failure',\n `${e2eIntegration.type} run failed`,\n happoConfig,\n environment,\n logger,\n );\n } catch (e) {\n logger.error('Failed to cancel Happo job', e);\n return reject(e);\n }\n }\n resolve(code);\n });\n });\n return exitCode;\n } finally {\n allRequestIds.clear();\n await e2eServer.close();\n if (skipFilePath) {\n await fs.promises.unlink(skipFilePath).catch(() => {\n // Ignore errors \u2014 the file may already be gone.\n });\n }\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -23,7 +23,7 @@ import asyncRetry from "async-retry";
23
23
  // package.json
24
24
  var package_default = {
25
25
  name: "happo",
26
- version: "6.10.5",
26
+ version: "6.10.6",
27
27
  description: "Catch unexpected visual and accessibility changes and UI bugs",
28
28
  license: "MIT",
29
29
  repository: {