@alwaysmeticulous/cli 2.300.0 → 2.303.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/dist/command-utils/detect-upload-mode.d.ts +12 -0
  2. package/dist/command-utils/detect-upload-mode.d.ts.map +1 -0
  3. package/dist/command-utils/detect-upload-mode.js +27 -0
  4. package/dist/command-utils/detect-upload-mode.js.map +1 -0
  5. package/dist/command-utils/detect-upload-mode.spec.d.ts +2 -0
  6. package/dist/command-utils/detect-upload-mode.spec.d.ts.map +1 -0
  7. package/dist/command-utils/detect-upload-mode.spec.js +30 -0
  8. package/dist/command-utils/detect-upload-mode.spec.js.map +1 -0
  9. package/dist/command-utils/parse-container-env.d.ts +9 -0
  10. package/dist/command-utils/parse-container-env.d.ts.map +1 -0
  11. package/dist/command-utils/parse-container-env.js +23 -0
  12. package/dist/command-utils/parse-container-env.js.map +1 -0
  13. package/dist/command-utils/parse-rewrites.d.ts +2 -2
  14. package/dist/command-utils/parse-rewrites.d.ts.map +1 -1
  15. package/dist/command-utils/parse-rewrites.js +11 -16
  16. package/dist/command-utils/parse-rewrites.js.map +1 -1
  17. package/dist/command-utils/sentry.utils.js +3 -4
  18. package/dist/command-utils/sentry.utils.js.map +1 -1
  19. package/dist/commands/agent/build-git-options.d.ts +69 -0
  20. package/dist/commands/agent/build-git-options.d.ts.map +1 -0
  21. package/dist/commands/agent/build-git-options.js +148 -0
  22. package/dist/commands/agent/build-git-options.js.map +1 -0
  23. package/dist/commands/agent/build-git-options.spec.d.ts +2 -0
  24. package/dist/commands/agent/build-git-options.spec.d.ts.map +1 -0
  25. package/dist/commands/agent/build-git-options.spec.js +226 -0
  26. package/dist/commands/agent/build-git-options.spec.js.map +1 -0
  27. package/dist/commands/agent/index.d.ts.map +1 -1
  28. package/dist/commands/agent/index.js +12 -3
  29. package/dist/commands/agent/index.js.map +1 -1
  30. package/dist/commands/agent/js-coverage-diff.command.d.ts +2 -0
  31. package/dist/commands/agent/js-coverage-diff.command.d.ts.map +1 -1
  32. package/dist/commands/agent/js-coverage-diff.command.js +16 -4
  33. package/dist/commands/agent/js-coverage-diff.command.js.map +1 -1
  34. package/dist/commands/agent/js-coverage.command.d.ts +13 -1
  35. package/dist/commands/agent/js-coverage.command.d.ts.map +1 -1
  36. package/dist/commands/agent/js-coverage.command.js +187 -38
  37. package/dist/commands/agent/js-coverage.command.js.map +1 -1
  38. package/dist/commands/agent/js-coverage.command.spec.d.ts +2 -0
  39. package/dist/commands/agent/js-coverage.command.spec.d.ts.map +1 -0
  40. package/dist/commands/agent/js-coverage.command.spec.js +89 -0
  41. package/dist/commands/agent/js-coverage.command.spec.js.map +1 -0
  42. package/dist/commands/agent/test-run-diffs.command.d.ts +1 -2
  43. package/dist/commands/agent/test-run-diffs.command.d.ts.map +1 -1
  44. package/dist/commands/agent/test-run-diffs.command.js +27 -34
  45. package/dist/commands/agent/test-run-diffs.command.js.map +1 -1
  46. package/dist/commands/agent/test-run-for-commit.command.d.ts +1 -0
  47. package/dist/commands/agent/test-run-for-commit.command.d.ts.map +1 -1
  48. package/dist/commands/agent/test-run-for-commit.command.js +40 -15
  49. package/dist/commands/agent/test-run-for-commit.command.js.map +1 -1
  50. package/dist/commands/agent/trigger-test-run.command.d.ts +16 -0
  51. package/dist/commands/agent/trigger-test-run.command.d.ts.map +1 -0
  52. package/dist/commands/agent/trigger-test-run.command.js +219 -0
  53. package/dist/commands/agent/trigger-test-run.command.js.map +1 -0
  54. package/dist/commands/agent/upload-build.command.d.ts +19 -0
  55. package/dist/commands/agent/upload-build.command.d.ts.map +1 -0
  56. package/dist/commands/agent/upload-build.command.js +134 -0
  57. package/dist/commands/agent/upload-build.command.js.map +1 -0
  58. package/dist/commands/auth/__tests__/login.command.spec.js +39 -2
  59. package/dist/commands/auth/__tests__/login.command.spec.js.map +1 -1
  60. package/dist/commands/auth/login.command.d.ts +1 -0
  61. package/dist/commands/auth/login.command.d.ts.map +1 -1
  62. package/dist/commands/auth/login.command.js +40 -10
  63. package/dist/commands/auth/login.command.js.map +1 -1
  64. package/dist/commands/auth/set-project.command.d.ts.map +1 -1
  65. package/dist/commands/auth/set-project.command.js +10 -4
  66. package/dist/commands/auth/set-project.command.js.map +1 -1
  67. package/dist/commands/ci/deprecated-trigger-options.d.ts +19 -0
  68. package/dist/commands/ci/deprecated-trigger-options.d.ts.map +1 -0
  69. package/dist/commands/ci/deprecated-trigger-options.js +37 -0
  70. package/dist/commands/ci/deprecated-trigger-options.js.map +1 -0
  71. package/dist/commands/ci/resolve-git-options.d.ts +0 -1
  72. package/dist/commands/ci/resolve-git-options.d.ts.map +1 -1
  73. package/dist/commands/ci/resolve-git-options.js +3 -4
  74. package/dist/commands/ci/resolve-git-options.js.map +1 -1
  75. package/dist/commands/ci/run-with-uploaded-asset-chunks.command.d.ts.map +1 -1
  76. package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js +3 -4
  77. package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js.map +1 -1
  78. package/dist/commands/ci/trigger-test-run.core.d.ts +16 -0
  79. package/dist/commands/ci/trigger-test-run.core.d.ts.map +1 -0
  80. package/dist/commands/ci/trigger-test-run.core.js +194 -0
  81. package/dist/commands/ci/trigger-test-run.core.js.map +1 -0
  82. package/dist/commands/ci/trigger-test-run.types.d.ts +31 -0
  83. package/dist/commands/ci/trigger-test-run.types.d.ts.map +1 -0
  84. package/dist/commands/ci/trigger-test-run.types.js +6 -0
  85. package/dist/commands/ci/trigger-test-run.types.js.map +1 -0
  86. package/dist/commands/ci/upload-assets.command.d.ts +0 -1
  87. package/dist/commands/ci/upload-assets.command.d.ts.map +1 -1
  88. package/dist/commands/ci/upload-assets.command.js +16 -124
  89. package/dist/commands/ci/upload-assets.command.js.map +1 -1
  90. package/dist/commands/ci/upload-container.command.d.ts +0 -1
  91. package/dist/commands/ci/upload-container.command.d.ts.map +1 -1
  92. package/dist/commands/ci/upload-container.command.js +18 -131
  93. package/dist/commands/ci/upload-container.command.js.map +1 -1
  94. package/dist/main.d.ts.map +1 -1
  95. package/dist/main.js +5 -3
  96. package/dist/main.js.map +1 -1
  97. package/dist/utils/__tests__/select-project.spec.js +47 -2
  98. package/dist/utils/__tests__/select-project.spec.js.map +1 -1
  99. package/dist/utils/cli-user-error.d.ts +3 -1
  100. package/dist/utils/cli-user-error.d.ts.map +1 -1
  101. package/dist/utils/cli-user-error.js +5 -14
  102. package/dist/utils/cli-user-error.js.map +1 -1
  103. package/dist/utils/resolve-test-run-from-commit.d.ts +31 -5
  104. package/dist/utils/resolve-test-run-from-commit.d.ts.map +1 -1
  105. package/dist/utils/resolve-test-run-from-commit.js +59 -19
  106. package/dist/utils/resolve-test-run-from-commit.js.map +1 -1
  107. package/dist/utils/select-project.d.ts +9 -3
  108. package/dist/utils/select-project.d.ts.map +1 -1
  109. package/dist/utils/select-project.js +30 -7
  110. package/dist/utils/select-project.js.map +1 -1
  111. package/package.json +13 -13
