@alwaysmeticulous/cli 2.304.0 → 2.306.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 (246) hide show
  1. package/dist/command-utils/common-options.d.ts +5 -0
  2. package/dist/command-utils/common-options.d.ts.map +1 -1
  3. package/dist/command-utils/common-options.js +6 -4
  4. package/dist/command-utils/common-options.js.map +1 -1
  5. package/dist/command-utils/detect-upload-mode.js +1 -4
  6. package/dist/command-utils/detect-upload-mode.js.map +1 -1
  7. package/dist/command-utils/detect-upload-mode.spec.js +1 -4
  8. package/dist/command-utils/detect-upload-mode.spec.js.map +1 -1
  9. package/dist/command-utils/download-session.utils.js +1 -4
  10. package/dist/command-utils/download-session.utils.js.map +1 -1
  11. package/dist/command-utils/json-args.d.ts +14 -0
  12. package/dist/command-utils/json-args.d.ts.map +1 -0
  13. package/dist/command-utils/json-args.js +37 -0
  14. package/dist/command-utils/json-args.js.map +1 -0
  15. package/dist/command-utils/json-args.spec.d.ts +2 -0
  16. package/dist/command-utils/json-args.spec.d.ts.map +1 -0
  17. package/dist/command-utils/json-args.spec.js +34 -0
  18. package/dist/command-utils/json-args.spec.js.map +1 -0
  19. package/dist/command-utils/parse-container-env.js +1 -4
  20. package/dist/command-utils/parse-container-env.js.map +1 -1
  21. package/dist/command-utils/parse-rewrites.js +1 -4
  22. package/dist/command-utils/parse-rewrites.js.map +1 -1
  23. package/dist/command-utils/print-json.d.ts +7 -0
  24. package/dist/command-utils/print-json.d.ts.map +1 -0
  25. package/dist/command-utils/print-json.js +13 -0
  26. package/dist/command-utils/print-json.js.map +1 -0
  27. package/dist/command-utils/sentry.utils.js +1 -4
  28. package/dist/command-utils/sentry.utils.js.map +1 -1
  29. package/dist/commands/agent/build-git-options.js +1 -4
  30. package/dist/commands/agent/build-git-options.js.map +1 -1
  31. package/dist/commands/agent/build-git-options.spec.js +1 -4
  32. package/dist/commands/agent/build-git-options.spec.js.map +1 -1
  33. package/dist/commands/agent/index.d.ts.map +1 -1
  34. package/dist/commands/agent/index.js +10 -6
  35. package/dist/commands/agent/index.js.map +1 -1
  36. package/dist/commands/agent/js-coverage-diff.command.d.ts.map +1 -1
  37. package/dist/commands/agent/js-coverage-diff.command.js +25 -35
  38. package/dist/commands/agent/js-coverage-diff.command.js.map +1 -1
  39. package/dist/commands/agent/js-coverage.command.d.ts +3 -0
  40. package/dist/commands/agent/js-coverage.command.d.ts.map +1 -1
  41. package/dist/commands/agent/js-coverage.command.js +80 -45
  42. package/dist/commands/agent/js-coverage.command.js.map +1 -1
  43. package/dist/commands/agent/js-coverage.command.spec.js +47 -4
  44. package/dist/commands/agent/js-coverage.command.spec.js.map +1 -1
  45. package/dist/commands/agent/screenshot-dom-diff.command.d.ts +1 -0
  46. package/dist/commands/agent/screenshot-dom-diff.command.d.ts.map +1 -1
  47. package/dist/commands/agent/screenshot-dom-diff.command.js +25 -20
  48. package/dist/commands/agent/screenshot-dom-diff.command.js.map +1 -1
  49. package/dist/commands/agent/screenshot-image-files.command.d.ts +1 -0
  50. package/dist/commands/agent/screenshot-image-files.command.d.ts.map +1 -1
  51. package/dist/commands/agent/screenshot-image-files.command.js +17 -7
  52. package/dist/commands/agent/screenshot-image-files.command.js.map +1 -1
  53. package/dist/commands/agent/screenshot-image.command.d.ts +1 -0
  54. package/dist/commands/agent/screenshot-image.command.d.ts.map +1 -1
  55. package/dist/commands/agent/screenshot-image.command.js +8 -6
  56. package/dist/commands/agent/screenshot-image.command.js.map +1 -1
  57. package/dist/commands/agent/test-run-diffs.command.d.ts +1 -0
  58. package/dist/commands/agent/test-run-diffs.command.d.ts.map +1 -1
  59. package/dist/commands/agent/test-run-diffs.command.js +62 -31
  60. package/dist/commands/agent/test-run-diffs.command.js.map +1 -1
  61. package/dist/commands/agent/test-run-diffs.command.spec.d.ts +2 -0
  62. package/dist/commands/agent/test-run-diffs.command.spec.d.ts.map +1 -0
  63. package/dist/commands/agent/test-run-diffs.command.spec.js +146 -0
  64. package/dist/commands/agent/test-run-diffs.command.spec.js.map +1 -0
  65. package/dist/commands/agent/test-run-diffs.utils.d.ts +7 -0
  66. package/dist/commands/agent/test-run-diffs.utils.d.ts.map +1 -1
  67. package/dist/commands/agent/test-run-diffs.utils.js +47 -5
  68. package/dist/commands/agent/test-run-diffs.utils.js.map +1 -1
  69. package/dist/commands/agent/test-run-diffs.utils.spec.js +144 -4
  70. package/dist/commands/agent/test-run-diffs.utils.spec.js.map +1 -1
  71. package/dist/commands/agent/test-run-for-commit.command.d.ts.map +1 -1
  72. package/dist/commands/agent/test-run-for-commit.command.js +11 -16
  73. package/dist/commands/agent/test-run-for-commit.command.js.map +1 -1
  74. package/dist/commands/agent/timeline.command.d.ts +1 -0
  75. package/dist/commands/agent/timeline.command.d.ts.map +1 -1
  76. package/dist/commands/agent/timeline.command.js +20 -9
  77. package/dist/commands/agent/timeline.command.js.map +1 -1
  78. package/dist/commands/agent/timeline.command.spec.d.ts +2 -0
  79. package/dist/commands/agent/timeline.command.spec.d.ts.map +1 -0
  80. package/dist/commands/agent/timeline.command.spec.js +74 -0
  81. package/dist/commands/agent/timeline.command.spec.js.map +1 -0
  82. package/dist/commands/agent/trigger-test-run.command.d.ts.map +1 -1
  83. package/dist/commands/agent/trigger-test-run.command.js +6 -13
  84. package/dist/commands/agent/trigger-test-run.command.js.map +1 -1
  85. package/dist/commands/agent/trigger-test-run.command.spec.js +1 -4
  86. package/dist/commands/agent/trigger-test-run.command.spec.js.map +1 -1
  87. package/dist/commands/agent/upload-build.command.d.ts.map +1 -1
  88. package/dist/commands/agent/upload-build.command.js +9 -12
  89. package/dist/commands/agent/upload-build.command.js.map +1 -1
  90. package/dist/commands/all-commands.d.ts +38 -0
  91. package/dist/commands/all-commands.d.ts.map +1 -0
  92. package/dist/commands/all-commands.js +62 -0
  93. package/dist/commands/all-commands.js.map +1 -0
  94. package/dist/commands/auth/__tests__/list-projects.command.spec.js +21 -14
  95. package/dist/commands/auth/__tests__/list-projects.command.spec.js.map +1 -1
  96. package/dist/commands/auth/__tests__/login.command.spec.js +8 -9
  97. package/dist/commands/auth/__tests__/login.command.spec.js.map +1 -1
  98. package/dist/commands/auth/__tests__/logout.command.spec.js +3 -10
  99. package/dist/commands/auth/__tests__/logout.command.spec.js.map +1 -1
  100. package/dist/commands/auth/__tests__/whoami.command.spec.js +61 -23
  101. package/dist/commands/auth/__tests__/whoami.command.spec.js.map +1 -1
  102. package/dist/commands/auth/index.js +1 -4
  103. package/dist/commands/auth/index.js.map +1 -1
  104. package/dist/commands/auth/list-projects.command.d.ts.map +1 -1
  105. package/dist/commands/auth/list-projects.command.js +14 -15
  106. package/dist/commands/auth/list-projects.command.js.map +1 -1
  107. package/dist/commands/auth/login.command.d.ts.map +1 -1
  108. package/dist/commands/auth/login.command.js +3 -7
  109. package/dist/commands/auth/login.command.js.map +1 -1
  110. package/dist/commands/auth/logout.command.d.ts +1 -5
  111. package/dist/commands/auth/logout.command.d.ts.map +1 -1
  112. package/dist/commands/auth/logout.command.js +3 -11
  113. package/dist/commands/auth/logout.command.js.map +1 -1
  114. package/dist/commands/auth/set-project.command.d.ts.map +1 -1
  115. package/dist/commands/auth/set-project.command.js +2 -6
  116. package/dist/commands/auth/set-project.command.js.map +1 -1
  117. package/dist/commands/auth/unset-project.command.js +4 -7
  118. package/dist/commands/auth/unset-project.command.js.map +1 -1
  119. package/dist/commands/auth/whoami.command.d.ts +5 -1
  120. package/dist/commands/auth/whoami.command.d.ts.map +1 -1
  121. package/dist/commands/auth/whoami.command.js +70 -33
  122. package/dist/commands/auth/whoami.command.js.map +1 -1
  123. package/dist/commands/ci/deprecated-trigger-options.js +1 -4
  124. package/dist/commands/ci/deprecated-trigger-options.js.map +1 -1
  125. package/dist/commands/ci/index.js +1 -4
  126. package/dist/commands/ci/index.js.map +1 -1
  127. package/dist/commands/ci/prepare.command.d.ts.map +1 -1
  128. package/dist/commands/ci/prepare.command.js +2 -4
  129. package/dist/commands/ci/prepare.command.js.map +1 -1
  130. package/dist/commands/ci/resolve-git-options.js +1 -4
  131. package/dist/commands/ci/resolve-git-options.js.map +1 -1
  132. package/dist/commands/ci/run-local.command.d.ts.map +1 -1
  133. package/dist/commands/ci/run-local.command.js +5 -6
  134. package/dist/commands/ci/run-local.command.js.map +1 -1
  135. package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js +1 -4
  136. package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js.map +1 -1
  137. package/dist/commands/ci/run.command.d.ts.map +1 -1
  138. package/dist/commands/ci/run.command.js +2 -4
  139. package/dist/commands/ci/run.command.js.map +1 -1
  140. package/dist/commands/ci/start-tunnel.command.d.ts.map +1 -1
  141. package/dist/commands/ci/start-tunnel.command.js +3 -4
  142. package/dist/commands/ci/start-tunnel.command.js.map +1 -1
  143. package/dist/commands/ci/trigger-test-run.core.js +1 -4
  144. package/dist/commands/ci/trigger-test-run.core.js.map +1 -1
  145. package/dist/commands/ci/trigger-test-run.types.js +1 -4
  146. package/dist/commands/ci/trigger-test-run.types.js.map +1 -1
  147. package/dist/commands/ci/upload-asset-chunk.command.js +1 -4
  148. package/dist/commands/ci/upload-asset-chunk.command.js.map +1 -1
  149. package/dist/commands/ci/upload-assets.command.d.ts +1 -0
  150. package/dist/commands/ci/upload-assets.command.d.ts.map +1 -1
  151. package/dist/commands/ci/upload-assets.command.js +2 -4
  152. package/dist/commands/ci/upload-assets.command.js.map +1 -1
  153. package/dist/commands/ci/upload-container.command.d.ts +1 -0
  154. package/dist/commands/ci/upload-container.command.d.ts.map +1 -1
  155. package/dist/commands/ci/upload-container.command.js +2 -4
  156. package/dist/commands/ci/upload-container.command.js.map +1 -1
  157. package/dist/commands/debug/clean-workspaces.js +1 -4
  158. package/dist/commands/debug/clean-workspaces.js.map +1 -1
  159. package/dist/commands/debug/index.d.ts.map +1 -1
  160. package/dist/commands/debug/index.js +38 -37
  161. package/dist/commands/debug/index.js.map +1 -1
  162. package/dist/commands/debug/present-workspace.js +1 -4
  163. package/dist/commands/debug/present-workspace.js.map +1 -1
  164. package/dist/commands/debug/project-worktree.js +1 -4
  165. package/dist/commands/debug/project-worktree.js.map +1 -1
  166. package/dist/commands/deprecated-aliases.js +1 -4
  167. package/dist/commands/deprecated-aliases.js.map +1 -1
  168. package/dist/commands/download/index.js +1 -4
  169. package/dist/commands/download/index.js.map +1 -1
  170. package/dist/commands/download/replay.command.js +1 -4
  171. package/dist/commands/download/replay.command.js.map +1 -1
  172. package/dist/commands/download/session.command.js +1 -4
  173. package/dist/commands/download/session.command.js.map +1 -1
  174. package/dist/commands/download/test-run.command.js +1 -4
  175. package/dist/commands/download/test-run.command.js.map +1 -1
  176. package/dist/commands/local/get-edited-files.utils.js +1 -4
  177. package/dist/commands/local/get-edited-files.utils.js.map +1 -1
  178. package/dist/commands/local/get-edited-files.utils.spec.js +1 -4
  179. package/dist/commands/local/get-edited-files.utils.spec.js.map +1 -1
  180. package/dist/commands/local/index.js +1 -4
  181. package/dist/commands/local/index.js.map +1 -1
  182. package/dist/commands/local/relevant-sessions.command.js +1 -4
  183. package/dist/commands/local/relevant-sessions.command.js.map +1 -1
  184. package/dist/commands/project/index.js +1 -4
  185. package/dist/commands/project/index.js.map +1 -1
  186. package/dist/commands/project/show.command.js +1 -4
  187. package/dist/commands/project/show.command.js.map +1 -1
  188. package/dist/commands/project/upload-source.command.js +1 -4
  189. package/dist/commands/project/upload-source.command.js.map +1 -1
  190. package/dist/commands/record/__tests__/login.command.spec.js +1 -4
  191. package/dist/commands/record/__tests__/login.command.spec.js.map +1 -1
  192. package/dist/commands/record/__tests__/session.command.spec.js +1 -4
  193. package/dist/commands/record/__tests__/session.command.spec.js.map +1 -1
  194. package/dist/commands/record/index.js +1 -4
  195. package/dist/commands/record/index.js.map +1 -1
  196. package/dist/commands/record/login.command.js +1 -4
  197. package/dist/commands/record/login.command.js.map +1 -1
  198. package/dist/commands/record/session.command.js +1 -4
  199. package/dist/commands/record/session.command.js.map +1 -1
  200. package/dist/commands/replay-debugger.ui.js +1 -4
  201. package/dist/commands/replay-debugger.ui.js.map +1 -1
  202. package/dist/commands/replay.command.d.ts.map +1 -1
  203. package/dist/commands/replay.command.js +2 -4
  204. package/dist/commands/replay.command.js.map +1 -1
  205. package/dist/commands/schema.command.d.ts +53 -0
  206. package/dist/commands/schema.command.d.ts.map +1 -1
  207. package/dist/commands/schema.command.js +231 -108
  208. package/dist/commands/schema.command.js.map +1 -1
  209. package/dist/commands/schema.command.spec.d.ts +2 -0
  210. package/dist/commands/schema.command.spec.d.ts.map +1 -0
  211. package/dist/commands/schema.command.spec.js +195 -0
  212. package/dist/commands/schema.command.spec.js.map +1 -0
  213. package/dist/index.js +1 -4
  214. package/dist/index.js.map +1 -1
  215. package/dist/main.d.ts.map +1 -1
  216. package/dist/main.js +59 -50
  217. package/dist/main.js.map +1 -1
  218. package/dist/utils/__tests__/handle-auth-failure.spec.js +1 -4
  219. package/dist/utils/__tests__/handle-auth-failure.spec.js.map +1 -1
  220. package/dist/utils/__tests__/resolve-project-identifier.spec.js +1 -4
  221. package/dist/utils/__tests__/resolve-project-identifier.spec.js.map +1 -1
  222. package/dist/utils/__tests__/resolve-test-run-from-commit.spec.js +1 -4
  223. package/dist/utils/__tests__/resolve-test-run-from-commit.spec.js.map +1 -1
  224. package/dist/utils/__tests__/select-project.spec.js +5 -14
  225. package/dist/utils/__tests__/select-project.spec.js.map +1 -1
  226. package/dist/utils/cli-user-error.js +1 -4
  227. package/dist/utils/cli-user-error.js.map +1 -1
  228. package/dist/utils/constants.js +1 -4
  229. package/dist/utils/constants.js.map +1 -1
  230. package/dist/utils/environment.utils.js +1 -4
  231. package/dist/utils/environment.utils.js.map +1 -1
  232. package/dist/utils/format-coverage-ranges.js +1 -4
  233. package/dist/utils/format-coverage-ranges.js.map +1 -1
  234. package/dist/utils/handle-auth-failure.js +1 -4
  235. package/dist/utils/handle-auth-failure.js.map +1 -1
  236. package/dist/utils/out-of-date-client-error.js +1 -4
  237. package/dist/utils/out-of-date-client-error.js.map +1 -1
  238. package/dist/utils/resolve-project-identifier.js +1 -4
  239. package/dist/utils/resolve-project-identifier.js.map +1 -1
  240. package/dist/utils/resolve-test-run-from-commit.js +1 -4
  241. package/dist/utils/resolve-test-run-from-commit.js.map +1 -1
  242. package/dist/utils/select-project.d.ts +1 -3
  243. package/dist/utils/select-project.d.ts.map +1 -1
  244. package/dist/utils/select-project.js +5 -7
  245. package/dist/utils/select-project.js.map +1 -1
  246. package/package.json +12 -11
