@alwaysmeticulous/cli 2.303.1 → 2.305.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.
- package/dist/command-utils/common-options.d.ts +5 -0
- package/dist/command-utils/common-options.d.ts.map +1 -1
- package/dist/command-utils/common-options.js +7 -2
- package/dist/command-utils/common-options.js.map +1 -1
- package/dist/command-utils/json-args.d.ts +14 -0
- package/dist/command-utils/json-args.d.ts.map +1 -0
- package/dist/command-utils/json-args.js +40 -0
- package/dist/command-utils/json-args.js.map +1 -0
- package/dist/command-utils/json-args.spec.d.ts +2 -0
- package/dist/command-utils/json-args.spec.d.ts.map +1 -0
- package/dist/command-utils/json-args.spec.js +37 -0
- package/dist/command-utils/json-args.spec.js.map +1 -0
- package/dist/command-utils/print-json.d.ts +7 -0
- package/dist/command-utils/print-json.d.ts.map +1 -0
- package/dist/command-utils/print-json.js +16 -0
- package/dist/command-utils/print-json.js.map +1 -0
- package/dist/commands/agent/build-git-options.d.ts +25 -20
- package/dist/commands/agent/build-git-options.d.ts.map +1 -1
- package/dist/commands/agent/build-git-options.js +62 -54
- package/dist/commands/agent/build-git-options.js.map +1 -1
- package/dist/commands/agent/build-git-options.spec.js +96 -62
- package/dist/commands/agent/build-git-options.spec.js.map +1 -1
- package/dist/commands/agent/index.d.ts.map +1 -1
- package/dist/commands/agent/index.js +11 -4
- package/dist/commands/agent/index.js.map +1 -1
- package/dist/commands/agent/js-coverage-diff.command.d.ts +1 -1
- package/dist/commands/agent/js-coverage-diff.command.d.ts.map +1 -1
- package/dist/commands/agent/js-coverage-diff.command.js +31 -38
- package/dist/commands/agent/js-coverage-diff.command.js.map +1 -1
- package/dist/commands/agent/js-coverage.command.d.ts +7 -4
- package/dist/commands/agent/js-coverage.command.d.ts.map +1 -1
- package/dist/commands/agent/js-coverage.command.js +104 -66
- package/dist/commands/agent/js-coverage.command.js.map +1 -1
- package/dist/commands/agent/js-coverage.command.spec.js +48 -2
- package/dist/commands/agent/js-coverage.command.spec.js.map +1 -1
- package/dist/commands/agent/screenshot-dom-diff.command.d.ts +1 -0
- package/dist/commands/agent/screenshot-dom-diff.command.d.ts.map +1 -1
- package/dist/commands/agent/screenshot-dom-diff.command.js +26 -18
- package/dist/commands/agent/screenshot-dom-diff.command.js.map +1 -1
- package/dist/commands/agent/screenshot-image-files.command.d.ts +1 -0
- package/dist/commands/agent/screenshot-image-files.command.d.ts.map +1 -1
- package/dist/commands/agent/screenshot-image-files.command.js +18 -5
- package/dist/commands/agent/screenshot-image-files.command.js.map +1 -1
- package/dist/commands/agent/screenshot-image.command.d.ts +1 -0
- package/dist/commands/agent/screenshot-image.command.d.ts.map +1 -1
- package/dist/commands/agent/screenshot-image.command.js +9 -4
- package/dist/commands/agent/screenshot-image.command.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.d.ts +1 -0
- package/dist/commands/agent/test-run-diffs.command.d.ts.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.js +40 -24
- package/dist/commands/agent/test-run-diffs.command.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.d.ts +7 -0
- package/dist/commands/agent/test-run-diffs.utils.d.ts.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.js +48 -3
- package/dist/commands/agent/test-run-diffs.utils.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.spec.js +145 -2
- package/dist/commands/agent/test-run-diffs.utils.spec.js.map +1 -1
- package/dist/commands/agent/test-run-for-commit.command.d.ts.map +1 -1
- package/dist/commands/agent/test-run-for-commit.command.js +12 -14
- package/dist/commands/agent/test-run-for-commit.command.js.map +1 -1
- package/dist/commands/agent/timeline.command.d.ts +1 -0
- package/dist/commands/agent/timeline.command.d.ts.map +1 -1
- package/dist/commands/agent/timeline.command.js +21 -7
- package/dist/commands/agent/timeline.command.js.map +1 -1
- package/dist/commands/agent/timeline.command.spec.d.ts +2 -0
- package/dist/commands/agent/timeline.command.spec.d.ts.map +1 -0
- package/dist/commands/agent/timeline.command.spec.js +77 -0
- package/dist/commands/agent/timeline.command.spec.js.map +1 -0
- package/dist/commands/agent/trigger-test-run.command.d.ts +27 -1
- package/dist/commands/agent/trigger-test-run.command.d.ts.map +1 -1
- package/dist/commands/agent/trigger-test-run.command.js +64 -53
- package/dist/commands/agent/trigger-test-run.command.js.map +1 -1
- package/dist/commands/agent/trigger-test-run.command.spec.d.ts +2 -0
- package/dist/commands/agent/trigger-test-run.command.spec.d.ts.map +1 -0
- package/dist/commands/agent/trigger-test-run.command.spec.js +88 -0
- package/dist/commands/agent/trigger-test-run.command.spec.js.map +1 -0
- package/dist/commands/agent/upload-build.command.d.ts +0 -1
- package/dist/commands/agent/upload-build.command.d.ts.map +1 -1
- package/dist/commands/agent/upload-build.command.js +12 -17
- package/dist/commands/agent/upload-build.command.js.map +1 -1
- package/dist/commands/all-commands.d.ts +38 -0
- package/dist/commands/all-commands.d.ts.map +1 -0
- package/dist/commands/all-commands.js +65 -0
- package/dist/commands/all-commands.js.map +1 -0
- package/dist/commands/auth/__tests__/list-projects.command.spec.js +22 -12
- package/dist/commands/auth/__tests__/list-projects.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/login.command.spec.js +9 -7
- package/dist/commands/auth/__tests__/login.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/logout.command.spec.js +4 -8
- package/dist/commands/auth/__tests__/logout.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/whoami.command.spec.js +71 -21
- package/dist/commands/auth/__tests__/whoami.command.spec.js.map +1 -1
- package/dist/commands/auth/list-projects.command.d.ts.map +1 -1
- package/dist/commands/auth/list-projects.command.js +17 -14
- package/dist/commands/auth/list-projects.command.js.map +1 -1
- package/dist/commands/auth/login.command.d.ts.map +1 -1
- package/dist/commands/auth/login.command.js +4 -5
- package/dist/commands/auth/login.command.js.map +1 -1
- package/dist/commands/auth/logout.command.d.ts +1 -5
- package/dist/commands/auth/logout.command.d.ts.map +1 -1
- package/dist/commands/auth/logout.command.js +4 -9
- package/dist/commands/auth/logout.command.js.map +1 -1
- package/dist/commands/auth/set-project.command.d.ts.map +1 -1
- package/dist/commands/auth/set-project.command.js +7 -5
- package/dist/commands/auth/set-project.command.js.map +1 -1
- package/dist/commands/auth/unset-project.command.js +5 -5
- package/dist/commands/auth/unset-project.command.js.map +1 -1
- package/dist/commands/auth/whoami.command.d.ts +5 -1
- package/dist/commands/auth/whoami.command.d.ts.map +1 -1
- package/dist/commands/auth/whoami.command.js +75 -32
- package/dist/commands/auth/whoami.command.js.map +1 -1
- package/dist/commands/ci/prepare.command.d.ts.map +1 -1
- package/dist/commands/ci/prepare.command.js +3 -2
- package/dist/commands/ci/prepare.command.js.map +1 -1
- package/dist/commands/ci/run-local.command.d.ts.map +1 -1
- package/dist/commands/ci/run-local.command.js +6 -4
- package/dist/commands/ci/run-local.command.js.map +1 -1
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.d.ts.map +1 -1
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js +6 -3
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js.map +1 -1
- package/dist/commands/ci/run.command.d.ts.map +1 -1
- package/dist/commands/ci/run.command.js +3 -2
- package/dist/commands/ci/run.command.js.map +1 -1
- package/dist/commands/ci/start-tunnel.command.d.ts.map +1 -1
- package/dist/commands/ci/start-tunnel.command.js +4 -2
- package/dist/commands/ci/start-tunnel.command.js.map +1 -1
- package/dist/commands/ci/trigger-test-run.core.d.ts.map +1 -1
- package/dist/commands/ci/trigger-test-run.core.js +6 -3
- package/dist/commands/ci/trigger-test-run.core.js.map +1 -1
- package/dist/commands/ci/upload-assets.command.d.ts +1 -0
- package/dist/commands/ci/upload-assets.command.d.ts.map +1 -1
- package/dist/commands/ci/upload-assets.command.js +3 -2
- package/dist/commands/ci/upload-assets.command.js.map +1 -1
- package/dist/commands/ci/upload-container.command.d.ts +1 -0
- package/dist/commands/ci/upload-container.command.d.ts.map +1 -1
- package/dist/commands/ci/upload-container.command.js +3 -2
- package/dist/commands/ci/upload-container.command.js.map +1 -1
- package/dist/commands/debug/index.d.ts.map +1 -1
- package/dist/commands/debug/index.js +43 -36
- package/dist/commands/debug/index.js.map +1 -1
- package/dist/commands/local/relevant-sessions.command.d.ts.map +1 -1
- package/dist/commands/local/relevant-sessions.command.js +6 -3
- package/dist/commands/local/relevant-sessions.command.js.map +1 -1
- package/dist/commands/project/show.command.d.ts.map +1 -1
- package/dist/commands/project/show.command.js +6 -3
- package/dist/commands/project/show.command.js.map +1 -1
- package/dist/commands/record/__tests__/login.command.spec.d.ts +2 -0
- package/dist/commands/record/__tests__/login.command.spec.d.ts.map +1 -0
- package/dist/commands/record/__tests__/login.command.spec.js +72 -0
- package/dist/commands/record/__tests__/login.command.spec.js.map +1 -0
- package/dist/commands/record/__tests__/session.command.spec.d.ts +2 -0
- package/dist/commands/record/__tests__/session.command.spec.d.ts.map +1 -0
- package/dist/commands/record/__tests__/session.command.spec.js +86 -0
- package/dist/commands/record/__tests__/session.command.spec.js.map +1 -0
- package/dist/commands/record/login.command.d.ts.map +1 -1
- package/dist/commands/record/login.command.js +9 -3
- package/dist/commands/record/login.command.js.map +1 -1
- package/dist/commands/record/session.command.d.ts.map +1 -1
- package/dist/commands/record/session.command.js +9 -3
- package/dist/commands/record/session.command.js.map +1 -1
- package/dist/commands/replay.command.d.ts.map +1 -1
- package/dist/commands/replay.command.js +11 -15
- package/dist/commands/replay.command.js.map +1 -1
- package/dist/commands/schema.command.d.ts +53 -0
- package/dist/commands/schema.command.d.ts.map +1 -1
- package/dist/commands/schema.command.js +232 -106
- package/dist/commands/schema.command.js.map +1 -1
- package/dist/commands/schema.command.spec.d.ts +2 -0
- package/dist/commands/schema.command.spec.d.ts.map +1 -0
- package/dist/commands/schema.command.spec.js +198 -0
- package/dist/commands/schema.command.spec.js.map +1 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +60 -48
- package/dist/main.js.map +1 -1
- package/dist/utils/__tests__/select-project.spec.js +6 -12
- package/dist/utils/__tests__/select-project.spec.js.map +1 -1
- package/dist/utils/select-project.d.ts +1 -3
- package/dist/utils/select-project.d.ts.map +1 -1
- package/dist/utils/select-project.js +6 -5
- package/dist/utils/select-project.js.map +1 -1
- package/package.json +9 -9
|
@@ -1,10 +1,11 @@
|
|
|
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]="
|
|
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]="7c46427f-0bd8-5b44-89b2-acad6e9443bb")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.jsCoverageCommand = exports.isAmbiguousTestRunError = exports.determineColumns = exports.assertTestRunOnlyFlagsUnsetForReplay = void 0;
|
|
5
|
+
exports.jsCoverageCommand = exports.isAmbiguousTestRunError = exports.coverageColumnValue = exports.coverageFileToJson = exports.determineColumns = exports.assertTestRunOnlyFlagsUnsetForReplay = void 0;
|
|
6
6
|
const client_1 = require("@alwaysmeticulous/client");
|
|
7
7
|
const common_1 = require("@alwaysmeticulous/common");
|
|
8
|
+
const print_json_1 = require("../../command-utils/print-json");
|
|
8
9
|
const sentry_utils_1 = require("../../command-utils/sentry.utils");
|
|
9
10
|
const cli_user_error_1 = require("../../utils/cli-user-error");
|
|
10
11
|
const format_coverage_ranges_1 = require("../../utils/format-coverage-ranges");
|
|
@@ -17,9 +18,8 @@ const COVERAGE_COLUMN_FLAG = {
|
|
|
17
18
|
uncoveredRanges: "includeUncoveredRanges",
|
|
18
19
|
coveragePercentage: "includeCoveragePercentage",
|
|
19
20
|
};
|
|
20
|
-
const log = (...args) => process.stderr.write(args.join(" ") + "\n");
|
|
21
21
|
const handler = async (options) => {
|
|
22
|
-
const { apiToken,
|
|
22
|
+
const { apiToken, testRunId, commitSha, dontWaitForTestRunToComplete, replayId, screenshotName, globFilter, json, } = options;
|
|
23
23
|
(0, common_1.initLogger)();
|
|
24
24
|
if (screenshotName != null && replayId == null) {
|
|
25
25
|
throw new cli_user_error_1.CliUserError("--screenshotName only applies to --replayId.");
|
|
@@ -47,12 +47,12 @@ const handler = async (options) => {
|
|
|
47
47
|
// selecting test-run coverage.
|
|
48
48
|
if (replayId != null) {
|
|
49
49
|
await printReplayCoverage(client, apiToken_, {
|
|
50
|
-
replayId,
|
|
51
|
-
screenshotName,
|
|
52
50
|
testRunId,
|
|
53
51
|
commitSha,
|
|
54
|
-
|
|
52
|
+
replayId,
|
|
53
|
+
screenshotName,
|
|
55
54
|
includeAllFiles: options.includeAllFiles,
|
|
55
|
+
globFilter,
|
|
56
56
|
json,
|
|
57
57
|
});
|
|
58
58
|
}
|
|
@@ -73,6 +73,15 @@ const handler = async (options) => {
|
|
|
73
73
|
}
|
|
74
74
|
const finishedStatus = await (0, resolve_test_run_from_commit_1.ensureTestRunFinished)(client, resolvedTestRunId, status, { dontWait: dontWaitForTestRunToComplete });
|
|
75
75
|
if (finishedStatus == null) {
|
|
76
|
+
// Keep stdout's shape stable: an unfinished run has no coverage yet, so
|
|
77
|
+
// emit the empty JSON array / a header-only TSV (matching a finished run
|
|
78
|
+
// with zero files) rather than nothing — the notice went to stderr.
|
|
79
|
+
if (json) {
|
|
80
|
+
console.log("[]");
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
console.log(["repoFilePath", ...columns].join("\t"));
|
|
84
|
+
}
|
|
76
85
|
return;
|
|
77
86
|
}
|
|
78
87
|
// Reject session-pool bases (Partial); fatal failures already threw.
|
|
@@ -133,7 +142,7 @@ const resolveTestRunIdForCommit = async (client, apiToken, commitSha) => {
|
|
|
133
142
|
const { testRunId } = await (0, resolve_test_run_from_commit_1.resolveTestRunForCommitOrThrow)(client, apiToken, commitSha);
|
|
134
143
|
return testRunId;
|
|
135
144
|
};
|
|
136
|
-
const printReplayCoverage = async (client, apiToken, {
|
|
145
|
+
const printReplayCoverage = async (client, apiToken, { testRunId, commitSha, replayId, screenshotName, includeAllFiles, globFilter, json, }) => {
|
|
137
146
|
// An explicit --commitSha selects the run client-side (the endpoint only
|
|
138
147
|
// understands testRunId); --testRunId is passed through as-is.
|
|
139
148
|
const effectiveTestRunId = testRunId ??
|
|
@@ -143,8 +152,8 @@ const printReplayCoverage = async (client, apiToken, { replayId, screenshotName,
|
|
|
143
152
|
try {
|
|
144
153
|
const result = await (0, client_1.getReplayJsCoverage)(client, replayId, screenshotName, {
|
|
145
154
|
testRunId: effectiveTestRunId,
|
|
146
|
-
globFilter,
|
|
147
155
|
includeAllFiles,
|
|
156
|
+
globFilter,
|
|
148
157
|
});
|
|
149
158
|
printReplayResult(result, json);
|
|
150
159
|
}
|
|
@@ -161,12 +170,12 @@ const printReplayCoverage = async (client, apiToken, { replayId, screenshotName,
|
|
|
161
170
|
try {
|
|
162
171
|
const result = await (0, client_1.getReplayJsCoverage)(client, replayId, screenshotName, {
|
|
163
172
|
testRunId: fallback.testRunId,
|
|
164
|
-
globFilter,
|
|
165
173
|
includeAllFiles,
|
|
174
|
+
globFilter,
|
|
166
175
|
});
|
|
167
176
|
// Only announce the fallback once it has actually worked, so a doomed
|
|
168
177
|
// retry doesn't leave a misleading "retrying against run X" line.
|
|
169
|
-
|
|
178
|
+
(0, common_1.logNotice)(`Replay is the head of multiple test runs; resolved coverage against test run ${fallback.testRunId} from the local commit.`);
|
|
170
179
|
printReplayResult(result, json);
|
|
171
180
|
return;
|
|
172
181
|
}
|
|
@@ -182,18 +191,23 @@ const printReplayCoverage = async (client, apiToken, { replayId, screenshotName,
|
|
|
182
191
|
}
|
|
183
192
|
};
|
|
184
193
|
const printReplayResult = (result, json) => {
|
|
185
|
-
if (json) {
|
|
186
|
-
console.log(JSON.stringify(result, null, 2));
|
|
187
|
-
return;
|
|
188
|
-
}
|
|
189
|
-
console.log(["repoFilePath", "executedRanges"].join("\t"));
|
|
190
194
|
// Replay coverage is keyed by repo path (source-map paths that don't resolve
|
|
191
195
|
// are dropped), matching the test-run shape.
|
|
192
196
|
const files = result.files ?? [];
|
|
193
|
-
|
|
194
|
-
|
|
197
|
+
if (json) {
|
|
198
|
+
(0, print_json_1.printJson)(files.map(([repoFilePath, executedRanges]) => ({
|
|
199
|
+
repoFilePath,
|
|
200
|
+
executedRanges,
|
|
201
|
+
})));
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
console.log(["repoFilePath", "executedRanges"].join("\t"));
|
|
205
|
+
for (const [filePath, ranges] of files) {
|
|
206
|
+
console.log([filePath, (0, format_coverage_ranges_1.formatCoverageRanges)(ranges)].join("\t"));
|
|
207
|
+
}
|
|
195
208
|
}
|
|
196
|
-
|
|
209
|
+
// Summary on stderr regardless of --json (which only changes stdout).
|
|
210
|
+
(0, common_1.logNotice)(`${files.length} file(s) with coverage`);
|
|
197
211
|
};
|
|
198
212
|
const printTestRunCoverage = async (client, testRunId, options, columns, json) => {
|
|
199
213
|
// Send the resolved columns as explicit flags (the default-to-executed rule
|
|
@@ -202,47 +216,76 @@ const printTestRunCoverage = async (client, testRunId, options, columns, json) =
|
|
|
202
216
|
// the same `columns` array the headers/formatting use, so they stay in sync.
|
|
203
217
|
const requestOptions = {
|
|
204
218
|
includeAllFiles: options.includeAllFiles,
|
|
205
|
-
prDiffOnly: options.prDiffOnly,
|
|
206
219
|
...(options.globFilter != null ? { globFilter: options.globFilter } : {}),
|
|
207
220
|
};
|
|
208
221
|
for (const column of columns) {
|
|
209
222
|
requestOptions[COVERAGE_COLUMN_FLAG[column]] = true;
|
|
210
223
|
}
|
|
224
|
+
requestOptions.prDiffOnly = options.prDiffOnly;
|
|
211
225
|
const result = await (0, client_1.getTestRunJsCoverage)(client, testRunId, requestOptions);
|
|
212
226
|
if (json) {
|
|
213
|
-
|
|
214
|
-
|
|
227
|
+
(0, print_json_1.printJson)(result.files.map((file) => (0, exports.coverageFileToJson)(file, columns)));
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
// Test-run coverage is the precomputed repo-mapped coverage, keyed by repo
|
|
231
|
+
// paths. Emit `repoFilePath` then the requested columns in fixed order.
|
|
232
|
+
console.log(["repoFilePath", ...columns].join("\t"));
|
|
233
|
+
for (const file of result.files) {
|
|
234
|
+
const fields = [
|
|
235
|
+
file.repoFilePath,
|
|
236
|
+
...columns.map((column) => formatCoverageColumn(file, column)),
|
|
237
|
+
];
|
|
238
|
+
console.log(fields.join("\t"));
|
|
239
|
+
}
|
|
215
240
|
}
|
|
216
|
-
//
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
241
|
+
// Summary on stderr regardless of --json (which only changes stdout).
|
|
242
|
+
(0, common_1.logNotice)(`${result.files.length} file(s)`);
|
|
243
|
+
};
|
|
244
|
+
// The JSON equivalent of a TSV row: `repoFilePath` plus the requested columns,
|
|
245
|
+
// with structured values (raw ranges / numeric percentage) rather than the
|
|
246
|
+
// TSV-formatted strings.
|
|
247
|
+
const coverageFileToJson = (file, columns) => {
|
|
248
|
+
const row = { repoFilePath: file.repoFilePath };
|
|
249
|
+
for (const column of columns) {
|
|
250
|
+
row[column] = (0, exports.coverageColumnValue)(file, column);
|
|
225
251
|
}
|
|
226
|
-
|
|
252
|
+
return row;
|
|
227
253
|
};
|
|
228
|
-
|
|
254
|
+
exports.coverageFileToJson = coverageFileToJson;
|
|
255
|
+
const coverageColumnValue = (file, column) => {
|
|
229
256
|
switch (column) {
|
|
230
257
|
case "executedRanges":
|
|
231
|
-
return
|
|
258
|
+
return file.executedRanges ?? [];
|
|
232
259
|
case "executableRanges":
|
|
233
|
-
return
|
|
260
|
+
return file.executableRanges ?? [];
|
|
234
261
|
case "uncoveredRanges":
|
|
235
|
-
return
|
|
262
|
+
return file.uncoveredRanges ?? [];
|
|
236
263
|
case "coveragePercentage":
|
|
237
|
-
return file.coveragePercentage
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
264
|
+
return file.coveragePercentage ?? null;
|
|
265
|
+
default:
|
|
266
|
+
return assertNever(column);
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
exports.coverageColumnValue = coverageColumnValue;
|
|
270
|
+
// The TSV rendering of a column: the same structured value as the JSON output,
|
|
271
|
+
// formatted as a string (ranges joined, percentage to 1dp, absent percentage as
|
|
272
|
+
// "n/a"). Delegating to `coverageColumnValue` keeps a single switch over the
|
|
273
|
+
// column union.
|
|
274
|
+
const formatCoverageColumn = (file, column) => {
|
|
275
|
+
const value = (0, exports.coverageColumnValue)(file, column);
|
|
276
|
+
if (typeof value === "number") {
|
|
277
|
+
return value.toFixed(1);
|
|
245
278
|
}
|
|
279
|
+
if (value == null) {
|
|
280
|
+
return "n/a";
|
|
281
|
+
}
|
|
282
|
+
return (0, format_coverage_ranges_1.formatCoverageRanges)(value);
|
|
283
|
+
};
|
|
284
|
+
// Exhaustiveness guard for the CoverageColumn switch in `coverageColumnValue`.
|
|
285
|
+
// Local to this package since the public CLI can't depend on the internal
|
|
286
|
+
// common-utils helper.
|
|
287
|
+
const assertNever = (value) => {
|
|
288
|
+
throw new Error(`Unhandled coverage column: ${String(value)}`);
|
|
246
289
|
};
|
|
247
290
|
const isAmbiguousTestRunError = (error) => (0, client_1.isFetchError)(error) &&
|
|
248
291
|
error.response?.data?.reason ===
|
|
@@ -250,13 +293,9 @@ const isAmbiguousTestRunError = (error) => (0, client_1.isFetchError)(error) &&
|
|
|
250
293
|
exports.isAmbiguousTestRunError = isAmbiguousTestRunError;
|
|
251
294
|
exports.jsCoverageCommand = {
|
|
252
295
|
command: "js-coverage",
|
|
253
|
-
describe: "Get JS coverage for a
|
|
296
|
+
describe: "Get JS coverage for a whole test run or a single replay. Outputs TSV, one row per repo file: repoFilePath plus the requested coverage columns (or JSON with --json).",
|
|
254
297
|
builder: {
|
|
255
298
|
apiToken: { string: true, description: "Meticulous API token" },
|
|
256
|
-
replayId: {
|
|
257
|
-
string: true,
|
|
258
|
-
description: "The replay ID. Pass the base or head replay to get each side's coverage. Repo file paths are resolved against the run that executed the replay; --testRunId / --commitSha may be combined to disambiguate when the replay was the head of more than one run.",
|
|
259
|
-
},
|
|
260
299
|
testRunId: {
|
|
261
300
|
string: true,
|
|
262
301
|
description: "The test run ID. On its own, returns coverage for the whole test run. Combined with --replayId, the replay must belong to this run (head or base); if it was this run's head, paths resolve against this run, otherwise against the replay's own execution run.",
|
|
@@ -265,14 +304,27 @@ exports.jsCoverageCommand = {
|
|
|
265
304
|
string: true,
|
|
266
305
|
description: "A commit SHA, used as an alternative to --testRunId: the latest test run for the commit is resolved and used. For whole-test-run coverage, defaults to the local git HEAD when neither --testRunId nor --commitSha is given.",
|
|
267
306
|
},
|
|
307
|
+
dontWaitForTestRunToComplete: {
|
|
308
|
+
boolean: true,
|
|
309
|
+
default: false,
|
|
310
|
+
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.",
|
|
311
|
+
},
|
|
312
|
+
replayId: {
|
|
313
|
+
string: true,
|
|
314
|
+
description: "The replay ID. Pass the base or head replay to get each side's coverage. Repo file paths are resolved against the run that executed the replay; --testRunId / --commitSha may be combined to disambiguate when the replay was the head of more than one run.",
|
|
315
|
+
},
|
|
268
316
|
screenshotName: {
|
|
269
317
|
string: true,
|
|
270
318
|
description: 'Screenshot name (e.g. "after-event-5" or "end-state"), for use with --replayId. Omit for the whole replay.',
|
|
271
319
|
},
|
|
272
|
-
|
|
320
|
+
includeAllFiles: {
|
|
273
321
|
boolean: true,
|
|
274
322
|
default: false,
|
|
275
|
-
description: "
|
|
323
|
+
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.",
|
|
324
|
+
},
|
|
325
|
+
globFilter: {
|
|
326
|
+
string: true,
|
|
327
|
+
description: 'Keep only repo file paths matching this gitignore-style glob, e.g. "src/components/**".',
|
|
276
328
|
},
|
|
277
329
|
includeExecutedRanges: {
|
|
278
330
|
boolean: true,
|
|
@@ -294,27 +346,13 @@ exports.jsCoverageCommand = {
|
|
|
294
346
|
default: false,
|
|
295
347
|
description: "Include the coverage percentage column (0–100; executed / executable lines per file). Whole-test-run coverage only.",
|
|
296
348
|
},
|
|
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
349
|
prDiffOnly: {
|
|
303
350
|
boolean: true,
|
|
304
351
|
default: false,
|
|
305
352
|
description: "Return only coverage for files changed in the PR diff (from coverage.pr.json). Whole-test-run coverage only.",
|
|
306
353
|
},
|
|
307
|
-
globFilter: {
|
|
308
|
-
string: true,
|
|
309
|
-
description: 'Keep only repo file paths matching this gitignore-style glob, e.g. "src/components/**".',
|
|
310
|
-
},
|
|
311
|
-
json: {
|
|
312
|
-
boolean: true,
|
|
313
|
-
description: "Output the raw coverage response as JSON",
|
|
314
|
-
default: false,
|
|
315
|
-
},
|
|
316
354
|
},
|
|
317
355
|
handler: (0, sentry_utils_1.wrapHandler)(handler),
|
|
318
356
|
};
|
|
319
357
|
//# sourceMappingURL=js-coverage.command.js.map
|
|
320
|
-
//# debugId=
|
|
358
|
+
//# debugId=7c46427f-0bd8-5b44-89b2-acad6e9443bb
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js-coverage.command.js","sources":["../../../src/commands/agent/js-coverage.command.ts"],"sourceRoot":"","names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"js-coverage.command.js","sources":["../../../src/commands/agent/js-coverage.command.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AAOA,qDAOkC;AAClC,qDAAiE;AAEjE,+DAA2D;AAC3D,mEAA+D;AAC/D,+DAA0D;AAC1D,+EAA0E;AAC1E,2FAMkD;AA6BlD,+EAA+E;AAC/E,wEAAwE;AACxE,MAAM,oBAAoB,GAMtB;IACF,cAAc,EAAE,uBAAuB;IACvC,gBAAgB,EAAE,yBAAyB;IAC3C,eAAe,EAAE,wBAAwB;IACzC,kBAAkB,EAAE,2BAA2B;CAChD,CAAC;AAEF,MAAM,OAAO,GAAG,KAAK,EAAE,OAAgB,EAAiB,EAAE;IACxD,MAAM,EACJ,QAAQ,EACR,SAAS,EACT,SAAS,EACT,4BAA4B,EAC5B,QAAQ,EACR,cAAc,EACd,UAAU,EACV,IAAI,GACL,GAAG,OAAO,CAAC;IACZ,IAAA,mBAAU,GAAE,CAAC;IAEb,IAAI,cAAc,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC/C,MAAM,IAAI,6BAAY,CAAC,8CAA8C,CAAC,CAAC;IACzE,CAAC;IAED,0EAA0E;IAC1E,0EAA0E;IAC1E,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QAC3C,MAAM,IAAI,6BAAY,CAAC,mDAAmD,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACrB,IAAA,4CAAoC,EAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,wBAAgB,EAAC,OAAO,CAAC,CAAC;IAE1C,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,4EAA4E;IAC5E,6EAA6E;IAC7E,uEAAuE;IACvE,+BAA+B;IAC/B,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE;YAC3C,SAAS;YACT,SAAS;YACT,QAAQ;YACR,cAAc;YACd,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,UAAU;YACV,IAAI;SACL,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,4EAA4E;QAC5E,2EAA2E;QAC3E,8EAA8E;QAC9E,uEAAuE;QACvE,IAAI,iBAAyB,CAAC;QAC9B,IAAI,MAAM,CAAC;QACX,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,iBAAiB,GAAG,SAAS,CAAC;YAC9B,MAAM,GAAG,CAAC,MAAM,IAAA,mBAAU,EAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE;gBACvC,MAAM,IAAA,6DAA8B,EAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,cAAc,GAAG,MAAM,IAAA,oDAAqB,EAChD,MAAM,EACN,iBAAiB,EACjB,MAAM,EACN,EAAE,QAAQ,EAAE,4BAA4B,EAAE,CAC3C,CAAC;QACF,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;YAC3B,wEAAwE;YACxE,yEAAyE;YACzE,oEAAoE;YACpE,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACvD,CAAC;YACD,OAAO;QACT,CAAC;QACD,qEAAqE;QACrE,IAAA,oDAAqB,EAAC,iBAAiB,EAAE,cAAc,EAAE;YACvD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAC;QACH,MAAM,oBAAoB,CACxB,MAAM,EACN,iBAAiB,EACjB,OAAO,EACP,OAAO,EACP,IAAI,CACL,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,gBAAgB;AACT,MAAM,oCAAoC,GAAG,CAClD,OAAgB,EACV,EAAE;IACR,MAAM,WAAW,GACf;QACE,CAAC,yBAAyB,EAAE,OAAO,CAAC,uBAAuB,CAAC;QAC5D,CAAC,wBAAwB,EAAE,OAAO,CAAC,sBAAsB,CAAC;QAC1D,CAAC,2BAA2B,EAAE,OAAO,CAAC,yBAAyB,CAAC;QAChE,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC;KAErC;SACE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAChC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,6BAAY,CACpB,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,8CAA8C,CAC3H,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAlBW,QAAA,oCAAoC,wCAkB/C;AAEF,2EAA2E;AAC3E,sEAAsE;AACtE,4CAA4C;AACrC,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAoB,EAAE;IACrE,MAAM,eAAe,GACnB,OAAO,CAAC,qBAAqB;QAC7B,CAAC,CAAC,OAAO,CAAC,uBAAuB;YAC/B,CAAC,OAAO,CAAC,sBAAsB;YAC/B,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACxC,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,OAAO,CAAC,yBAAyB,EAAE,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AApBW,QAAA,gBAAgB,oBAoB3B;AAEF,4EAA4E;AAC5E,+EAA+E;AAC/E,gFAAgF;AAChF,0EAA0E;AAC1E,yEAAyE;AACzE,MAAM,yBAAyB,GAAG,KAAK,EACrC,MAAwB,EACxB,QAAgB,EAChB,SAA6B,EACZ,EAAE;IACnB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAA,6DAA8B,EACxD,MAAM,EACN,QAAQ,EACR,SAAS,CACV,CAAC;IACF,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,EAC/B,MAAwB,EACxB,QAAgB,EAChB,EACE,SAAS,EACT,SAAS,EACT,QAAQ,EACR,cAAc,EACd,eAAe,EACf,UAAU,EACV,IAAI,GASL,EACc,EAAE;IACjB,yEAAyE;IACzE,+DAA+D;IAC/D,MAAM,kBAAkB,GACtB,SAAS;QACT,CAAC,SAAS,IAAI,IAAI;YAChB,CAAC,CAAC,MAAM,yBAAyB,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC;YAC9D,CAAC,CAAC,SAAS,CAAC,CAAC;IAEjB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAmB,EAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE;YACzE,SAAS,EAAE,kBAAkB;YAC7B,eAAe;YACf,UAAU;SACX,CAAC,CAAC;QACH,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,4EAA4E;QAC5E,0EAA0E;QAC1E,0EAA0E;QAC1E,0DAA0D;QAC1D,IAAI,kBAAkB,IAAI,IAAI,IAAI,IAAA,+BAAuB,EAAC,KAAK,CAAC,EAAE,CAAC;YACjE,MAAM,QAAQ,GAAG,MAAM,IAAA,yDAA0B,EAC/C,MAAM,EACN,QAAQ,EACR,SAAS,CACV,CAAC;YACF,wEAAwE;YACxE,wCAAwC;YACxC,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAA,gDAAiB,EAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3D,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAmB,EACtC,MAAM,EACN,QAAQ,EACR,cAAc,EACd;wBACE,SAAS,EAAE,QAAQ,CAAC,SAAS;wBAC7B,eAAe;wBACf,UAAU;qBACX,CACF,CAAC;oBACF,sEAAsE;oBACtE,kEAAkE;oBAClE,IAAA,kBAAS,EACP,gFAAgF,QAAQ,CAAC,SAAS,yBAAyB,CAC5H,CAAC;oBACF,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBAChC,OAAO;gBACT,CAAC;gBAAC,MAAM,CAAC;oBACP,oEAAoE;oBACpE,qEAAqE;oBACrE,6DAA6D;oBAC7D,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CACxB,MAAgC,EAChC,IAAa,EACP,EAAE;IACR,6EAA6E;IAC7E,6CAA6C;IAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IACjC,IAAI,IAAI,EAAE,CAAC;QACT,IAAA,sBAAS,EACP,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7C,YAAY;YACZ,cAAc;SACf,CAAC,CAAC,CACJ,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAA,6CAAoB,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,IAAA,kBAAS,EAAC,GAAG,KAAK,CAAC,MAAM,wBAAwB,CAAC,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,KAAK,EAChC,MAAwB,EACxB,SAAiB,EACjB,OAAgB,EAChB,OAAyB,EACzB,IAAa,EACE,EAAE;IACjB,4EAA4E;IAC5E,2EAA2E;IAC3E,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,cAAc,GAA6B;QAC/C,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1E,CAAC;IACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,cAAc,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IACtD,CAAC;IACD,cAAc,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAoB,EAAC,MAAM,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IAE7E,IAAI,IAAI,EAAE,CAAC;QACT,IAAA,sBAAS,EAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0BAAkB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;SAAM,CAAC;QACN,2EAA2E;QAC3E,wEAAwE;QACxE,OAAO,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG;gBACb,IAAI,CAAC,YAAY;gBACjB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;aAC/D,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,IAAA,kBAAS,EAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,UAAU,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF,+EAA+E;AAC/E,2EAA2E;AAC3E,yBAAyB;AAClB,MAAM,kBAAkB,GAAG,CAChC,IAAyB,EACzB,OAAyB,EACA,EAAE;IAC3B,MAAM,GAAG,GAA4B,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;IACzE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,GAAG,CAAC,MAAM,CAAC,GAAG,IAAA,2BAAmB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AATW,QAAA,kBAAkB,sBAS7B;AAEK,MAAM,mBAAmB,GAAG,CACjC,IAAyB,EACzB,MAAsB,EACU,EAAE;IAClC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,gBAAgB;YACnB,OAAO,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC;QACnC,KAAK,kBAAkB;YACrB,OAAO,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACrC,KAAK,iBAAiB;YACpB,OAAO,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;QACpC,KAAK,oBAAoB;YACvB,OAAO,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC;QACzC;YACE,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC,CAAC;AAhBW,QAAA,mBAAmB,uBAgB9B;AAEF,+EAA+E;AAC/E,gFAAgF;AAChF,6EAA6E;AAC7E,gBAAgB;AAChB,MAAM,oBAAoB,GAAG,CAC3B,IAAyB,EACzB,MAAsB,EACd,EAAE;IACV,MAAM,KAAK,GAAG,IAAA,2BAAmB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAA,6CAAoB,EAAC,KAAK,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,+EAA+E;AAC/E,0EAA0E;AAC1E,uBAAuB;AACvB,MAAM,WAAW,GAAG,CAAC,KAAY,EAAS,EAAE;IAC1C,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACjE,CAAC,CAAC;AAEK,MAAM,uBAAuB,GAAG,CAAC,KAAc,EAAW,EAAE,CACjE,IAAA,qBAAY,EAAC,KAAK,CAAC;IAClB,KAAK,CAAC,QAAQ,EAAE,IAAwC,EAAE,MAAM;QAC/D,oBAAoB,CAAC;AAHZ,QAAA,uBAAuB,2BAGX;AAEZ,QAAA,iBAAiB,GAAoC;IAChE,OAAO,EAAE,aAAa;IACtB,QAAQ,EACN,sKAAsK;IACxK,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,iQAAiQ;SACpQ;QACD,SAAS,EAAE;YACT,MAAM,EAAE,IAAI;YACZ,WAAW,EACT,8NAA8N;SACjO;QACD,4BAA4B,EAAE;YAC5B,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK;YACd,WAAW,EACT,gKAAgK;SACnK;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,IAAI;YACZ,WAAW,EACT,8PAA8P;SACjQ;QACD,cAAc,EAAE;YACd,MAAM,EAAE,IAAI;YACZ,WAAW,EACT,4GAA4G;SAC/G;QACD,eAAe,EAAE;YACf,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK;YACd,WAAW,EACT,6QAA6Q;SAChR;QACD,UAAU,EAAE;YACV,MAAM,EAAE,IAAI;YACZ,WAAW,EACT,yFAAyF;SAC5F;QACD,qBAAqB,EAAE;YACrB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK;YACd,WAAW,EACT,8HAA8H;SACjI;QACD,uBAAuB,EAAE;YACvB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK;YACd,WAAW,EACT,yGAAyG;SAC5G;QACD,sBAAsB,EAAE;YACtB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK;YACd,WAAW,EACT,qGAAqG;SACxG;QACD,yBAAyB,EAAE;YACzB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK;YACd,WAAW,EACT,qHAAqH;SACxH;QACD,UAAU,EAAE;YACV,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK;YACd,WAAW,EACT,8GAA8G;SACjH;KACF;IACD,OAAO,EAAE,IAAA,0BAAW,EAAC,OAAO,CAAC;CAC9B,CAAC","debugId":"7c46427f-0bd8-5b44-89b2-acad6e9443bb"}
|
|
@@ -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]="
|
|
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]="932b13d6-7c8c-58e3-b30c-a0066dc57836")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
const vitest_1 = require("vitest");
|
|
@@ -70,6 +70,52 @@ const baseOptions = (overrides = {}) => ({
|
|
|
70
70
|
}))).not.toThrow();
|
|
71
71
|
});
|
|
72
72
|
});
|
|
73
|
+
(0, vitest_1.describe)("coverageColumnValue", () => {
|
|
74
|
+
const file = {
|
|
75
|
+
repoFilePath: "src/a.ts",
|
|
76
|
+
executedRanges: [[1, 2]],
|
|
77
|
+
executableRanges: [[1, 5]],
|
|
78
|
+
uncoveredRanges: [[3, 5]],
|
|
79
|
+
coveragePercentage: 40,
|
|
80
|
+
};
|
|
81
|
+
(0, vitest_1.it)("returns the raw ranges for each range column", () => {
|
|
82
|
+
(0, vitest_1.expect)((0, js_coverage_command_1.coverageColumnValue)(file, "executedRanges")).toEqual([[1, 2]]);
|
|
83
|
+
(0, vitest_1.expect)((0, js_coverage_command_1.coverageColumnValue)(file, "executableRanges")).toEqual([[1, 5]]);
|
|
84
|
+
(0, vitest_1.expect)((0, js_coverage_command_1.coverageColumnValue)(file, "uncoveredRanges")).toEqual([[3, 5]]);
|
|
85
|
+
});
|
|
86
|
+
(0, vitest_1.it)("returns the numeric percentage (not the TSV-formatted string)", () => {
|
|
87
|
+
(0, vitest_1.expect)((0, js_coverage_command_1.coverageColumnValue)(file, "coveragePercentage")).toBe(40);
|
|
88
|
+
});
|
|
89
|
+
(0, vitest_1.it)("falls back to [] for a missing range column", () => {
|
|
90
|
+
(0, vitest_1.expect)((0, js_coverage_command_1.coverageColumnValue)({ repoFilePath: "src/b.ts" }, "executedRanges")).toEqual([]);
|
|
91
|
+
});
|
|
92
|
+
(0, vitest_1.it)("returns null for a null/absent coveragePercentage", () => {
|
|
93
|
+
(0, vitest_1.expect)((0, js_coverage_command_1.coverageColumnValue)({ repoFilePath: "src/b.ts", coveragePercentage: null }, "coveragePercentage")).toBeNull();
|
|
94
|
+
(0, vitest_1.expect)((0, js_coverage_command_1.coverageColumnValue)({ repoFilePath: "src/b.ts" }, "coveragePercentage")).toBeNull();
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
(0, vitest_1.describe)("coverageFileToJson", () => {
|
|
98
|
+
(0, vitest_1.it)("builds repoFilePath plus the requested columns, in structured form", () => {
|
|
99
|
+
const file = {
|
|
100
|
+
repoFilePath: "src/a.ts",
|
|
101
|
+
executedRanges: [[1, 2]],
|
|
102
|
+
coveragePercentage: 40,
|
|
103
|
+
};
|
|
104
|
+
(0, vitest_1.expect)((0, js_coverage_command_1.coverageFileToJson)(file, ["executedRanges", "coveragePercentage"])).toEqual({
|
|
105
|
+
repoFilePath: "src/a.ts",
|
|
106
|
+
executedRanges: [[1, 2]],
|
|
107
|
+
coveragePercentage: 40,
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
(0, vitest_1.it)("keeps a null coveragePercentage as null (rather than the 'n/a' TSV string)", () => {
|
|
111
|
+
(0, vitest_1.expect)((0, js_coverage_command_1.coverageFileToJson)({ repoFilePath: "src/b.ts", coveragePercentage: null }, ["coveragePercentage"])).toEqual({ repoFilePath: "src/b.ts", coveragePercentage: null });
|
|
112
|
+
});
|
|
113
|
+
(0, vitest_1.it)("emits only repoFilePath when no columns are requested", () => {
|
|
114
|
+
(0, vitest_1.expect)((0, js_coverage_command_1.coverageFileToJson)({ repoFilePath: "src/c.ts" }, [])).toEqual({
|
|
115
|
+
repoFilePath: "src/c.ts",
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
});
|
|
73
119
|
(0, vitest_1.describe)("isAmbiguousTestRunError", () => {
|
|
74
120
|
(0, vitest_1.it)("detects the ambiguous-test-run reason on a fetch error", () => {
|
|
75
121
|
(0, vitest_1.expect)((0, js_coverage_command_1.isAmbiguousTestRunError)({
|
|
@@ -86,4 +132,4 @@ const baseOptions = (overrides = {}) => ({
|
|
|
86
132
|
});
|
|
87
133
|
});
|
|
88
134
|
//# sourceMappingURL=js-coverage.command.spec.js.map
|
|
89
|
-
//# debugId=
|
|
135
|
+
//# debugId=932b13d6-7c8c-58e3-b30c-a0066dc57836
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js-coverage.command.spec.js","sources":["../../../src/commands/agent/js-coverage.command.spec.ts"],"sourceRoot":"","names":[],"mappings":";;;;
|
|
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":"932b13d6-7c8c-58e3-b30c-a0066dc57836"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenshot-dom-diff.command.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/screenshot-dom-diff.command.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"screenshot-dom-diff.command.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/screenshot-dom-diff.command.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAK3C,UAAU,OAAO;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;CACf;AAuDD,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CA4B1D,CAAC"}
|
|
@@ -1,41 +1,49 @@
|
|
|
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]="
|
|
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]="8cdbc90a-4012-5911-b7f0-5b672e4cccaf")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.domDiffCommand = void 0;
|
|
6
6
|
const client_1 = require("@alwaysmeticulous/client");
|
|
7
7
|
const common_1 = require("@alwaysmeticulous/common");
|
|
8
|
+
const print_json_1 = require("../../command-utils/print-json");
|
|
8
9
|
const sentry_utils_1 = require("../../command-utils/sentry.utils");
|
|
9
|
-
const
|
|
10
|
+
const cli_user_error_1 = require("../../utils/cli-user-error");
|
|
11
|
+
const handler = async ({ apiToken, replayDiffId, screenshotName, index, context, json, }) => {
|
|
10
12
|
(0, common_1.initLogger)();
|
|
11
13
|
const client = await (0, client_1.createClientWithOAuth)({
|
|
12
14
|
apiToken,
|
|
13
15
|
enableOAuthLogin: true,
|
|
14
16
|
});
|
|
15
17
|
const result = await (0, client_1.getScreenshotDomDiff)(client, replayDiffId, screenshotName, index, context);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
// An out-of-range --index is a user error regardless of output format.
|
|
19
|
+
if (result.diffs.length === 0 && result.totalDiffs > 0) {
|
|
20
|
+
throw new cli_user_error_1.CliUserError(`Index ${index} out of range (${result.totalDiffs} diff(s) available)`);
|
|
21
|
+
}
|
|
22
|
+
if (json) {
|
|
23
|
+
(0, print_json_1.printJson)(result.diffs.map((diff) => ({
|
|
24
|
+
index: diff.index,
|
|
25
|
+
content: diff.content,
|
|
26
|
+
})));
|
|
27
|
+
}
|
|
28
|
+
else if (result.diffs.length > 0) {
|
|
29
|
+
if (index != null) {
|
|
30
|
+
console.log(result.diffs[0].content);
|
|
19
31
|
}
|
|
20
32
|
else {
|
|
21
|
-
|
|
22
|
-
|
|
33
|
+
for (const diff of result.diffs) {
|
|
34
|
+
console.log(`[diff ${diff.index}]`);
|
|
35
|
+
console.log(diff.content);
|
|
36
|
+
}
|
|
23
37
|
}
|
|
24
|
-
return;
|
|
25
38
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
else {
|
|
30
|
-
for (const diff of result.diffs) {
|
|
31
|
-
console.log(`[diff ${diff.index}]`);
|
|
32
|
-
console.log(diff.content);
|
|
33
|
-
}
|
|
39
|
+
// Guidance on stderr regardless of --json (which only changes stdout).
|
|
40
|
+
if (result.diffs.length === 0) {
|
|
41
|
+
(0, common_1.logNotice)("No differences found");
|
|
34
42
|
}
|
|
35
43
|
};
|
|
36
44
|
exports.domDiffCommand = {
|
|
37
45
|
command: "dom-diff",
|
|
38
|
-
describe: "Get
|
|
46
|
+
describe: "Get the DOM diff for a replay diff screenshot. Outputs unified-diff-style text, one hunk per change (or JSON with --json).",
|
|
39
47
|
builder: {
|
|
40
48
|
apiToken: { string: true, description: "Meticulous API token" },
|
|
41
49
|
replayDiffId: {
|
|
@@ -60,4 +68,4 @@ exports.domDiffCommand = {
|
|
|
60
68
|
handler: (0, sentry_utils_1.wrapHandler)(handler),
|
|
61
69
|
};
|
|
62
70
|
//# sourceMappingURL=screenshot-dom-diff.command.js.map
|
|
63
|
-
//# debugId=
|
|
71
|
+
//# debugId=8cdbc90a-4012-5911-b7f0-5b672e4cccaf
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenshot-dom-diff.command.js","sources":["../../../src/commands/agent/screenshot-dom-diff.command.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AAAA,qDAGkC;AAClC,
|
|
1
|
+
{"version":3,"file":"screenshot-dom-diff.command.js","sources":["../../../src/commands/agent/screenshot-dom-diff.command.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AAAA,qDAGkC;AAClC,qDAAiE;AAEjE,+DAA2D;AAC3D,mEAA+D;AAC/D,+DAA0D;AAW1D,MAAM,OAAO,GAAG,KAAK,EAAE,EACrB,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,KAAK,EACL,OAAO,EACP,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,MAAM,GAAG,MAAM,IAAA,6BAAoB,EACvC,MAAM,EACN,YAAY,EACZ,cAAc,EACd,KAAK,EACL,OAAO,CACR,CAAC;IAEF,uEAAuE;IACvE,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,6BAAY,CACpB,SAAS,KAAK,kBAAkB,MAAM,CAAC,UAAU,qBAAqB,CACvE,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,IAAA,sBAAS,EACP,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC,CACJ,CAAC;IACJ,CAAC;SAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,IAAA,kBAAS,EAAC,sBAAsB,CAAC,CAAC;IACpC,CAAC;AACH,CAAC,CAAC;AAEW,QAAA,cAAc,GAAoC;IAC7D,OAAO,EAAE,UAAU;IACnB,QAAQ,EACN,4HAA4H;IAC9H,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;QACD,KAAK,EAAE;YACL,MAAM,EAAE,IAAI;YACZ,WAAW,EACT,qFAAqF;SACxF;QACD,OAAO,EAAE;YACP,MAAM,EAAE,IAAI;YACZ,WAAW,EACT,6JAA6J;SAChK;KACF;IACD,OAAO,EAAE,IAAA,0BAAW,EAAC,OAAO,CAAC;CAC9B,CAAC","debugId":"8cdbc90a-4012-5911-b7f0-5b672e4cccaf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenshot-image-files.command.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/screenshot-image-files.command.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"screenshot-image-files.command.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/screenshot-image-files.command.ts"],"names":[],"mappings":"AAWA,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;AAuGD,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAkB7D,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]="
|
|
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]="29851392-7f68-5575-8e94-30ceef853647")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.imageFilesCommand = void 0;
|
|
@@ -8,6 +8,7 @@ const path_1 = require("path");
|
|
|
8
8
|
const client_1 = require("@alwaysmeticulous/client");
|
|
9
9
|
const common_1 = require("@alwaysmeticulous/common");
|
|
10
10
|
const downloading_helpers_1 = require("@alwaysmeticulous/downloading-helpers");
|
|
11
|
+
const print_json_1 = require("../../command-utils/print-json");
|
|
11
12
|
const sentry_utils_1 = require("../../command-utils/sentry.utils");
|
|
12
13
|
const AGENT_IMAGES_SUBDIR = "agent-images";
|
|
13
14
|
const MAX_AGE_MS = 24 * 60 * 60 * 1000;
|
|
@@ -40,7 +41,7 @@ const downloadImage = async (dir, fileName, url) => {
|
|
|
40
41
|
await (0, downloading_helpers_1.downloadFile)(url, filePath);
|
|
41
42
|
return filePath;
|
|
42
43
|
};
|
|
43
|
-
const handler = async ({ apiToken, replayDiffId, screenshotName, }) => {
|
|
44
|
+
const handler = async ({ apiToken, replayDiffId, screenshotName, json, }) => {
|
|
44
45
|
(0, common_1.initLogger)();
|
|
45
46
|
const client = await (0, client_1.createClientWithOAuth)({
|
|
46
47
|
apiToken,
|
|
@@ -50,7 +51,6 @@ const handler = async ({ apiToken, replayDiffId, screenshotName, }) => {
|
|
|
50
51
|
const dir = getAgentImagesDir();
|
|
51
52
|
await (0, promises_1.mkdir)(dir, { recursive: true });
|
|
52
53
|
await cleanupOldImages(dir);
|
|
53
|
-
console.log(`outcome: ${urls.outcome}`);
|
|
54
54
|
const downloads = [];
|
|
55
55
|
if (urls.screenshot) {
|
|
56
56
|
downloads.push({ label: "screenshot", url: urls.screenshot });
|
|
@@ -66,14 +66,27 @@ const handler = async ({ apiToken, replayDiffId, screenshotName, }) => {
|
|
|
66
66
|
}
|
|
67
67
|
const timestamp = Date.now();
|
|
68
68
|
const prefix = `${timestamp}_${replayDiffId}_${screenshotName}`;
|
|
69
|
+
// Print the outcome up-front (non-JSON) so it's visible even if a download
|
|
70
|
+
// below fails; the JSON path emits it as part of the single object instead.
|
|
71
|
+
if (!json) {
|
|
72
|
+
console.log(`outcome: ${urls.outcome}`);
|
|
73
|
+
}
|
|
69
74
|
const results = await Promise.all(downloads.map(({ label, url }) => downloadImage(dir, `${prefix}_${label}.png`, url)));
|
|
75
|
+
if (json) {
|
|
76
|
+
const output = { outcome: urls.outcome };
|
|
77
|
+
for (let i = 0; i < downloads.length; i++) {
|
|
78
|
+
output[downloads[i].label] = results[i];
|
|
79
|
+
}
|
|
80
|
+
(0, print_json_1.printJson)(output);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
70
83
|
for (let i = 0; i < downloads.length; i++) {
|
|
71
84
|
console.log(`${downloads[i].label}: ${results[i]}`);
|
|
72
85
|
}
|
|
73
86
|
};
|
|
74
87
|
exports.imageFilesCommand = {
|
|
75
88
|
command: "image-files",
|
|
76
|
-
describe: "Download screenshot images for a replay diff screenshot to local files under ~/.meticulous/agent-images",
|
|
89
|
+
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
90
|
builder: {
|
|
78
91
|
apiToken: { string: true, description: "Meticulous API token" },
|
|
79
92
|
replayDiffId: {
|
|
@@ -90,4 +103,4 @@ exports.imageFilesCommand = {
|
|
|
90
103
|
handler: (0, sentry_utils_1.wrapHandler)(handler),
|
|
91
104
|
};
|
|
92
105
|
//# sourceMappingURL=screenshot-image-files.command.js.map
|
|
93
|
-
//# debugId=
|
|
106
|
+
//# debugId=29851392-7f68-5575-8e94-30ceef853647
|