@@ -1,25 +1,46 @@
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]="6e22ce6b-5928-5c94-a6e4-0f4e122122e9")}catch(e){}}();
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]="4567ef7d-85b7-51ec-a88f-41a6c7312232")}catch(e){}}();
3
3
 
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.jsCoverageCommand = void 0;
5
+ exports.jsCoverageCommand = exports.isAmbiguousTestRunError = exports.determineColumns = exports.assertTestRunOnlyFlagsUnsetForReplay = void 0;
6
6
  const client_1 = require("@alwaysmeticulous/client");
7
7
  const common_1 = require("@alwaysmeticulous/common");
8
8
  const sentry_utils_1 = require("../../command-utils/sentry.utils");
9
9
  const cli_user_error_1 = require("../../utils/cli-user-error");
10
10
  const format_coverage_ranges_1 = require("../../utils/format-coverage-ranges");
11
11
  const resolve_test_run_from_commit_1 = require("../../utils/resolve-test-run-from-commit");
12
+ // Single source of truth mapping each column to the request flag that asks for
13
+ // it, so the printed columns and the request payload can't drift apart.
14
+ const COVERAGE_COLUMN_FLAG = {
15
+ executedRanges: "includeExecutedRanges",
16
+ executableRanges: "includeExecutableRanges",
17
+ uncoveredRanges: "includeUncoveredRanges",
18
+ coveragePercentage: "includeCoveragePercentage",
19
+ };
12
20
  const log = (...args) => process.stderr.write(args.join(" ") + "\n");