@@ -1,6 +1,4 @@
1
1
  "use strict";
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b55a7a0b-21e0-5b58-ac60-a3df3aed838e")}catch(e){}}();
3
-
4
2
  Object.defineProperty(exports, "__esModule", { value: true });
5
3
  exports.imageFilesCommand = void 0;
6
4
  const promises_1 = require("fs/promises");
@@ -8,6 +6,7 @@ const path_1 = require("path");
8
6
  const client_1 = require("@alwaysmeticulous/client");
9
7
  const common_1 = require("@alwaysmeticulous/common");
10
8
  const downloading_helpers_1 = require("@alwaysmeticulous/downloading-helpers");
9
+ const print_json_1 = require("../../command-utils/print-json");
11
10
  const sentry_utils_1 = require("../../command-utils/sentry.utils");
12
11
  const AGENT_IMAGES_SUBDIR = "agent-images";
13
12
  const MAX_AGE_MS = 24 * 60 * 60 * 1000;
@@ -40,7 +39,7 @@ const downloadImage = async (dir, fileName, url) => {
40
39
  await (0, downloading_helpers_1.downloadFile)(url, filePath);
41
40
  return filePath;
42
41
  };
43
- const handler = async ({ apiToken, replayDiffId, screenshotName, }) => {
42
+ const handler = async ({ apiToken, replayDiffId, screenshotName, json, }) => {
44
43
  (0, common_1.initLogger)();
45
44
  const client = await (0, client_1.createClientWithOAuth)({
46
45
  apiToken,
@@ -50,7 +49,6 @@ const handler = async ({ apiToken, replayDiffId, screenshotName, }) => {
50
49
  const dir = getAgentImagesDir();
51
50
  await (0, promises_1.mkdir)(dir, { recursive: true });
52
51
  await cleanupOldImages(dir);
53
- console.log(`outcome: ${urls.outcome}`);
54
52
  const downloads = [];
55
53
  if (urls.screenshot) {
56
54
  downloads.push({ label: "screenshot", url: urls.screenshot });
@@ -66,14 +64,27 @@ const handler = async ({ apiToken, replayDiffId, screenshotName, }) => {
66
64
  }
67
65
  const timestamp = Date.now();
68
66
  const prefix = `${timestamp}_${replayDiffId}_${screenshotName}`;
67
+ // Print the outcome up-front (non-JSON) so it's visible even if a download
68
+ // below fails; the JSON path emits it as part of the single object instead.
69
+ if (!json) {
70
+ console.log(`outcome: ${urls.outcome}`);
71
+ }
69
72
  const results = await Promise.all(downloads.map(({ label, url }) => downloadImage(dir, `${prefix}_${label}.png`, url)));
73
+ if (json) {
74
+ const output = { outcome: urls.outcome };
75
+ for (let i = 0; i < downloads.length; i++) {
76
+ output[downloads[i].label] = results[i];
77
+ }
78
+ (0, print_json_1.printJson)(output);
79
+ return;
80
+ }
70
81
  for (let i = 0; i < downloads.length; i++) {
71
82
  console.log(`${downloads[i].label}: ${results[i]}`);
72
83
  }
73
84
  };
74
85
  exports.imageFilesCommand = {
75
86
  command: "image-files",
76
- describe: "Download screenshot images for a replay diff screenshot to local files under ~/.meticulous/agent-images",
87
+ describe: "Download screenshot images for a replay diff screenshot to local files under ~/.meticulous/agent-images. Outputs an outcome line then a 'label: filepath' line per downloaded image (or JSON with --json).",
77
88
  builder: {
78
89
  apiToken: { string: true, description: "Meticulous API token" },
79
90
  replayDiffId: {
@@ -89,5 +100,4 @@ exports.imageFilesCommand = {
89
100
  },
90
101
  handler: (0, sentry_utils_1.wrapHandler)(handler),
91
102
  };
92
- //# sourceMappingURL=screenshot-image-files.command.js.map
93
- //# debugId=b55a7a0b-21e0-5b58-ac60-a3df3aed838e
103
+ //# sourceMappingURL=screenshot-image-files.command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"screenshot-image-files.command.js","sources":["../../../src/commands/agent/screenshot-image-files.command.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"b55a7a0b-21e0-5b58-ac60-a3df3aed838e"}
1
+ {"version":3,"file":"screenshot-image-files.command.js","sourceRoot":"","sources":["../../../src/commands/agent/screenshot-image-files.command.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ interface Options {
3
3
  apiToken?: string | null | undefined;
4
4
  replayDiffId: string;
5
5
  screenshotName: string;
6
+ json: boolean;
6
7
  }
7
8
  export declare const imageUrlsCommand: CommandModule<unknown, Options>;
8
9
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"screenshot-image.command.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/screenshot-image.command.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,UAAU,OAAO;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AA8BD,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAiB5D,CAAC"}
1
+ {"version":3,"file":"screenshot-image.command.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/screenshot-image.command.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI3C,UAAU,OAAO;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,OAAO,CAAC;CACf;AAoCD,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAkB5D,CAAC"}
@@ -1,18 +1,21 @@
1
1
  "use strict";
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0430a2f6-2749-5a65-9906-809b7acf6d83")}catch(e){}}();
3
-
4
2
  Object.defineProperty(exports, "__esModule", { value: true });
5
3
  exports.imageUrlsCommand = void 0;
6
4
  const client_1 = require("@alwaysmeticulous/client");
7
5
  const common_1 = require("@alwaysmeticulous/common");
6
+ const print_json_1 = require("../../command-utils/print-json");
8
7
  const sentry_utils_1 = require("../../command-utils/sentry.utils");
9
- const handler = async ({ apiToken, replayDiffId, screenshotName, }) => {
8
+ const handler = async ({ apiToken, replayDiffId, screenshotName, json, }) => {
10
9
  (0, common_1.initLogger)();
11
10
  const client = await (0, client_1.createClientWithOAuth)({
12
11
  apiToken,
13
12
  enableOAuthLogin: true,
14
13
  });
15
14
  const urls = await (0, client_1.getScreenshotUrls)(client, replayDiffId, screenshotName);
15
+ if (json) {
16
+ (0, print_json_1.printJson)(urls);
17
+ return;
18
+ }
16
19
  console.log(`outcome: ${urls.outcome}`);
17
20
  if (urls.screenshot) {
18
21
  console.log(`screenshot: ${urls.screenshot}`);
@@ -29,7 +32,7 @@ const handler = async ({ apiToken, replayDiffId, screenshotName, }) => {
29
32
  };
30
33
  exports.imageUrlsCommand = {
31
34
  command: "image-urls",
32
- describe: "Get screenshot image URLs for a replay diff screenshot",
35
+ describe: "Get screenshot image URLs for a replay diff screenshot. Outputs an outcome line then screenshot/before/after/diffImage URL lines (or JSON with --json).",
33
36
  builder: {
34
37
  apiToken: { string: true, description: "Meticulous API token" },
35
38
  replayDiffId: {
@@ -45,5 +48,4 @@ exports.imageUrlsCommand = {
45
48
  },
46
49
  handler: (0, sentry_utils_1.wrapHandler)(handler),
47
50
  };
48
- //# sourceMappingURL=screenshot-image.command.js.map
49
- //# debugId=0430a2f6-2749-5a65-9906-809b7acf6d83
51
+ //# sourceMappingURL=screenshot-image.command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"screenshot-image.command.js","sources":["../../../src/commands/agent/screenshot-image.command.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AAAA,qDAGkC;AAClC,qDAAsD;AAEtD,mEAA+D;AAQ/D,MAAM,OAAO,GAAG,KAAK,EAAE,EACrB,QAAQ,EACR,YAAY,EACZ,cAAc,GACN,EAAiB,EAAE;IAC3B,IAAA,mBAAU,GAAE,CAAC;IACb,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAqB,EAAC;QACzC,QAAQ;QACR,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAiB,EAAC,MAAM,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;IAE3E,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC,CAAC;AAEW,QAAA,gBAAgB,GAAoC;IAC/D,OAAO,EAAE,YAAY;IACrB,QAAQ,EAAE,wDAAwD;IAClE,OAAO,EAAE;QACP,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;QAC/D,YAAY,EAAE;YACZ,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,oBAAoB;YACjC,YAAY,EAAE,IAAI;SACnB;QACD,cAAc,EAAE;YACd,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,uDAAuD;YACpE,YAAY,EAAE,IAAI;SACnB;KACF;IACD,OAAO,EAAE,IAAA,0BAAW,EAAC,OAAO,CAAC;CAC9B,CAAC","debugId":"0430a2f6-2749-5a65-9906-809b7acf6d83"}
1
+ {"version":3,"file":"screenshot-image.command.js","sourceRoot":"","sources":["../../../src/commands/agent/screenshot-image.command.ts"],"names":[],"mappings":";;;AAAA,qDAGkC;AAClC,qDAAsD;AAEtD,+DAA2D;AAC3D,mEAA+D;AAS/D,MAAM,OAAO,GAAG,KAAK,EAAE,EACrB,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,IAAI,GACI,EAAiB,EAAE;IAC3B,IAAA,mBAAU,GAAE,CAAC;IACb,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAqB,EAAC;QACzC,QAAQ;QACR,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAiB,EAAC,MAAM,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;IAE3E,IAAI,IAAI,EAAE,CAAC;QACT,IAAA,sBAAS,EAAC,IAAI,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC,CAAC;AAEW,QAAA,gBAAgB,GAAoC;IAC/D,OAAO,EAAE,YAAY;IACrB,QAAQ,EACN,yJAAyJ;IAC3J,OAAO,EAAE;QACP,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;QAC/D,YAAY,EAAE;YACZ,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,oBAAoB;YACjC,YAAY,EAAE,IAAI;SACnB;QACD,cAAc,EAAE;YACd,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,uDAAuD;YACpE,YAAY,EAAE,IAAI;SACnB;KACF;IACD,OAAO,EAAE,IAAA,0BAAW,EAAC,OAAO,CAAC;CAC9B,CAAC"}
@@ -9,6 +9,7 @@ interface Options {
9
9
  includeAllDiffs: boolean;
10
10
  includeMatches: boolean;
11
11
  orderByReplayDiffs: boolean;
12
+ json: boolean;
12
13
  }
13
14
  export declare const testRunDiffsCommand: CommandModule<unknown, Options>;
14
15
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"test-run-diffs.command.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/test-run-diffs.command.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAe3C,UAAU,OAAO;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,4BAA4B,EAAE,OAAO,CAAC;IACtC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AA0JD,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAoD/D,CAAC"}
1
+ {"version":3,"file":"test-run-diffs.command.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/test-run-diffs.command.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAiB3C,UAAU,OAAO;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,4BAA4B,EAAE,OAAO,CAAC;IACtC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;CACf;AA+LD,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAqD/D,CAAC"}
@@ -1,10 +1,9 @@
1
1
  "use strict";
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="3f2d4806-c07a-5b11-81a1-b22cc1229f10")}catch(e){}}();
3
-
4
2
  Object.defineProperty(exports, "__esModule", { value: true });
5
3
  exports.testRunDiffsCommand = void 0;
6
4
  const client_1 = require("@alwaysmeticulous/client");
7
5
  const common_1 = require("@alwaysmeticulous/common");
6
+ const print_json_1 = require("../../command-utils/print-json");
8
7
  const sentry_utils_1 = require("../../command-utils/sentry.utils");
9
8
  const cli_user_error_1 = require("../../utils/cli-user-error");
10
9
  const resolve_test_run_from_commit_1 = require("../../utils/resolve-test-run-from-commit");
@@ -12,7 +11,7 @@ const test_run_diffs_utils_1 = require("./test-run-diffs.utils");
12
11
  const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
13
12
  /** Give up polling the diffs summary after this long, rather than forever. */
14
13
  const SUMMARY_POLL_TIMEOUT_MS = 10 * 60_000;
15
- const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToComplete, includeReplayIds, includeDomDiffIds, includeAllDiffs, includeMatches, orderByReplayDiffs, }) => {
14
+ const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToComplete, includeReplayIds, includeDomDiffIds, includeAllDiffs, includeMatches, orderByReplayDiffs, json, }) => {
16
15
  if (testRunId != null && commitSha != null) {
17
16
  throw new cli_user_error_1.CliUserError("Pass either --testRunId or --commitSha, not both.");
18
17
  }
@@ -37,11 +36,31 @@ const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToCom
37
36
  resolvedTestRunId = run.testRunId;
38
37
  status = run.status;
39
38
  }
39
+ // --includeMatches implies --includeAllDiffs (matches are never part of the
40
+ // selected subset, so they only make sense alongside the full set). Use the
41
+ // effective value for both the request and the isSelected column. Computed
42
+ // up-front so the header can be emitted even on the in-progress short-circuit.
43
+ const allDiffs = (0, test_run_diffs_utils_1.resolveIncludeAllDiffs)({ includeAllDiffs, includeMatches });
44
+ const columns = {
45
+ orderByReplayDiffs,
46
+ includeDomDiffIds,
47
+ includeAllDiffs: allDiffs,
48
+ includeReplayIds,
49
+ };
40
50
  // Diffs are only meaningful once the run has finished with a verdict
41
51
  // (Success/Failure). Block until it finishes (default) or, with
42
52
  // --dontWaitForTestRunToComplete, report the in-progress run and stop.
43
53
  const finishedStatus = await (0, resolve_test_run_from_commit_1.ensureTestRunFinished)(client, resolvedTestRunId, status, { dontWait: dontWaitForTestRunToComplete });
44
54
  if (finishedStatus == null) {
55
+ // Keep stdout's shape stable: an unfinished run has no diffs yet, so emit the
56
+ // empty JSON array / a header-only TSV (matching a finished run with zero
57
+ // diffs) rather than nothing — the notice went to stderr.
58
+ if (json) {
59
+ console.log("[]");
60
+ }
61
+ else {
62
+ console.log((0, test_run_diffs_utils_1.buildDiffsSummaryHeader)(columns).join("\t"));
63
+ }
45
64
  return;
46
65
  }
47
66
  // Reject session-pool bases (Partial, which never finish on their own and
@@ -51,10 +70,6 @@ const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToCom
51
70
  });
52
71
  const t0 = performance.now();
53
72
  (0, common_1.logProgress)(`Fetching diffs summary for test run ${resolvedTestRunId}...`);
54
- // --includeMatches implies --includeAllDiffs (matches are never part of the
55
- // selected subset, so they only make sense alongside the full set). Use the
56
- // effective value for both the request and the isSelected column.
57
- const allDiffs = (0, test_run_diffs_utils_1.resolveIncludeAllDiffs)({ includeAllDiffs, includeMatches });
58
73
  const diffsSummaryOptions = {
59
74
  includeReplayIds,
60
75
  includeDomDiffIds,
@@ -63,13 +78,35 @@ const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToCom
63
78
  orderByReplayDiffs,
64
79
  };
65
80
  let response = await (0, client_1.getTestRunDiffsSummary)(client, resolvedTestRunId, diffsSummaryOptions);
81
+ // A cold start finding the last computation already `failed` retriggers
82
+ // once, up front — before the poll deadline below is computed, so the fresh
83
+ // run always gets the full timeout. This is a one-shot decision made only
84
+ // here, not inside the poll loop: once we're polling, a `failed` result is
85
+ // reported and the command exits, it never retriggers again.
86
+ if (response.status === "failed") {
87
+ (0, common_1.logProgress)(`Diffs computation failed for test run ${resolvedTestRunId}; retriggering...`);
88
+ response = await (0, client_1.getTestRunDiffsSummary)(client, resolvedTestRunId, {
89
+ ...diffsSummaryOptions,
90
+ retrigger: true,
91
+ });
92
+ }
66
93
  // Poll until complete (or give up after the timeout, rather than forever).
67
94
  // A single line when we start waiting — no per-poll output.
68
95
  const summaryDeadline = performance.now() + SUMMARY_POLL_TIMEOUT_MS;
69
96
  if (response.status === "pending" || response.status === "processing") {
70
97
  (0, common_1.logProgress)(`Waiting for diff results for test run ${resolvedTestRunId}...`);
71
98
  }
72
- while (response.status === "pending" || response.status === "processing") {
99
+ while (response.status !== "complete") {
100
+ if (response.status === "failed") {
101
+ const reasonSuffix = response.reason != null ? ` (${response.reason})` : "";
102
+ (0, common_1.logNotice)(`Diffs summary computation failed${reasonSuffix} for test run ${resolvedTestRunId}. ` +
103
+ `Something may have gone wrong — try again later.`);
104
+ process.exit(1);
105
+ }
106
+ if (response.status !== "pending" && response.status !== "processing") {
107
+ (0, common_1.logNotice)(`Error: unexpected status "${String(response.status)}"`);
108
+ process.exit(1);
109
+ }
73
110
  if (performance.now() >= summaryDeadline) {
74
111
  (0, common_1.logNotice)(`Diffs summary for test run ${resolvedTestRunId} did not complete within 10 minutes ` +
75
112
  `(status: ${response.status}). Something may have gone wrong — try again later.`);
@@ -78,38 +115,33 @@ const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToCom
78
115
  await sleep(2000);
79
116
  response = await (0, client_1.getTestRunDiffsSummary)(client, resolvedTestRunId, diffsSummaryOptions);
80
117
  }
81
- if (response.status !== "complete") {
82
- (0, common_1.logNotice)(`Error: unexpected status "${response.status}"`);
83
- process.exit(1);
84
- }
85
118
  const data = response.data ?? [];
86
- if (data.length === 0) {
87
- (0, common_1.logNotice)(`Test run ${resolvedTestRunId} does not have diffs.`);
88
- return;
89
- }
90
119
  // The backend sets `index` to the priority rank by default, or the
91
120
  // within-replay position (with `total`) when orderByReplayDiffs is set.
92
121
  const rows = (0, test_run_diffs_utils_1.flattenDiffRows)(data, orderByReplayDiffs);
93
- const columns = {
94
- orderByReplayDiffs,
95
- includeDomDiffIds,
96
- includeAllDiffs: allDiffs,
97
- includeReplayIds,
98
- };
99
- console.log((0, test_run_diffs_utils_1.buildDiffsSummaryHeader)(columns).join("\t"));
100
- let totalDiffScreenshots = 0;
101
- for (const row of rows) {
102
- if (row.screenshot.userVisibleOutcome === "difference") {
103
- totalDiffScreenshots++;
122
+ if (json) {
123
+ (0, print_json_1.printJson)((0, test_run_diffs_utils_1.buildDiffsSummaryJson)(data, columns));
124
+ }
125
+ else {
126
+ // Always emit the TSV header so a zero-diff run is a header with no rows (the
127
+ // same shape as the in-progress short-circuit above), never empty stdout.
128
+ console.log((0, test_run_diffs_utils_1.buildDiffsSummaryHeader)(columns).join("\t"));
129
+ for (const row of rows) {
130
+ console.log((0, test_run_diffs_utils_1.formatDiffRow)(row, columns).join("\t"));
104
131
  }
105
- console.log((0, test_run_diffs_utils_1.formatDiffRow)(row, columns).join("\t"));
106
132
  }
133
+ // Summaries on stderr regardless of --json (which only changes stdout).
134
+ if (data.length === 0) {
135
+ (0, common_1.logNotice)(`Test run ${resolvedTestRunId} does not have diffs.`);
136
+ return;
137
+ }
138
+ const totalDiffScreenshots = rows.filter((row) => row.screenshot.userVisibleOutcome === "difference").length;
107
139
  const tEnd = performance.now();
108
140
  (0, common_1.logNotice)(`${data.length} replay diff(s), ${totalDiffScreenshots} screenshot diff(s), total ${((tEnd - t0) / 1000).toFixed(1)}s`);
109
141
  };
110
142
  exports.testRunDiffsCommand = {
111
143
  command: "test-run-diffs",
112
- describe: "List replay diffs for a test run with summary",
144
+ describe: "List replay diffs for a test run. Outputs TSV, one row per screenshot: replayDiffId, screenshotName, outcome, mismatch (plus optional columns depending on flags), or the same data with --json (nested by replay diff under --orderByReplayDiffs).",
113
145
  builder: {
114
146
  apiToken: { string: true, description: "Meticulous API token" },
115
147
  testRunId: {
@@ -153,5 +185,4 @@ exports.testRunDiffsCommand = {
153
185
  },
154
186
  handler: (0, sentry_utils_1.wrapHandler)(handler),
155
187
  };
156
- //# sourceMappingURL=test-run-diffs.command.js.map
157
- //# debugId=3f2d4806-c07a-5b11-81a1-b22cc1229f10
188
+ //# sourceMappingURL=test-run-diffs.command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-run-diffs.command.js","sources":["../../../src/commands/agent/test-run-diffs.command.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"3f2d4806-c07a-5b11-81a1-b22cc1229f10"}
1
+ {"version":3,"file":"test-run-diffs.command.js","sourceRoot":"","sources":["../../../src/commands/agent/test-run-diffs.command.ts"],"names":[],"mappings":";;;AACA,qDAKkC;AAClC,qDAAkE;AAElE,+DAA2D;AAC3D,mEAA+D;AAC/D,+DAA0D;AAC1D,2FAIkD;AAClD,iEAMgC;AAehC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAiB,EAAE,CAC1C,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAEpD,8EAA8E;AAC9E,MAAM,uBAAuB,GAAG,EAAE,GAAG,MAAM,CAAC;AAE5C,MAAM,OAAO,GAAG,KAAK,EAAE,EACrB,QAAQ,EACR,SAAS,EACT,SAAS,EACT,4BAA4B,EAC5B,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,IAAI,GACI,EAAiB,EAAE;IAC3B,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QAC3C,MAAM,IAAI,6BAAY,CAAC,mDAAmD,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,IAAA,iCAAwB,EAAC;QAC/C,QAAQ;QACR,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAqB,EAAC;QACzC,QAAQ;QACR,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IAEH,6EAA6E;IAC7E,yCAAyC;IACzC,IAAI,iBAAyB,CAAC;IAC9B,IAAI,MAAqB,CAAC;IAC1B,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QACtB,iBAAiB,GAAG,SAAS,CAAC;QAC9B,MAAM,GAAG,CAAC,MAAM,IAAA,mBAAU,EAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,MAAM,IAAA,6DAA8B,EAC9C,MAAM,EACN,SAAS,EACT,SAAS,CACV,CAAC;QACF,iBAAiB,GAAG,GAAG,CAAC,SAAS,CAAC;QAClC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,4EAA4E;IAC5E,4EAA4E;IAC5E,2EAA2E;IAC3E,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,IAAA,6CAAsB,EAAC,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC;IAE7E,MAAM,OAAO,GAAG;QACd,kBAAkB;QAClB,iBAAiB;QACjB,eAAe,EAAE,QAAQ;QACzB,gBAAgB;KACjB,CAAC;IAEF,qEAAqE;IACrE,gEAAgE;IAChE,uEAAuE;IACvE,MAAM,cAAc,GAAG,MAAM,IAAA,oDAAqB,EAChD,MAAM,EACN,iBAAiB,EACjB,MAAM,EACN,EAAE,QAAQ,EAAE,4BAA4B,EAAE,CAC3C,CAAC;IACF,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;QAC3B,8EAA8E;QAC9E,0EAA0E;QAC1E,0DAA0D;QAC1D,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,IAAA,8CAAuB,EAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO;IACT,CAAC;IAED,0EAA0E;IAC1E,wEAAwE;IACxE,IAAA,oDAAqB,EAAC,iBAAiB,EAAE,cAAc,EAAE;QACvD,UAAU,EAAE,OAAO;KACpB,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAA,oBAAW,EAAC,uCAAuC,iBAAiB,KAAK,CAAC,CAAC;IAE3E,MAAM,mBAAmB,GAAG;QAC1B,gBAAgB;QAChB,iBAAiB;QACjB,eAAe,EAAE,QAAQ;QACzB,cAAc;QACd,kBAAkB;KACnB,CAAC;IAEF,IAAI,QAAQ,GAAG,MAAM,IAAA,+BAAsB,EACzC,MAAM,EACN,iBAAiB,EACjB,mBAAmB,CACpB,CAAC;IAEF,wEAAwE;IACxE,4EAA4E;IAC5E,0EAA0E;IAC1E,2EAA2E;IAC3E,6DAA6D;IAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACjC,IAAA,oBAAW,EACT,yCAAyC,iBAAiB,mBAAmB,CAC9E,CAAC;QACF,QAAQ,GAAG,MAAM,IAAA,+BAAsB,EAAC,MAAM,EAAE,iBAAiB,EAAE;YACjE,GAAG,mBAAmB;YACtB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,4DAA4D;IAC5D,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,uBAAuB,CAAC;IACpE,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACtE,IAAA,oBAAW,EACT,yCAAyC,iBAAiB,KAAK,CAChE,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACtC,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,YAAY,GAChB,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,IAAA,kBAAS,EACP,mCAAmC,YAAY,iBAAiB,iBAAiB,IAAI;gBACnF,kDAAkD,CACrD,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACtE,IAAA,kBAAS,EAAC,6BAA6B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,WAAW,CAAC,GAAG,EAAE,IAAI,eAAe,EAAE,CAAC;YACzC,IAAA,kBAAS,EACP,8BAA8B,iBAAiB,sCAAsC;gBACnF,YAAY,QAAQ,CAAC,MAAM,qDAAqD,CACnF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAClB,QAAQ,GAAG,MAAM,IAAA,+BAAsB,EACrC,MAAM,EACN,iBAAiB,EACjB,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;IACjC,mEAAmE;IACnE,wEAAwE;IACxE,MAAM,IAAI,GAAG,IAAA,sCAAe,EAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAEvD,IAAI,IAAI,EAAE,CAAC;QACT,IAAA,sBAAS,EAAC,IAAA,4CAAqB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,8EAA8E;QAC9E,0EAA0E;QAC1E,OAAO,CAAC,GAAG,CAAC,IAAA,8CAAuB,EAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,IAAA,oCAAa,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,IAAA,kBAAS,EAAC,YAAY,iBAAiB,uBAAuB,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CACtC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,kBAAkB,KAAK,YAAY,CAC5D,CAAC,MAAM,CAAC;IACT,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAC/B,IAAA,kBAAS,EACP,GAAG,IAAI,CAAC,MAAM,oBAAoB,oBAAoB,8BAA8B,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CACvH,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,mBAAmB,GAAoC;IAClE,OAAO,EAAE,gBAAgB;IACzB,QAAQ,EACN,qPAAqP;IACvP,OAAO,EAAE;QACP,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;QAC/D,SAAS,EAAE;YACT,MAAM,EAAE,IAAI;YACZ,WAAW,EACT,4HAA4H;SAC/H;QACD,SAAS,EAAE;YACT,MAAM,EAAE,IAAI;YACZ,WAAW,EACT,iMAAiM;SACpM;QACD,4BAA4B,EAAE;YAC5B,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK;YACd,WAAW,EACT,oLAAoL;SACvL;QACD,gBAAgB,EAAE;YAChB,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,kDAAkD;YAC/D,OAAO,EAAE,KAAK;SACf;QACD,iBAAiB,EAAE;YACjB,OAAO,EAAE,IAAI;YACb,WAAW,EACT,uEAAuE;YACzE,OAAO,EAAE,KAAK;SACf;QACD,eAAe,EAAE;YACf,OAAO,EAAE,IAAI;YACb,WAAW,EACT,iGAAiG;YACnG,OAAO,EAAE,KAAK;SACf;QACD,cAAc,EAAE;YACd,OAAO,EAAE,IAAI;YACb,WAAW,EACT,wGAAwG;YAC1G,OAAO,EAAE,KAAK;SACf;QACD,kBAAkB,EAAE;YAClB,OAAO,EAAE,IAAI;YACb,WAAW,EACT,mHAAmH;YACrH,OAAO,EAAE,KAAK;SACf;KACF;IACD,OAAO,EAAE,IAAA,0BAAW,EAAC,OAAO,CAAC;CAC9B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=test-run-diffs.command.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-run-diffs.command.spec.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/test-run-diffs.command.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const test_run_diffs_command_1 = require("./test-run-diffs.command");
5
+ // Make wrapHandler a passthrough so handler errors propagate directly to tests
6
+ // rather than being swallowed by process.exit().
7
+ vitest_1.vi.mock("../../command-utils/sentry.utils", () => ({
8
+ wrapHandler: (fn) => fn,
9
+ }));
10
+ const mocks = vitest_1.vi.hoisted(() => ({
11
+ createClientWithOAuth: vitest_1.vi.fn(),
12
+ resolveApiTokenWithOAuth: vitest_1.vi.fn(),
13
+ getTestRun: vitest_1.vi.fn(),
14
+ getTestRunDiffsSummary: vitest_1.vi.fn(),
15
+ ensureTestRunFinished: vitest_1.vi.fn(),
16
+ assertTestRunComplete: vitest_1.vi.fn(),
17
+ resolveTestRunForCommitOrThrow: vitest_1.vi.fn(),
18
+ logNotice: vitest_1.vi.fn(),
19
+ logProgress: vitest_1.vi.fn(),
20
+ }));
21
+ vitest_1.vi.mock("@alwaysmeticulous/client", () => ({
22
+ createClientWithOAuth: mocks.createClientWithOAuth,
23
+ resolveApiTokenWithOAuth: mocks.resolveApiTokenWithOAuth,
24
+ getTestRun: mocks.getTestRun,
25
+ getTestRunDiffsSummary: mocks.getTestRunDiffsSummary,
26
+ }));
27
+ vitest_1.vi.mock("@alwaysmeticulous/common", () => ({
28
+ logNotice: mocks.logNotice,
29
+ logProgress: mocks.logProgress,
30
+ }));
31
+ vitest_1.vi.mock("../../utils/resolve-test-run-from-commit", () => ({
32
+ ensureTestRunFinished: mocks.ensureTestRunFinished,
33
+ assertTestRunComplete: mocks.assertTestRunComplete,
34
+ resolveTestRunForCommitOrThrow: mocks.resolveTestRunForCommitOrThrow,
35
+ }));
36
+ class ProcessExitError extends Error {
37
+ code;
38
+ constructor(code) {
39
+ super(`process.exit(${code})`);
40
+ this.code = code;
41
+ }
42
+ }
43
+ const runHandler = () => test_run_diffs_command_1.testRunDiffsCommand.handler({
44
+ apiToken: undefined,
45
+ testRunId: "tr-1",
46
+ commitSha: undefined,
47
+ dontWaitForTestRunToComplete: false,
48
+ includeReplayIds: false,
49
+ includeDomDiffIds: false,
50
+ includeAllDiffs: false,
51
+ includeMatches: false,
52
+ orderByReplayDiffs: false,
53
+ json: false,
54
+ });
55
+ let logSpy;
56
+ let exitSpy;
57
+ (0, vitest_1.describe)("test-run-diffs command polling", () => {
58
+ (0, vitest_1.beforeEach)(() => {
59
+ vitest_1.vi.clearAllMocks();
60
+ mocks.createClientWithOAuth.mockResolvedValue({});
61
+ mocks.resolveApiTokenWithOAuth.mockResolvedValue("token");
62
+ mocks.getTestRun.mockResolvedValue({ status: "Success" });
63
+ mocks.ensureTestRunFinished.mockResolvedValue("Success");
64
+ mocks.assertTestRunComplete.mockReturnValue(undefined);
65
+ logSpy = vitest_1.vi.spyOn(console, "log").mockImplementation(() => { });
66
+ exitSpy = vitest_1.vi.spyOn(process, "exit").mockImplementation(((code) => {
67
+ throw new ProcessExitError(code);
68
+ }));
69
+ });
70
+ (0, vitest_1.afterEach)(() => {
71
+ logSpy.mockRestore();
72
+ exitSpy.mockRestore();
73
+ });
74
+ (0, vitest_1.it)("retriggers once up front when the run starts out failed, then reports success", async () => {
75
+ mocks.getTestRunDiffsSummary
76
+ .mockResolvedValueOnce({ status: "failed", reason: "TIMED_OUT" }) // cold-start check
77
+ .mockResolvedValueOnce({ status: "pending" }) // the retrigger call
78
+ .mockResolvedValueOnce({ status: "complete", data: [] }); // first poll
79
+ vitest_1.vi.useFakeTimers();
80
+ const handlerPromise = runHandler();
81
+ await vitest_1.vi.advanceTimersByTimeAsync(2_000);
82
+ await handlerPromise;
83
+ vitest_1.vi.useRealTimers();
84
+ (0, vitest_1.expect)(exitSpy).not.toHaveBeenCalled();
85
+ (0, vitest_1.expect)(mocks.getTestRunDiffsSummary).toHaveBeenCalledTimes(3);
86
+ (0, vitest_1.expect)(mocks.getTestRunDiffsSummary).toHaveBeenNthCalledWith(2, vitest_1.expect.anything(), "tr-1", vitest_1.expect.objectContaining({ retrigger: true }));
87
+ // The poll after retriggering carries no retrigger param of its own.
88
+ (0, vitest_1.expect)(mocks.getTestRunDiffsSummary).toHaveBeenNthCalledWith(3, vitest_1.expect.anything(), "tr-1", vitest_1.expect.not.objectContaining({ retrigger: true }));
89
+ });
90
+ (0, vitest_1.it)("does not retrigger a second time if the freshly retriggered run also fails", async () => {
91
+ mocks.getTestRunDiffsSummary
92
+ .mockResolvedValueOnce({ status: "failed", reason: "TIMED_OUT" }) // cold-start check
93
+ .mockResolvedValueOnce({ status: "pending" }) // the retrigger call
94
+ .mockResolvedValueOnce({ status: "failed", reason: "FAILED" }); // first poll fails too
95
+ vitest_1.vi.useFakeTimers();
96
+ const handlerRejection = (0, vitest_1.expect)(runHandler()).rejects.toThrow(ProcessExitError);
97
+ await vitest_1.vi.advanceTimersByTimeAsync(2_000);
98
+ await handlerRejection;
99
+ vitest_1.vi.useRealTimers();
100
+ (0, vitest_1.expect)(exitSpy).toHaveBeenCalledWith(1);
101
+ (0, vitest_1.expect)(mocks.logNotice).toHaveBeenCalledWith(vitest_1.expect.stringContaining("failed (FAILED)"));
102
+ // Exactly one retrigger for the whole invocation: the initial cold-start
103
+ // check plus the one retrigger call, nothing more.
104
+ (0, vitest_1.expect)(mocks.getTestRunDiffsSummary).toHaveBeenCalledTimes(3);
105
+ });
106
+ (0, vitest_1.it)("does not retrigger when the run isn't already failed", async () => {
107
+ mocks.getTestRunDiffsSummary.mockResolvedValue({
108
+ status: "complete",
109
+ data: [],
110
+ });
111
+ await runHandler();
112
+ (0, vitest_1.expect)(mocks.getTestRunDiffsSummary).toHaveBeenCalledTimes(1);
113
+ (0, vitest_1.expect)(mocks.getTestRunDiffsSummary).not.toHaveBeenCalledWith(vitest_1.expect.anything(), vitest_1.expect.anything(), vitest_1.expect.objectContaining({ retrigger: true }));
114
+ });
115
+ (0, vitest_1.it)("exits 1 immediately on an unrecognized status", async () => {
116
+ mocks.getTestRunDiffsSummary.mockResolvedValue({
117
+ status: "unexpected_bogus_status",
118
+ });
119
+ await (0, vitest_1.expect)(runHandler()).rejects.toThrow(ProcessExitError);
120
+ (0, vitest_1.expect)(exitSpy).toHaveBeenCalledWith(1);
121
+ (0, vitest_1.expect)(mocks.logNotice).toHaveBeenCalledWith(vitest_1.expect.stringContaining('unexpected status "unexpected_bogus_status"'));
122
+ });
123
+ (0, vitest_1.it)("exits 1 once the 10-minute deadline passes while still pending", async () => {
124
+ mocks.getTestRunDiffsSummary.mockResolvedValue({ status: "pending" });
125
+ const nowSpy = vitest_1.vi
126
+ .spyOn(performance, "now")
127
+ .mockReturnValueOnce(0) // t0
128
+ .mockReturnValueOnce(0) // summaryDeadline base
129
+ .mockReturnValueOnce(999_999_999); // deadline check inside the loop
130
+ await (0, vitest_1.expect)(runHandler()).rejects.toThrow(ProcessExitError);
131
+ (0, vitest_1.expect)(exitSpy).toHaveBeenCalledWith(1);
132
+ (0, vitest_1.expect)(mocks.logNotice).toHaveBeenCalledWith(vitest_1.expect.stringContaining("did not complete within 10 minutes"));
133
+ nowSpy.mockRestore();
134
+ });
135
+ (0, vitest_1.it)("prints TSV output once the computation completes", async () => {
136
+ mocks.getTestRunDiffsSummary.mockResolvedValue({
137
+ status: "complete",
138
+ data: [],
139
+ });
140
+ await runHandler();
141
+ (0, vitest_1.expect)(exitSpy).not.toHaveBeenCalled();
142
+ const stdout = logSpy.mock.calls.flat().join("\n");
143
+ (0, vitest_1.expect)(stdout.split("\n")[0]).toContain("replayDiffId");
144
+ });
145
+ });
146
+ //# sourceMappingURL=test-run-diffs.command.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-run-diffs.command.spec.js","sourceRoot":"","sources":["../../../src/commands/agent/test-run-diffs.command.spec.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,13 @@ export declare const flattenDiffRows: (data: DiffsSummaryReplayDiff[], orderByRe
39
39
  * by default rows are already in priority order, so the index is omitted.
40
40
  */
41
41
  export declare const buildDiffsSummaryHeader: (columns: DiffsSummaryColumns) => string[];
42
+ /**
43
+ * Builds the JSON equivalent of the TSV, gated by the same columns. By default
44
+ * it's a flat array (one object per screenshot, in the same priority order as
45
+ * the TSV). With orderByReplayDiffs it nests one level — an array of replay
46
+ * diffs, each with its screenshots grouped underneath (index/total then apply).
47
+ */
48
+ export declare const buildDiffsSummaryJson: (data: DiffsSummaryReplayDiff[], columns: DiffsSummaryColumns) => unknown[];
42
49
  /** Formats a single row's fields, gated by the same columns as the header. */
43
50
  export declare const formatDiffRow: ({ replayDiff, screenshot }: DiffRow, columns: DiffsSummaryColumns) => (string | number)[];
44
51
  //# sourceMappingURL=test-run-diffs.utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-run-diffs.utils.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/test-run-diffs.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAElC,2EAA2E;AAC3E,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,sBAAsB,CAAC;IACnC,UAAU,EAAE,sBAAsB,CAAC;CACpC;AAED,sDAAsD;AACtD,MAAM,WAAW,mBAAmB;IAClC,2EAA2E;IAC3E,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iCAAiC;IACjC,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB,2CAA2C;IAC3C,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAKD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,yCAGhC;IACD,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;CACzB,KAAG,OAA4C,CAAC;AAEjD;;;;;GAKG;AACH,eAAO,MAAM,eAAe,SACpB,sBAAsB,EAAE,sBACV,OAAO,KAC1B,OAAO,EAQT,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,YACzB,mBAAmB,KAC3B,MAAM,EAQR,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,aAAa,+BACI,OAAO,WAC1B,mBAAmB,KAC3B,CAAC,MAAM,GAAG,MAAM,CAAC,EAcnB,CAAC"}
1
+ {"version":3,"file":"test-run-diffs.utils.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/test-run-diffs.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAElC,2EAA2E;AAC3E,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,sBAAsB,CAAC;IACnC,UAAU,EAAE,sBAAsB,CAAC;CACpC;AAED,sDAAsD;AACtD,MAAM,WAAW,mBAAmB;IAClC,2EAA2E;IAC3E,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iCAAiC;IACjC,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB,2CAA2C;IAC3C,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAKD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,yCAGhC;IACD,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;CACzB,KAAG,OAA4C,CAAC;AAEjD;;;;;GAKG;AACH,eAAO,MAAM,eAAe,SACpB,sBAAsB,EAAE,sBACV,OAAO,KAC1B,OAAO,EAQT,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,YACzB,mBAAmB,KAC3B,MAAM,EAQR,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,SAC1B,sBAAsB,EAAE,WACrB,mBAAmB,KAC3B,OAAO,EA2BT,CAAC;AAoBF,8EAA8E;AAC9E,eAAO,MAAM,aAAa,+BACI,OAAO,WAC1B,mBAAmB,KAC3B,CAAC,MAAM,GAAG,MAAM,CAAC,EAcnB,CAAC"}
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="745a03e3-8218-5e27-8e96-123d2cacb50e")}catch(e){}}();
3
-
4
2
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.formatDiffRow = exports.buildDiffsSummaryHeader = exports.flattenDiffRows = exports.resolveIncludeAllDiffs = void 0;
3
+ exports.formatDiffRow = exports.buildDiffsSummaryJson = exports.buildDiffsSummaryHeader = exports.flattenDiffRows = exports.resolveIncludeAllDiffs = void 0;
6
4
  const fmtMismatch = (v) => v != null ? v.toFixed(5) : "";
7
5
  /**
8
6
  * --includeMatches implies --includeAllDiffs: matches are never part of the
@@ -43,6 +41,51 @@ const buildDiffsSummaryHeader = (columns) => {
43
41
  return fields;
44
42
  };
45
43
  exports.buildDiffsSummaryHeader = buildDiffsSummaryHeader;
44
+ /**
45
+ * Builds the JSON equivalent of the TSV, gated by the same columns. By default
46
+ * it's a flat array (one object per screenshot, in the same priority order as
47
+ * the TSV). With orderByReplayDiffs it nests one level — an array of replay
48
+ * diffs, each with its screenshots grouped underneath (index/total then apply).
49
+ */
50
+ const buildDiffsSummaryJson = (data, columns) => {
51
+ if (columns.orderByReplayDiffs) {
52
+ return data.map((replayDiff) => ({
53
+ replayDiffId: replayDiff.replayDiffId,
54
+ ...(columns.includeReplayIds
55
+ ? {
56
+ baseReplayId: replayDiff.baseReplayId ?? null,
57
+ headReplayId: replayDiff.headReplayId ?? null,
58
+ }
59
+ : {}),
60
+ screenshots: replayDiff.screenshots.map((screenshot) => screenshotToJson(screenshot, columns)),
61
+ }));
62
+ }
63
+ return (0, exports.flattenDiffRows)(data, columns.orderByReplayDiffs).map(({ replayDiff, screenshot }) => ({
64
+ replayDiffId: replayDiff.replayDiffId,
65
+ ...screenshotToJson(screenshot, columns),
66
+ ...(columns.includeReplayIds
67
+ ? {
68
+ baseReplayId: replayDiff.baseReplayId ?? null,
69
+ headReplayId: replayDiff.headReplayId ?? null,
70
+ }
71
+ : {}),
72
+ }));
73
+ };
74
+ exports.buildDiffsSummaryJson = buildDiffsSummaryJson;
75
+ const screenshotToJson = (screenshot, columns) => ({
76
+ screenshotName: screenshot.screenshotName,
77
+ ...(columns.orderByReplayDiffs
78
+ ? { index: screenshot.index, total: screenshot.total ?? null }
79
+ : {}),
80
+ outcome: screenshot.outcome,
81
+ mismatch: screenshot.mismatchFraction ?? null,
82
+ ...(columns.includeDomDiffIds
83
+ ? { domDiffIds: screenshot.domDiffIds ?? null }
84
+ : {}),
85
+ ...(columns.includeAllDiffs
86
+ ? { isSelected: screenshot.isSelected ?? false }
87
+ : {}),
88
+ });
46
89
  /** Formats a single row's fields, gated by the same columns as the header. */
47
90
  const formatDiffRow = ({ replayDiff, screenshot }, columns) => {
48
91
  const fields = [
@@ -61,5 +104,4 @@ const formatDiffRow = ({ replayDiff, screenshot }, columns) => {
61
104
  return fields;
62
105
  };
63
106
  exports.formatDiffRow = formatDiffRow;
64
- //# sourceMappingURL=test-run-diffs.utils.js.map
65
- //# debugId=745a03e3-8218-5e27-8e96-123d2cacb50e
107
+ //# sourceMappingURL=test-run-diffs.utils.js.map