13
- const handler = async ({ apiToken, replayId, testRunId, commitSha, screenshotName, json, }) => {
21
+ const handler = async (options) => {
22
+ const { apiToken, replayId, testRunId, commitSha, screenshotName, dontWaitForTestRunToComplete, globFilter, json, } = options;
14
23
  (0, common_1.initLogger)();
15
24
  if (screenshotName != null && replayId == null) {
16
25
  throw new cli_user_error_1.CliUserError("--screenshotName only applies to --replayId.");
17
26
  }
27
+ // --testRunId and --commitSha are two ways to name a run; passing both is
28
+ // ambiguous on both paths (whole-test-run and --replayId disambiguation).
29
+ if (testRunId != null && commitSha != null) {
30
+ throw new cli_user_error_1.CliUserError("Pass either --testRunId or --commitSha, not both.");
31
+ }
32
+ if (replayId != null) {
33
+ (0, exports.assertTestRunOnlyFlagsUnsetForReplay)(options);
34
+ }
35
+ const columns = (0, exports.determineColumns)(options);
18
36
  const apiToken_ = await (0, client_1.resolveApiTokenWithOAuth)({
19
37
  apiToken,
20
38
  enableOAuthLogin: true,
21
39
  });
22
- const client = (0, client_1.createClient)({ apiToken: apiToken_ });
40
+ const client = await (0, client_1.createClientWithOAuth)({
41
+ apiToken,
42
+ enableOAuthLogin: true,
43
+ });
23
44
  // --replayId takes precedence: repo file paths are resolved against the run
24
45
  // that executed the replay, and a --testRunId / --commitSha passed alongside
25
46
  // it acts as a membership gate / disambiguator (see below) rather than
@@ -30,49 +51,100 @@ const handler = async ({ apiToken, replayId, testRunId, commitSha, screenshotNam
30
51
  screenshotName,
31
52
  testRunId,
32
53
  commitSha,
54
+ globFilter,
55
+ includeAllFiles: options.includeAllFiles,
33
56
  json,
34
57
  });
35
58
  }
36
59
  else {
37
- if (testRunId != null && commitSha != null) {
38
- throw new cli_user_error_1.CliUserError("Pass either --testRunId or --commitSha, not both.");
39
- }
40
60
  // Test-run coverage: use --testRunId, else resolve the run from --commitSha
41
- // or, when neither is given, from the local checkout's HEAD. Either way the
42
- // run must have finished for coverage to exist.
61
+ // or, when neither is given, from the local checkout's HEAD. Coverage only
62
+ // exists once the run has finished, so block until it does (default) or, with
63
+ // --dontWaitForTestRunToComplete, report the in-progress run and stop.
64
+ let resolvedTestRunId;
65
+ let status;
43
66
  if (testRunId != null) {
44
- // Coverage only exists once a run has finished with a verdict; guard an
45
- // explicitly passed testRunId, mirroring the check for runs resolved from
46
- // a commit.
47
- const { status } = await (0, client_1.getTestRun)({ client, testRunId });
48
- (0, resolve_test_run_from_commit_1.assertTestRunComplete)(testRunId, status, { resultName: "coverage" });
49
- await printTestRunCoverage(client, testRunId, json);
67
+ resolvedTestRunId = testRunId;
68
+ status = (await (0, client_1.getTestRun)({ client, testRunId })).status;
50
69
  }
51
70
  else {
52
- const resolvedTestRunId = await resolveCompletedTestRunIdForCommit(client, apiToken_, commitSha);
53
- await printTestRunCoverage(client, resolvedTestRunId, json);
71
+ ({ testRunId: resolvedTestRunId, status } =
72
+ await (0, resolve_test_run_from_commit_1.resolveTestRunForCommitOrThrow)(client, apiToken_, commitSha));
73
+ }
74
+ const finishedStatus = await (0, resolve_test_run_from_commit_1.ensureTestRunFinished)(client, resolvedTestRunId, status, { dontWait: dontWaitForTestRunToComplete });
75
+ if (finishedStatus == null) {
76
+ return;
54
77
  }
78
+ // Reject session-pool bases (Partial); fatal failures already threw.
79
+ (0, resolve_test_run_from_commit_1.assertTestRunComplete)(resolvedTestRunId, finishedStatus, {
80
+ resultName: "coverage",
81
+ });
82
+ await printTestRunCoverage(client, resolvedTestRunId, options, columns, json);
83
+ }
84
+ };
85
+ // Executable / uncovered / percentage columns all need executable-line data we
86
+ // only have for whole test runs; --prDiffOnly reads a test-run-only artifact.
87
+ // Reject them for a single replay. (--globFilter and --includeAllFiles apply to
88
+ // replays too.)
89
+ const assertTestRunOnlyFlagsUnsetForReplay = (options) => {
90
+ const testRunOnly = [
91
+ ["includeExecutableRanges", options.includeExecutableRanges],
92
+ ["includeUncoveredRanges", options.includeUncoveredRanges],
93
+ ["includeCoveragePercentage", options.includeCoveragePercentage],
94
+ ["prDiffOnly", options.prDiffOnly],
95
+ ]
96
+ .filter(([, enabled]) => enabled)
97
+ .map(([name]) => `--${name}`);
98
+ if (testRunOnly.length > 0) {
99
+ throw new cli_user_error_1.CliUserError(`${testRunOnly.join(", ")} only appl${testRunOnly.length === 1 ? "ies" : "y"} to whole-test-run coverage, not --replayId.`);
55
100
  }
56
101
  };
57
- // Resolves a commit to a test run for coverage. Coverage only exists once a run
58
- // has finished with a usable verdict, so an unfinished or failed run is
59
- // reported as not-yet-available rather than queried.
60
- const resolveCompletedTestRunIdForCommit = async (client, apiToken, commitSha) => {
61
- const { testRunId, status } = await (0, resolve_test_run_from_commit_1.resolveTestRunForCommitOrThrow)(client, apiToken, commitSha);
62
- (0, resolve_test_run_from_commit_1.assertTestRunComplete)(testRunId, status, { resultName: "coverage" });
102
+ exports.assertTestRunOnlyFlagsUnsetForReplay = assertTestRunOnlyFlagsUnsetForReplay;
103
+ // The columns (after `repoFilePath`) to request and print, in fixed order.
104
+ // Defaults to executed ranges when no column flag is given, so a bare
105
+ // invocation matches the historical output.
106
+ const determineColumns = (options) => {
107
+ const includeExecuted = options.includeExecutedRanges ||
108
+ (!options.includeExecutableRanges &&
109
+ !options.includeUncoveredRanges &&
110
+ !options.includeCoveragePercentage);
111
+ const columns = [];
112
+ if (includeExecuted) {
113
+ columns.push("executedRanges");
114
+ }
115
+ if (options.includeExecutableRanges) {
116
+ columns.push("executableRanges");
117
+ }
118
+ if (options.includeUncoveredRanges) {
119
+ columns.push("uncoveredRanges");
120
+ }
121
+ if (options.includeCoveragePercentage) {
122
+ columns.push("coveragePercentage");
123
+ }
124
+ return columns;
125
+ };
126
+ exports.determineColumns = determineColumns;
127
+ // Resolves a commit to a test run id, used only to disambiguate which run a
128
+ // --replayId belongs to. The replay's own coverage exists once that replay has
129
+ // executed, independent of whole-run completion, so we don't require the run to
130
+ // be complete here (unlike the whole-test-run path) — getReplayJsCoverage
131
+ // surfaces an actionable error if the replay itself has no coverage yet.
132
+ const resolveTestRunIdForCommit = async (client, apiToken, commitSha) => {
133
+ const { testRunId } = await (0, resolve_test_run_from_commit_1.resolveTestRunForCommitOrThrow)(client, apiToken, commitSha);
63
134
  return testRunId;
64
135
  };
65
- const printReplayCoverage = async (client, apiToken, { replayId, screenshotName, testRunId, commitSha, json, }) => {
136
+ const printReplayCoverage = async (client, apiToken, { replayId, screenshotName, testRunId, commitSha, globFilter, includeAllFiles, json, }) => {
66
137
  // An explicit --commitSha selects the run client-side (the endpoint only
67
138
  // understands testRunId); --testRunId is passed through as-is.
68
139
  const effectiveTestRunId = testRunId ??
69
140
  (commitSha != null
70
- ? await resolveCompletedTestRunIdForCommit(client, apiToken, commitSha)
141
+ ? await resolveTestRunIdForCommit(client, apiToken, commitSha)
71
142
  : undefined);
72
143
  try {
73
- const result = await (0, client_1.getReplayJsCoverage)(client, replayId, {
74
- screenshotName,
144
+ const result = await (0, client_1.getReplayJsCoverage)(client, replayId, screenshotName, {
75
145
  testRunId: effectiveTestRunId,
146
+ globFilter,
147
+ includeAllFiles,
76
148
  });
77
149
  printReplayResult(result, json);
78
150
  }
@@ -81,15 +153,16 @@ const printReplayCoverage = async (client, apiToken, { replayId, screenshotName,
81
153
  // several runs, the endpoint can't pick one. Fall back to the run for the
82
154
  // local checkout's HEAD and retry; if that can't be resolved, surface the
83
155
  // original (actionable "pass testRunId") error unchanged.
84
- if (effectiveTestRunId == null && isAmbiguousTestRunError(error)) {
156
+ if (effectiveTestRunId == null && (0, exports.isAmbiguousTestRunError)(error)) {
85
157
  const fallback = await (0, resolve_test_run_from_commit_1.tryResolveTestRunForCommit)(client, apiToken, undefined);
86
158
  // Only retry against a run that finished with a verdict — an unfinished
87
159
  // or failed one has no usable coverage.
88
160
  if (fallback != null && (0, resolve_test_run_from_commit_1.isTestRunComplete)(fallback.status)) {
89
161
  try {
90
- const result = await (0, client_1.getReplayJsCoverage)(client, replayId, {
91
- screenshotName,
162
+ const result = await (0, client_1.getReplayJsCoverage)(client, replayId, screenshotName, {
92
163
  testRunId: fallback.testRunId,
164
+ globFilter,
165
+ includeAllFiles,
93
166
  });
94
167
  // Only announce the fallback once it has actually worked, so a doomed
95
168
  // retry doesn't leave a misleading "retrying against run X" line.
@@ -122,22 +195,59 @@ const printReplayResult = (result, json) => {
122
195
  }
123
196
  log(`${files.length} file(s) with coverage`);
124
197
  };
125
- const printTestRunCoverage = async (client, testRunId, json) => {
126
- const result = await (0, client_1.getTestRunJsCoverage)(client, testRunId);
198
+ const printTestRunCoverage = async (client, testRunId, options, columns, json) => {
199
+ // Send the resolved columns as explicit flags (the default-to-executed rule
200
+ // lives here in `determineColumns`, not the backend), so the backend never
201
+ // has to guess which columns a flagless request wants. Derive the flags from
202
+ // the same `columns` array the headers/formatting use, so they stay in sync.
203
+ const requestOptions = {
204
+ includeAllFiles: options.includeAllFiles,
205
+ prDiffOnly: options.prDiffOnly,
206
+ ...(options.globFilter != null ? { globFilter: options.globFilter } : {}),
207
+ };
208
+ for (const column of columns) {
209
+ requestOptions[COVERAGE_COLUMN_FLAG[column]] = true;
210
+ }
211
+ const result = await (0, client_1.getTestRunJsCoverage)(client, testRunId, requestOptions);
127
212
  if (json) {
128
213
  console.log(JSON.stringify(result, null, 2));
129
214
  return;
130
215
  }
131
- console.log(["repoFilePath", "executedRanges"].join("\t"));
132
- // Test-run coverage is the precomputed repo-mapped coverage, keyed by repo paths.
133
- for (const [filePath, ranges] of result.files) {
134
- console.log([filePath, (0, format_coverage_ranges_1.formatCoverageRanges)(ranges)].join("\t"));
216
+ // Test-run coverage is the precomputed repo-mapped coverage, keyed by repo
217
+ // paths. Emit `repoFilePath` then the requested columns in fixed order.
218
+ console.log(["repoFilePath", ...columns].join("\t"));
219
+ for (const file of result.files) {
220
+ const fields = [
221
+ file.repoFilePath,
222
+ ...columns.map((column) => formatCoverageColumn(file, column)),
223
+ ];
224
+ console.log(fields.join("\t"));
225
+ }
226
+ log(`${result.files.length} file(s)`);
227
+ };
228
+ const formatCoverageColumn = (file, column) => {
229
+ switch (column) {
230
+ case "executedRanges":
231
+ return (0, format_coverage_ranges_1.formatCoverageRanges)(file.executedRanges ?? []);
232
+ case "executableRanges":
233
+ return (0, format_coverage_ranges_1.formatCoverageRanges)(file.executableRanges ?? []);
234
+ case "uncoveredRanges":
235
+ return (0, format_coverage_ranges_1.formatCoverageRanges)(file.uncoveredRanges ?? []);
236
+ case "coveragePercentage":
237
+ return file.coveragePercentage == null
238
+ ? "n/a"
239
+ : file.coveragePercentage.toFixed(1);
240
+ default: {
241
+ // Exhaustiveness guard: a new CoverageColumn must be handled above.
242
+ const exhaustive = column;
243
+ throw new Error(`Unhandled coverage column: ${String(exhaustive)}`);
244
+ }
135
245
  }
136
- log(`${result.files.length} file(s) with coverage`);
137
246
  };
138
247
  const isAmbiguousTestRunError = (error) => (0, client_1.isFetchError)(error) &&
139
248
  error.response?.data?.reason ===
140
249
  "ambiguous-test-run";
250
+ exports.isAmbiguousTestRunError = isAmbiguousTestRunError;
141
251
  exports.jsCoverageCommand = {
142
252
  command: "js-coverage",
143
253
  describe: "Get JS coverage for a single replay or a whole test run (use js-coverage-diff for base vs head)",
@@ -159,6 +269,45 @@ exports.jsCoverageCommand = {
159
269
  string: true,
160
270
  description: 'Screenshot name (e.g. "after-event-5" or "end-state"), for use with --replayId. Omit for the whole replay.',
161
271
  },
272
+ dontWaitForTestRunToComplete: {
273
+ boolean: true,
274
+ default: false,
275
+ description: "For whole-test-run coverage, return immediately instead of the default of blocking until the run finishes; an unfinished run is then reported as not complete.",
276
+ },
277
+ includeExecutedRanges: {
278
+ boolean: true,
279
+ default: false,
280
+ description: "Include the executed line ranges column. This is the default column when no other --include* range/percentage flag is given.",
281
+ },
282
+ includeExecutableRanges: {
283
+ boolean: true,
284
+ default: false,
285
+ description: "Include the executable line ranges column (lines that could be executed). Whole-test-run coverage only.",
286
+ },
287
+ includeUncoveredRanges: {
288
+ boolean: true,
289
+ default: false,
290
+ description: "Include the uncovered line ranges column (executable minus executed). Whole-test-run coverage only.",
291
+ },
292
+ includeCoveragePercentage: {
293
+ boolean: true,
294
+ default: false,
295
+ description: "Include the coverage percentage column (0–100; executed / executable lines per file). Whole-test-run coverage only.",
296
+ },
297
+ includeAllFiles: {
298
+ boolean: true,
299
+ default: false,
300
+ description: "Return every file, regardless of the requested columns. By default a file is dropped unless at least one requested column has a value for it (e.g. with only executed ranges, files with no executed lines are dropped). Works for both replay and whole-test-run coverage.",
301
+ },
302
+ prDiffOnly: {
303
+ boolean: true,
304
+ default: false,
305
+ description: "Return only coverage for files changed in the PR diff (from coverage.pr.json). Whole-test-run coverage only.",
306
+ },
307
+ globFilter: {
308
+ string: true,
309
+ description: 'Keep only repo file paths matching this gitignore-style glob, e.g. "src/components/**".',
310
+ },
162
311
  json: {
163
312
  boolean: true,
164
313
  description: "Output the raw coverage response as JSON",
@@ -168,4 +317,4 @@ exports.jsCoverageCommand = {
168
317
  handler: (0, sentry_utils_1.wrapHandler)(handler),
169
318
  };
170
319
  //# sourceMappingURL=js-coverage.command.js.map
171
- //# debugId=6e22ce6b-5928-5c94-a6e4-0f4e122122e9
320
+ //# debugId=4567ef7d-85b7-51ec-a88f-41a6c7312232
@@ -1 +1 @@
1
- {"version":3,"file":"js-coverage.command.js","sources":["../../../src/commands/agent/js-coverage.command.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"6e22ce6b-5928-5c94-a6e4-0f4e122122e9"}
1
+ {"version":3,"file":"js-coverage.command.js","sources":["../../../src/commands/agent/js-coverage.command.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"4567ef7d-85b7-51ec-a88f-41a6c7312232"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=js-coverage.command.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-coverage.command.spec.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/js-coverage.command.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,89 @@
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]="cf073f44-40d8-5583-ac32-28d6529a3bcd")}catch(e){}}();
3
+
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ const vitest_1 = require("vitest");
6
+ const cli_user_error_1 = require("../../utils/cli-user-error");
7
+ const js_coverage_command_1 = require("./js-coverage.command");
8
+ const baseOptions = (overrides = {}) => ({
9
+ apiToken: undefined,
10
+ replayId: undefined,
11
+ testRunId: undefined,
12
+ commitSha: undefined,
13
+ screenshotName: undefined,
14
+ dontWaitForTestRunToComplete: false,
15
+ includeExecutedRanges: false,
16
+ includeExecutableRanges: false,
17
+ includeUncoveredRanges: false,
18
+ includeCoveragePercentage: false,
19
+ includeAllFiles: false,
20
+ prDiffOnly: false,
21
+ globFilter: undefined,
22
+ json: false,
23
+ ...overrides,
24
+ });
25
+ (0, vitest_1.describe)("determineColumns", () => {
26
+ (0, vitest_1.it)("defaults to executed ranges when no column flag is given", () => {
27
+ (0, vitest_1.expect)((0, js_coverage_command_1.determineColumns)(baseOptions())).toEqual(["executedRanges"]);
28
+ });
29
+ (0, vitest_1.it)("omits the executed default once another column is requested", () => {
30
+ (0, vitest_1.expect)((0, js_coverage_command_1.determineColumns)(baseOptions({ includeCoveragePercentage: true }))).toEqual(["coveragePercentage"]);
31
+ });
32
+ (0, vitest_1.it)("keeps executed ranges when explicitly requested alongside others", () => {
33
+ (0, vitest_1.expect)((0, js_coverage_command_1.determineColumns)(baseOptions({
34
+ includeExecutedRanges: true,
35
+ includeUncoveredRanges: true,
36
+ }))).toEqual(["executedRanges", "uncoveredRanges"]);
37
+ });
38
+ (0, vitest_1.it)("emits every column in the fixed order", () => {
39
+ (0, vitest_1.expect)((0, js_coverage_command_1.determineColumns)(baseOptions({
40
+ includeCoveragePercentage: true,
41
+ includeUncoveredRanges: true,
42
+ includeExecutableRanges: true,
43
+ includeExecutedRanges: true,
44
+ }))).toEqual([
45
+ "executedRanges",
46
+ "executableRanges",
47
+ "uncoveredRanges",
48
+ "coveragePercentage",
49
+ ]);
50
+ });
51
+ });
52
+ (0, vitest_1.describe)("assertTestRunOnlyFlagsUnsetForReplay", () => {
53
+ (0, vitest_1.it)("rejects a whole-test-run-only column flag", () => {
54
+ (0, vitest_1.expect)(() => (0, js_coverage_command_1.assertTestRunOnlyFlagsUnsetForReplay)(baseOptions({ includeExecutableRanges: true }))).toThrow(cli_user_error_1.CliUserError);
55
+ });
56
+ (0, vitest_1.it)("rejects --prDiffOnly", () => {
57
+ (0, vitest_1.expect)(() => (0, js_coverage_command_1.assertTestRunOnlyFlagsUnsetForReplay)(baseOptions({ prDiffOnly: true }))).toThrow(/--prDiffOnly only appl/);
58
+ });
59
+ (0, vitest_1.it)("lists every offending flag", () => {
60
+ (0, vitest_1.expect)(() => (0, js_coverage_command_1.assertTestRunOnlyFlagsUnsetForReplay)(baseOptions({
61
+ includeUncoveredRanges: true,
62
+ includeCoveragePercentage: true,
63
+ }))).toThrow(/--includeUncoveredRanges, --includeCoveragePercentage/);
64
+ });
65
+ (0, vitest_1.it)("allows executed ranges, --globFilter and --includeAllFiles on a replay", () => {
66
+ (0, vitest_1.expect)(() => (0, js_coverage_command_1.assertTestRunOnlyFlagsUnsetForReplay)(baseOptions({
67
+ includeExecutedRanges: true,
68
+ includeAllFiles: true,
69
+ globFilter: "src/**",
70
+ }))).not.toThrow();
71
+ });
72
+ });
73
+ (0, vitest_1.describe)("isAmbiguousTestRunError", () => {
74
+ (0, vitest_1.it)("detects the ambiguous-test-run reason on a fetch error", () => {
75
+ (0, vitest_1.expect)((0, js_coverage_command_1.isAmbiguousTestRunError)({
76
+ response: { data: { reason: "ambiguous-test-run" } },
77
+ })).toBe(true);
78
+ });
79
+ (0, vitest_1.it)("is false for a fetch error with a different reason", () => {
80
+ (0, vitest_1.expect)((0, js_coverage_command_1.isAmbiguousTestRunError)({
81
+ response: { data: { reason: "no-coverage-indexed" } },
82
+ })).toBe(false);
83
+ });
84
+ (0, vitest_1.it)("is false for a non-fetch error", () => {
85
+ (0, vitest_1.expect)((0, js_coverage_command_1.isAmbiguousTestRunError)(new Error("boom"))).toBeFalsy();
86
+ });
87
+ });
88
+ //# sourceMappingURL=js-coverage.command.spec.js.map
89
+ //# debugId=cf073f44-40d8-5583-ac32-28d6529a3bcd
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-coverage.command.spec.js","sources":["../../../src/commands/agent/js-coverage.command.spec.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"cf073f44-40d8-5583-ac32-28d6529a3bcd"}
@@ -3,13 +3,12 @@ interface Options {
3
3
  apiToken?: string | null | undefined;
4
4
  testRunId: string | undefined;
5
5
  commitSha: string | undefined;
6
- waitForTestRunToComplete: boolean;
6
+ dontWaitForTestRunToComplete: boolean;
7
7
  includeReplayIds: boolean;
8
8
  includeDomDiffIds: boolean;
9
9
  includeAllDiffs: boolean;
10
10
  includeMatches: boolean;
11
11
  orderByReplayDiffs: boolean;
12
- verbose: boolean;
13
12
  }
14
13
  export declare const testRunDiffsCommand: CommandModule<unknown, Options>;
15
14
  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;AAgB3C,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,wBAAwB,EAAE,OAAO,CAAC;IAClC,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,OAAO,EAAE,OAAO,CAAC;CAClB;AA0JD,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAyD/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;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,5 +1,5 @@
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]="5321980a-12dc-57c6-bf03-3ca418b37962")}catch(e){}}();
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
3
 
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.testRunDiffsCommand = void 0;
@@ -12,9 +12,7 @@ const test_run_diffs_utils_1 = require("./test-run-diffs.utils");
12
12
  const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
13
13
  /** Give up polling the diffs summary after this long, rather than forever. */
14
14
  const SUMMARY_POLL_TIMEOUT_MS = 10 * 60_000;
15
- const log = (...args) => process.stderr.write(args.join(" ") + "\n");
16
- const handler = async ({ apiToken, testRunId, commitSha, waitForTestRunToComplete, includeReplayIds, includeDomDiffIds, includeAllDiffs, includeMatches, orderByReplayDiffs, verbose, }) => {
17
- (0, common_1.initLogger)();
15
+ const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToComplete, includeReplayIds, includeDomDiffIds, includeAllDiffs, includeMatches, orderByReplayDiffs, }) => {
18
16
  if (testRunId != null && commitSha != null) {
19
17
  throw new cli_user_error_1.CliUserError("Pass either --testRunId or --commitSha, not both.");
20
18
  }
@@ -22,7 +20,10 @@ const handler = async ({ apiToken, testRunId, commitSha, waitForTestRunToComplet
22
20
  apiToken,
23
21
  enableOAuthLogin: true,
24
22
  });
25
- const client = (0, client_1.createClient)({ apiToken: apiToken_ });
23
+ const client = await (0, client_1.createClientWithOAuth)({
24
+ apiToken,
25
+ enableOAuthLogin: true,
26
+ });
26
27
  // Use --testRunId, else resolve the run from --commitSha or, when neither is
27
28
  // given, from the local checkout's HEAD.
28
29
  let resolvedTestRunId;
@@ -37,24 +38,19 @@ const handler = async ({ apiToken, testRunId, commitSha, waitForTestRunToComplet
37
38
  status = run.status;
38
39
  }
39
40
  // Diffs are only meaningful once the run has finished with a verdict
40
- // (Success/Failure). Wait if asked and the run is still in progress, then
41
- // classify the resulting status.
42
- if (waitForTestRunToComplete && (0, resolve_test_run_from_commit_1.isTestRunInProgress)(status)) {
43
- status = await (0, resolve_test_run_from_commit_1.awaitTestRunCompletion)(client, resolvedTestRunId);
44
- }
45
- if ((0, resolve_test_run_from_commit_1.isTestRunInProgress)(status)) {
46
- // Reached only when the caller didn't wait (waiting resolves in-progress
47
- // above), so the hint is always worth showing. Diffs aren't available yet,
48
- // so report and stop rather than error out.
49
- log(`Test run ${resolvedTestRunId} is not complete (status: ${status}). ` +
50
- "Pass --waitForTestRunToComplete to block until it finishes and then show diffs.");
41
+ // (Success/Failure). Block until it finishes (default) or, with
42
+ // --dontWaitForTestRunToComplete, report the in-progress run and stop.
43
+ const finishedStatus = await (0, resolve_test_run_from_commit_1.ensureTestRunFinished)(client, resolvedTestRunId, status, { dontWait: dontWaitForTestRunToComplete });
44
+ if (finishedStatus == null) {
51
45
  return;
52
46
  }
53
- // Reject fatal failures (Aborted/ExecutionError) and session-pool bases
54
- // (Partial, which never finish on their own and aren't tied to a change).
55
- (0, resolve_test_run_from_commit_1.assertTestRunComplete)(resolvedTestRunId, status, { resultName: "diffs" });
47
+ // Reject session-pool bases (Partial, which never finish on their own and
48
+ // aren't tied to a change); fatal failures already threw while waiting.
49
+ (0, resolve_test_run_from_commit_1.assertTestRunComplete)(resolvedTestRunId, finishedStatus, {
50
+ resultName: "diffs",
51
+ });
56
52
  const t0 = performance.now();
57
- log(`Fetching diffs summary for test run ${resolvedTestRunId}...`);
53
+ (0, common_1.logProgress)(`Fetching diffs summary for test run ${resolvedTestRunId}...`);
58
54
  // --includeMatches implies --includeAllDiffs (matches are never part of the
59
55
  // selected subset, so they only make sense alongside the full set). Use the
60
56
  // effective value for both the request and the isSelected column.
@@ -68,12 +64,14 @@ const handler = async ({ apiToken, testRunId, commitSha, waitForTestRunToComplet
68
64
  };
69
65
  let response = await (0, client_1.getTestRunDiffsSummary)(client, resolvedTestRunId, diffsSummaryOptions);
70
66
  // Poll until complete (or give up after the timeout, rather than forever).
67
+ // A single line when we start waiting — no per-poll output.
71
68
  const summaryDeadline = performance.now() + SUMMARY_POLL_TIMEOUT_MS;
69
+ if (response.status === "pending" || response.status === "processing") {
70
+ (0, common_1.logProgress)(`Waiting for diff results for test run ${resolvedTestRunId}...`);
71
+ }
72
72
  while (response.status === "pending" || response.status === "processing") {
73
- if (verbose)
74
- log(`Status: ${response.status}`);
75
73
  if (performance.now() >= summaryDeadline) {
76
- log(`Diffs summary for test run ${resolvedTestRunId} did not complete within 10 minutes ` +
74
+ (0, common_1.logNotice)(`Diffs summary for test run ${resolvedTestRunId} did not complete within 10 minutes ` +
77
75
  `(status: ${response.status}). Something may have gone wrong — try again later.`);
78
76
  process.exit(1);
79
77
  }
@@ -81,12 +79,12 @@ const handler = async ({ apiToken, testRunId, commitSha, waitForTestRunToComplet
81
79
  response = await (0, client_1.getTestRunDiffsSummary)(client, resolvedTestRunId, diffsSummaryOptions);
82
80
  }
83
81
  if (response.status !== "complete") {
84
- log(`Error: unexpected status "${response.status}"`);
82
+ (0, common_1.logNotice)(`Error: unexpected status "${response.status}"`);
85
83
  process.exit(1);
86
84
  }
87
85
  const data = response.data ?? [];
88
86
  if (data.length === 0) {
89
- log("No replay diffs found for this test run.");
87
+ (0, common_1.logNotice)(`Test run ${resolvedTestRunId} does not have diffs.`);
90
88
  return;
91
89
  }
92
90
  // The backend sets `index` to the priority rank by default, or the
@@ -107,7 +105,7 @@ const handler = async ({ apiToken, testRunId, commitSha, waitForTestRunToComplet
107
105
  console.log((0, test_run_diffs_utils_1.formatDiffRow)(row, columns).join("\t"));
108
106
  }
109
107
  const tEnd = performance.now();
110
- log(`${data.length} replay diff(s), ${totalDiffScreenshots} screenshot diff(s), total ${((tEnd - t0) / 1000).toFixed(1)}s`);
108
+ (0, common_1.logNotice)(`${data.length} replay diff(s), ${totalDiffScreenshots} screenshot diff(s), total ${((tEnd - t0) / 1000).toFixed(1)}s`);
111
109
  };
112
110
  exports.testRunDiffsCommand = {
113
111
  command: "test-run-diffs",
@@ -122,10 +120,10 @@ exports.testRunDiffsCommand = {
122
120
  string: true,
123
121
  description: "A commit SHA, used as an alternative to --testRunId: the latest test run for the commit is resolved and used. Defaults to the local git HEAD when neither --testRunId nor --commitSha is given.",
124
122
  },
125
- waitForTestRunToComplete: {
123
+ dontWaitForTestRunToComplete: {
126
124
  boolean: true,
127
125
  default: false,
128
- description: "If the test run is still in progress, block until it finishes before fetching diffs (otherwise an in-progress run is reported and the command exits).",
126
+ description: "By default, if the test run is still in progress the command blocks until it finishes before fetching diffs. Pass this to instead report the in-progress run and exit immediately.",
129
127
  },
130
128
  includeReplayIds: {
131
129
  boolean: true,
@@ -152,13 +150,8 @@ exports.testRunDiffsCommand = {
152
150
  description: "Order rows by replay diff then event index (instead of by selection priority) and include the index/total columns",
153
151
  default: false,
154
152
  },
155
- verbose: {
156
- boolean: true,
157
- description: "Show polling status updates",
158
- default: false,
159
- },
160
153
  },
161
154
  handler: (0, sentry_utils_1.wrapHandler)(handler),
162
155
  };
163
156
  //# sourceMappingURL=test-run-diffs.command.js.map
164
- //# debugId=5321980a-12dc-57c6-bf03-3ca418b37962
157
+ //# debugId=3f2d4806-c07a-5b11-81a1-b22cc1229f10