@alwaysmeticulous/cli 2.318.0 → 2.322.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/print-json.d.ts.map +1 -1
- package/dist/command-utils/print-json.js +4 -3
- package/dist/command-utils/print-json.js.map +1 -1
- package/dist/commands/agent/diff-comments.command.d.ts +11 -0
- package/dist/commands/agent/diff-comments.command.d.ts.map +1 -0
- package/dist/commands/agent/diff-comments.command.js +83 -0
- package/dist/commands/agent/diff-comments.command.js.map +1 -0
- package/dist/commands/agent/diff-comments.command.spec.d.ts +2 -0
- package/dist/commands/agent/diff-comments.command.spec.d.ts.map +1 -0
- package/dist/commands/agent/diff-comments.command.spec.js +128 -0
- package/dist/commands/agent/diff-comments.command.spec.js.map +1 -0
- package/dist/commands/agent/index.d.ts.map +1 -1
- package/dist/commands/agent/index.js +4 -2
- package/dist/commands/agent/index.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.d.ts +3 -0
- package/dist/commands/agent/test-run-diffs.command.d.ts.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.js +47 -19
- package/dist/commands/agent/test-run-diffs.command.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.spec.js +65 -3
- package/dist/commands/agent/test-run-diffs.command.spec.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.d.ts +7 -24
- package/dist/commands/agent/test-run-diffs.utils.d.ts.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.js +18 -69
- package/dist/commands/agent/test-run-diffs.utils.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.spec.js +49 -224
- package/dist/commands/agent/test-run-diffs.utils.spec.js.map +1 -1
- package/dist/commands/ci/label-commit.command.d.ts +2 -7
- package/dist/commands/ci/label-commit.command.d.ts.map +1 -1
- package/dist/commands/ci/label-commit.command.js +5 -15
- package/dist/commands/ci/label-commit.command.js.map +1 -1
- package/dist/commands/ci/label-commit.core.d.ts +7 -0
- package/dist/commands/ci/label-commit.core.d.ts.map +1 -0
- package/dist/commands/ci/label-commit.core.js +28 -0
- package/dist/commands/ci/label-commit.core.js.map +1 -0
- package/dist/commands/ci/label-commit.types.d.ts +10 -0
- package/dist/commands/ci/label-commit.types.d.ts.map +1 -0
- package/dist/commands/ci/label-commit.types.js +6 -0
- package/dist/commands/ci/label-commit.types.js.map +1 -0
- package/dist/commands/ci/trigger-test-run.core.js +25 -3
- package/dist/commands/ci/trigger-test-run.core.js.map +1 -1
- package/dist/commands/ci/trigger-test-run.types.d.ts +11 -0
- package/dist/commands/ci/trigger-test-run.types.d.ts.map +1 -1
- package/dist/commands/ci/upload-container.command.d.ts +4 -0
- package/dist/commands/ci/upload-container.command.d.ts.map +1 -1
- package/dist/commands/ci/upload-container.command.js +18 -2
- package/dist/commands/ci/upload-container.command.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/package.json +13 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"print-json.d.ts","sourceRoot":"","sources":["../../src/command-utils/print-json.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"print-json.d.ts","sourceRoot":"","sources":["../../src/command-utils/print-json.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,SAAS,UAAW,OAAO,KAAG,IAE1C,CAAC"}
|
|
@@ -1,16 +1,17 @@
|
|
|
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]="2b5cc120-f13a-5096-8d83-5f4feb3c2cd8")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.printJson = void 0;
|
|
6
|
+
const json_1 = require("@alwaysmeticulous/common/json");
|
|
6
7
|
/**
|
|
7
8
|
* Prints a value as pretty-printed JSON on stdout — the single formatting
|
|
8
9
|
* decision (2-space indent, trailing newline) shared by every command's
|
|
9
10
|
* `--json` output, so machine-readable output stays consistent.
|
|
10
11
|
*/
|
|
11
12
|
const printJson = (value) => {
|
|
12
|
-
console.log(
|
|
13
|
+
console.log((0, json_1.serializeJson)(value));
|
|
13
14
|
};
|
|
14
15
|
exports.printJson = printJson;
|
|
15
16
|
//# sourceMappingURL=print-json.js.map
|
|
16
|
-
//# debugId=
|
|
17
|
+
//# debugId=2b5cc120-f13a-5096-8d83-5f4feb3c2cd8
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"print-json.js","sources":["../../src/command-utils/print-json.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AAAA;;;;GAIG;AACI,MAAM,SAAS,GAAG,CAAC,KAAc,EAAQ,EAAE;IAChD,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"print-json.js","sources":["../../src/command-utils/print-json.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AAAA,wDAA8D;AAE9D;;;;GAIG;AACI,MAAM,SAAS,GAAG,CAAC,KAAc,EAAQ,EAAE;IAChD,OAAO,CAAC,GAAG,CAAC,IAAA,oBAAa,EAAC,KAAK,CAAC,CAAC,CAAC;AACpC,CAAC,CAAC;AAFW,QAAA,SAAS,aAEpB","debugId":"2b5cc120-f13a-5096-8d83-5f4feb3c2cd8"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CommandModule } from "yargs";
|
|
2
|
+
interface Options {
|
|
3
|
+
apiToken?: string | null | undefined;
|
|
4
|
+
replayDiffId: string;
|
|
5
|
+
screenshotName: string;
|
|
6
|
+
includeResolved: boolean;
|
|
7
|
+
json: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const diffCommentsCommand: CommandModule<unknown, Options>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=diff-comments.command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-comments.command.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/diff-comments.command.ts"],"names":[],"mappings":"AAMA,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,eAAe,EAAE,OAAO,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;CACf;AAyED,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAyB/D,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
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]="2cf7770d-d89b-57a1-9000-d495a4dad27d")}catch(e){}}();
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.diffCommentsCommand = void 0;
|
|
6
|
+
const client_1 = require("@alwaysmeticulous/client");
|
|
7
|
+
const common_1 = require("@alwaysmeticulous/common");
|
|
8
|
+
const print_json_1 = require("../../command-utils/print-json");
|
|
9
|
+
const sentry_utils_1 = require("../../command-utils/sentry.utils");
|
|
10
|
+
const handler = async ({ apiToken, replayDiffId, screenshotName, includeResolved, json, }) => {
|
|
11
|
+
(0, common_1.initLogger)();
|
|
12
|
+
const client = await (0, client_1.createClientWithOAuth)({
|
|
13
|
+
apiToken,
|
|
14
|
+
enableOAuthLogin: true,
|
|
15
|
+
});
|
|
16
|
+
const comments = await (0, client_1.getDiffComments)(client, replayDiffId, screenshotName, {
|
|
17
|
+
includeResolved,
|
|
18
|
+
});
|
|
19
|
+
if (json) {
|
|
20
|
+
(0, print_json_1.printJson)(comments);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const columns = ["id", "replyToCommentId", "author", "text", "x", "y"];
|
|
24
|
+
if (includeResolved)
|
|
25
|
+
columns.push("isResolved");
|
|
26
|
+
console.log(columns.join("\t"));
|
|
27
|
+
for (const comment of flattenCommentsForTsv(comments)) {
|
|
28
|
+
console.log([
|
|
29
|
+
comment.id,
|
|
30
|
+
comment.replyToCommentId ?? "",
|
|
31
|
+
comment.author ?? "",
|
|
32
|
+
// Preserve a one-row-per-comment TSV shape for multiline/tabbed text.
|
|
33
|
+
JSON.stringify(comment.text),
|
|
34
|
+
comment.x.toFixed(5),
|
|
35
|
+
comment.y.toFixed(5),
|
|
36
|
+
...(includeResolved ? [comment.isResolved ?? false] : []),
|
|
37
|
+
].join("\t"));
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const flattenCommentsForTsv = (comments) => comments.flatMap((comment) => [
|
|
41
|
+
{
|
|
42
|
+
id: comment.id,
|
|
43
|
+
...(comment.author != null ? { author: comment.author } : {}),
|
|
44
|
+
text: comment.text,
|
|
45
|
+
x: comment.x,
|
|
46
|
+
y: comment.y,
|
|
47
|
+
...(comment.isResolved != null ? { isResolved: comment.isResolved } : {}),
|
|
48
|
+
},
|
|
49
|
+
...comment.replies.map((reply) => ({
|
|
50
|
+
id: reply.id,
|
|
51
|
+
replyToCommentId: comment.id,
|
|
52
|
+
...(reply.author != null ? { author: reply.author } : {}),
|
|
53
|
+
text: reply.text,
|
|
54
|
+
x: comment.x,
|
|
55
|
+
y: comment.y,
|
|
56
|
+
...(comment.isResolved != null ? { isResolved: comment.isResolved } : {}),
|
|
57
|
+
})),
|
|
58
|
+
]);
|
|
59
|
+
exports.diffCommentsCommand = {
|
|
60
|
+
command: "diff-comments",
|
|
61
|
+
describe: "Get the list of review comments for a given screenshot diff. Outputs a TSV table with columns id, replyToCommentId, author, text, x, y plus the requested additional columns, with each comment followed by its replies; comments and replies are in oldest-first order. replyToCommentId is TSV-only (blank for top-level comments, no JSON/MCP equivalent) so a reply row can be linked back to its parent; a reply's x/y repeat the parent's, since replies don't carry their own coordinates. Outputs only open comments by default. The text column is JSON-quoted (the only column that is) to keep multiline/tabbed comment bodies on one row.",
|
|
62
|
+
builder: {
|
|
63
|
+
apiToken: { string: true, description: "Meticulous API token." },
|
|
64
|
+
replayDiffId: {
|
|
65
|
+
string: true,
|
|
66
|
+
description: "The replay diff ID.",
|
|
67
|
+
demandOption: true,
|
|
68
|
+
},
|
|
69
|
+
screenshotName: {
|
|
70
|
+
string: true,
|
|
71
|
+
description: 'The screenshot name, as listed in the screenshotName column of `agent test-run-diffs` (e.g. "after-event-5" or "end-state").',
|
|
72
|
+
demandOption: true,
|
|
73
|
+
},
|
|
74
|
+
includeResolved: {
|
|
75
|
+
boolean: true,
|
|
76
|
+
description: "Output resolved comments in addition to open comments; adds an isResolved column with the comment's resolved state.",
|
|
77
|
+
default: false,
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
handler: (0, sentry_utils_1.wrapHandler)(handler),
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=diff-comments.command.js.map
|
|
83
|
+
//# debugId=2cf7770d-d89b-57a1-9000-d495a4dad27d
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-comments.command.js","sources":["../../../src/commands/agent/diff-comments.command.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"2cf7770d-d89b-57a1-9000-d495a4dad27d"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-comments.command.spec.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/diff-comments.command.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,128 @@
|
|
|
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]="4763084d-90c5-5042-a6d2-8404245a39a1")}catch(e){}}();
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
const vitest_1 = require("vitest");
|
|
6
|
+
const json_1 = require("@alwaysmeticulous/common/json");
|
|
7
|
+
const diff_comments_command_1 = require("./diff-comments.command");
|
|
8
|
+
vitest_1.vi.mock("../../command-utils/sentry.utils", () => ({
|
|
9
|
+
wrapHandler: (fn) => fn,
|
|
10
|
+
}));
|
|
11
|
+
const mocks = vitest_1.vi.hoisted(() => ({
|
|
12
|
+
createClientWithOAuth: vitest_1.vi.fn(),
|
|
13
|
+
getDiffComments: vitest_1.vi.fn(),
|
|
14
|
+
}));
|
|
15
|
+
vitest_1.vi.mock("@alwaysmeticulous/common", () => ({ initLogger: vitest_1.vi.fn() }));
|
|
16
|
+
vitest_1.vi.mock("@alwaysmeticulous/client", () => ({
|
|
17
|
+
createClientWithOAuth: mocks.createClientWithOAuth,
|
|
18
|
+
getDiffComments: mocks.getDiffComments,
|
|
19
|
+
}));
|
|
20
|
+
const runHandler = (json, includeResolved = false) => diff_comments_command_1.diffCommentsCommand.handler({
|
|
21
|
+
replayDiffId: "rd-1",
|
|
22
|
+
screenshotName: "after-event-5",
|
|
23
|
+
includeResolved,
|
|
24
|
+
json,
|
|
25
|
+
});
|
|
26
|
+
const comments = [
|
|
27
|
+
{
|
|
28
|
+
id: "comment-1",
|
|
29
|
+
x: 0.25,
|
|
30
|
+
y: 0.5,
|
|
31
|
+
text: "first\tline\nsecond line",
|
|
32
|
+
author: "Ada Lovelace",
|
|
33
|
+
replies: [
|
|
34
|
+
{
|
|
35
|
+
id: "reply-1",
|
|
36
|
+
author: "Grace Hopper",
|
|
37
|
+
text: "first reply",
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
id: "reply-2",
|
|
41
|
+
text: "second reply",
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: "comment-2",
|
|
47
|
+
x: 0.75,
|
|
48
|
+
y: 0.8,
|
|
49
|
+
text: "second comment",
|
|
50
|
+
replies: [],
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
(0, vitest_1.describe)("diff-comments command", () => {
|
|
54
|
+
let logSpy;
|
|
55
|
+
const stdoutText = () => logSpy.mock.calls.map(([value]) => String(value)).join("\n");
|
|
56
|
+
const stdoutBytes = () => logSpy.mock.calls.map(([value]) => `${String(value)}\n`).join("");
|
|
57
|
+
(0, vitest_1.beforeEach)(() => {
|
|
58
|
+
vitest_1.vi.clearAllMocks();
|
|
59
|
+
mocks.createClientWithOAuth.mockResolvedValue({});
|
|
60
|
+
mocks.getDiffComments.mockResolvedValue(comments);
|
|
61
|
+
logSpy = vitest_1.vi.spyOn(console, "log").mockImplementation(() => { });
|
|
62
|
+
});
|
|
63
|
+
(0, vitest_1.afterEach)(() => logSpy.mockRestore());
|
|
64
|
+
(0, vitest_1.it)("emits JSON byte-identical to the MCP tool result", async () => {
|
|
65
|
+
await runHandler(true);
|
|
66
|
+
(0, vitest_1.expect)(stdoutBytes()).toBe(`${(0, json_1.serializeJson)(comments)}\n`);
|
|
67
|
+
(0, vitest_1.expect)(mocks.getDiffComments).toHaveBeenCalledWith(vitest_1.expect.anything(), "rd-1", "after-event-5", { includeResolved: false });
|
|
68
|
+
});
|
|
69
|
+
(0, vitest_1.it)("flattens each comment followed by its replies in oldest-first order", async () => {
|
|
70
|
+
await runHandler(false);
|
|
71
|
+
const lines = stdoutText().split("\n");
|
|
72
|
+
(0, vitest_1.expect)(lines).toHaveLength(5);
|
|
73
|
+
(0, vitest_1.expect)(lines[0]).toBe(["id", "replyToCommentId", "author", "text", "x", "y"].join("\t"));
|
|
74
|
+
(0, vitest_1.expect)(lines[1].split("\t")).toEqual([
|
|
75
|
+
"comment-1",
|
|
76
|
+
"",
|
|
77
|
+
"Ada Lovelace",
|
|
78
|
+
'"first\\tline\\nsecond line"',
|
|
79
|
+
"0.25000",
|
|
80
|
+
"0.50000",
|
|
81
|
+
]);
|
|
82
|
+
(0, vitest_1.expect)(lines.slice(1).map((line) => line.split("\t")[0])).toEqual([
|
|
83
|
+
"comment-1",
|
|
84
|
+
"reply-1",
|
|
85
|
+
"reply-2",
|
|
86
|
+
"comment-2",
|
|
87
|
+
]);
|
|
88
|
+
(0, vitest_1.expect)(lines[2].split("\t")).toEqual([
|
|
89
|
+
"reply-1",
|
|
90
|
+
"comment-1",
|
|
91
|
+
"Grace Hopper",
|
|
92
|
+
'"first reply"',
|
|
93
|
+
"0.25000",
|
|
94
|
+
"0.50000",
|
|
95
|
+
]);
|
|
96
|
+
(0, vitest_1.expect)(lines[3].split("\t")).toEqual([
|
|
97
|
+
"reply-2",
|
|
98
|
+
"comment-1",
|
|
99
|
+
"",
|
|
100
|
+
'"second reply"',
|
|
101
|
+
"0.25000",
|
|
102
|
+
"0.50000",
|
|
103
|
+
]);
|
|
104
|
+
});
|
|
105
|
+
(0, vitest_1.it)("adds resolved comments and the isResolved column only when requested", async () => {
|
|
106
|
+
mocks.getDiffComments.mockResolvedValue(comments.map((comment, index) => ({
|
|
107
|
+
...comment,
|
|
108
|
+
isResolved: index === 0,
|
|
109
|
+
})));
|
|
110
|
+
await runHandler(false, true);
|
|
111
|
+
const lines = stdoutText().split("\n");
|
|
112
|
+
(0, vitest_1.expect)(lines[0]).toBe(["id", "replyToCommentId", "author", "text", "x", "y", "isResolved"].join("\t"));
|
|
113
|
+
(0, vitest_1.expect)(lines.slice(1).map((line) => line.split("\t").at(-1))).toEqual([
|
|
114
|
+
"true",
|
|
115
|
+
"true",
|
|
116
|
+
"true",
|
|
117
|
+
"false",
|
|
118
|
+
]);
|
|
119
|
+
(0, vitest_1.expect)(mocks.getDiffComments).toHaveBeenCalledWith(vitest_1.expect.anything(), "rd-1", "after-event-5", { includeResolved: true });
|
|
120
|
+
});
|
|
121
|
+
(0, vitest_1.it)("emits a header-only table when there are no comments", async () => {
|
|
122
|
+
mocks.getDiffComments.mockResolvedValue([]);
|
|
123
|
+
await runHandler(false);
|
|
124
|
+
(0, vitest_1.expect)(logSpy).toHaveBeenCalledTimes(1);
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
//# sourceMappingURL=diff-comments.command.spec.js.map
|
|
128
|
+
//# debugId=4763084d-90c5-5042-a6d2-8404245a39a1
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-comments.command.spec.js","sources":["../../../src/commands/agent/diff-comments.command.spec.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"4763084d-90c5-5042-a6d2-8404245a39a1"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAe3C,eAAO,MAAM,YAAY,EAAE,aAsC1B,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
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]="a9218534-e158-59cf-8f4a-98eb28e0efee")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.agentCommand = void 0;
|
|
6
|
+
const diff_comments_command_1 = require("./diff-comments.command");
|
|
6
7
|
const js_coverage_diff_command_1 = require("./js-coverage-diff.command");
|
|
7
8
|
const js_coverage_command_1 = require("./js-coverage.command");
|
|
8
9
|
const screenshot_dom_diff_command_1 = require("./screenshot-dom-diff.command");
|
|
@@ -21,6 +22,7 @@ exports.agentCommand = {
|
|
|
21
22
|
builder: (yargs) => yargs
|
|
22
23
|
.command(test_run_for_commit_command_1.testRunForCommitCommand)
|
|
23
24
|
.command(test_run_diffs_command_1.testRunDiffsCommand)
|
|
25
|
+
.command(diff_comments_command_1.diffCommentsCommand)
|
|
24
26
|
.command(js_coverage_command_1.jsCoverageCommand)
|
|
25
27
|
.command(js_coverage_diff_command_1.jsCoverageDiffCommand)
|
|
26
28
|
.command(screenshot_image_files_command_1.imageFilesCommand)
|
|
@@ -50,4 +52,4 @@ exports.agentCommand = {
|
|
|
50
52
|
},
|
|
51
53
|
};
|
|
52
54
|
//# sourceMappingURL=index.js.map
|
|
53
|
-
//# debugId=
|
|
55
|
+
//# debugId=a9218534-e158-59cf-8f4a-98eb28e0efee
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/commands/agent/index.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AACA,yEAAmE;AACnE,+DAA0D;AAC1D,+EAA+D;AAC/D,qFAAqE;AACrE,yEAA8D;AAC9D,yDAAqD;AACrD,uEAAkE;AAClE,qEAA+D;AAC/D,+EAAwE;AACxE,yDAAyD;AACzD,yEAAmE;AACnE,iEAA4D;AAE/C,QAAA,YAAY,GAAkB;IACzC,OAAO,EAAE,OAAO;IAChB,QAAQ,EACN,0EAA0E;IAC5E,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,OAAO,CAAC,qDAAuB,CAAC;SAChC,OAAO,CAAC,4CAAmB,CAAC;SAC5B,OAAO,CAAC,uCAAiB,CAAC;SAC1B,OAAO,CAAC,gDAAqB,CAAC;SAC9B,OAAO,CAAC,kDAAiB,CAAC;SAC1B,OAAO,CAAC,2CAAgB,CAAC;SACzB,OAAO,CAAC,4CAAc,CAAC;SACvB,OAAO,CAAC,sCAAmB,CAAC;SAC5B,OAAO,CAAC,yCAAkB,CAAC;SAC3B,OAAO,CAAC,gDAAqB,CAAC;SAC9B,OAAO,CAAC,kCAAe,CAAC;SACxB,OAAO,CAAC,+CAAqB,CAAC;SAC9B,MAAM,CAAC,SAAS,EAAE;QACjB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,WAAW,EACT,4GAA4G;KAC/G,CAAC;SACD,MAAM,CAAC,MAAM,EAAE;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,WAAW,EACT,oEAAoE;YACpE,gEAAgE;YAChE,0DAA0D;KAC7D,CAAC;SACD,aAAa,EAAE;SACf,IAAI,EAAE;IACX,OAAO,EAAE,GAAG,EAAE;QACZ,0BAA0B;IAC5B,CAAC;CACF,CAAC","debugId":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/commands/agent/index.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AACA,mEAA8D;AAC9D,yEAAmE;AACnE,+DAA0D;AAC1D,+EAA+D;AAC/D,qFAAqE;AACrE,yEAA8D;AAC9D,yDAAqD;AACrD,uEAAkE;AAClE,qEAA+D;AAC/D,+EAAwE;AACxE,yDAAyD;AACzD,yEAAmE;AACnE,iEAA4D;AAE/C,QAAA,YAAY,GAAkB;IACzC,OAAO,EAAE,OAAO;IAChB,QAAQ,EACN,0EAA0E;IAC5E,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,OAAO,CAAC,qDAAuB,CAAC;SAChC,OAAO,CAAC,4CAAmB,CAAC;SAC5B,OAAO,CAAC,2CAAmB,CAAC;SAC5B,OAAO,CAAC,uCAAiB,CAAC;SAC1B,OAAO,CAAC,gDAAqB,CAAC;SAC9B,OAAO,CAAC,kDAAiB,CAAC;SAC1B,OAAO,CAAC,2CAAgB,CAAC;SACzB,OAAO,CAAC,4CAAc,CAAC;SACvB,OAAO,CAAC,sCAAmB,CAAC;SAC5B,OAAO,CAAC,yCAAkB,CAAC;SAC3B,OAAO,CAAC,gDAAqB,CAAC;SAC9B,OAAO,CAAC,kCAAe,CAAC;SACxB,OAAO,CAAC,+CAAqB,CAAC;SAC9B,MAAM,CAAC,SAAS,EAAE;QACjB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,WAAW,EACT,4GAA4G;KAC/G,CAAC;SACD,MAAM,CAAC,MAAM,EAAE;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,WAAW,EACT,oEAAoE;YACpE,gEAAgE;YAChE,0DAA0D;KAC7D,CAAC;SACD,aAAa,EAAE;SACf,IAAI,EAAE;IACX,OAAO,EAAE,GAAG,EAAE;QACZ,0BAA0B;IAC5B,CAAC;CACF,CAAC","debugId":"a9218534-e158-59cf-8f4a-98eb28e0efee"}
|
|
@@ -5,10 +5,13 @@ interface Options {
|
|
|
5
5
|
commitSha: string | undefined;
|
|
6
6
|
dontWaitForTestRunToComplete: boolean;
|
|
7
7
|
includeReplayIds: boolean;
|
|
8
|
+
includeMismatchFraction: boolean;
|
|
9
|
+
includeReviews: boolean;
|
|
8
10
|
includeReviewDecisions: boolean;
|
|
9
11
|
includeDomDiffIds: boolean;
|
|
10
12
|
includeAllDiffs: boolean;
|
|
11
13
|
onlyUnreviewed: boolean;
|
|
14
|
+
onlyRejected: boolean;
|
|
12
15
|
orderByReplayDiffs: boolean;
|
|
13
16
|
counts: boolean;
|
|
14
17
|
json: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-run-diffs.command.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/test-run-diffs.command.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"test-run-diffs.command.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/test-run-diffs.command.ts"],"names":[],"mappings":"AASA,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,4BAA4B,EAAE,OAAO,CAAC;IACtC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,uBAAuB,EAAE,OAAO,CAAC;IACjC,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB,EAAE,OAAO,CAAC;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAuQD,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CA0F/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]="
|
|
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]="dae4fe9a-beb1-5abd-9bb4-6cd752555079")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.testRunDiffsCommand = void 0;
|
|
@@ -13,10 +13,18 @@ const test_run_diffs_utils_1 = require("./test-run-diffs.utils");
|
|
|
13
13
|
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
14
14
|
/** Give up polling the diffs summary after this long, rather than forever. */
|
|
15
15
|
const SUMMARY_POLL_TIMEOUT_MS = 10 * 60_000;
|
|
16
|
-
const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToComplete, includeReplayIds, includeReviewDecisions, includeDomDiffIds, includeAllDiffs, onlyUnreviewed, orderByReplayDiffs, counts, json, project, }) => {
|
|
16
|
+
const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToComplete, includeReplayIds, includeMismatchFraction, includeReviews, includeReviewDecisions, includeDomDiffIds, includeAllDiffs, onlyUnreviewed, onlyRejected, orderByReplayDiffs, counts, json, project, }) => {
|
|
17
17
|
if (testRunId != null && commitSha != null) {
|
|
18
18
|
throw new cli_user_error_1.CliUserError("Pass either --testRunId or --commitSha, not both.");
|
|
19
19
|
}
|
|
20
|
+
// A diff can't be both still awaiting review and rejected, so requesting both
|
|
21
|
+
// can only ever match nothing. Checked here rather than via yargs `conflicts`:
|
|
22
|
+
// both flags default to false, and yargs' conflict check fires on the option
|
|
23
|
+
// merely being *present* in argv (`!== undefined`) — true for every run,
|
|
24
|
+
// defaulted or not — so `conflicts` would reject every invocation.
|
|
25
|
+
if (onlyUnreviewed && onlyRejected) {
|
|
26
|
+
throw new cli_user_error_1.CliUserError("--onlyUnreviewed and --onlyRejected cannot both be set — a diff can't be both unreviewed and rejected.");
|
|
27
|
+
}
|
|
20
28
|
// --counts reports fixed aggregate totals from a dedicated endpoint that takes
|
|
21
29
|
// no list/filter options, so combining it with any of them is meaningless —
|
|
22
30
|
// reject it rather than silently ignoring them. Only --json (output format) and
|
|
@@ -24,11 +32,14 @@ const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToCom
|
|
|
24
32
|
if (counts) {
|
|
25
33
|
const incompatible = [
|
|
26
34
|
[includeReplayIds, "--includeReplayIds"],
|
|
35
|
+
[includeMismatchFraction, "--includeMismatchFraction"],
|
|
27
36
|
[includeDomDiffIds, "--includeDomDiffIds"],
|
|
28
37
|
[includeAllDiffs, "--includeAllDiffs"],
|
|
29
38
|
[orderByReplayDiffs, "--orderByReplayDiffs"],
|
|
39
|
+
[includeReviews, "--includeReviews"],
|
|
30
40
|
[includeReviewDecisions, "--includeReviewDecisions"],
|
|
31
41
|
[onlyUnreviewed, "--onlyUnreviewed"],
|
|
42
|
+
[onlyRejected, "--onlyRejected"],
|
|
32
43
|
]
|
|
33
44
|
.filter(([enabled]) => enabled)
|
|
34
45
|
.map(([, name]) => name);
|
|
@@ -66,15 +77,17 @@ const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToCom
|
|
|
66
77
|
resolvedTestRunId = run.testRunId;
|
|
67
78
|
status = run.status;
|
|
68
79
|
}
|
|
69
|
-
//
|
|
70
|
-
//
|
|
80
|
+
// Decision filters span every matching difference (selected or not), so they
|
|
81
|
+
// imply --includeAllDiffs: the isSelected column is included to tell them
|
|
71
82
|
// apart, matching the backend, which resolves the same implication.
|
|
72
|
-
const includeAllDiffsResolved = includeAllDiffs || onlyUnreviewed;
|
|
83
|
+
const includeAllDiffsResolved = includeAllDiffs || onlyUnreviewed || onlyRejected;
|
|
84
|
+
const includeReviewsResolved = includeReviews || includeReviewDecisions;
|
|
73
85
|
const columns = {
|
|
74
86
|
includeDomDiffIds,
|
|
75
87
|
includeAllDiffs: includeAllDiffsResolved,
|
|
76
88
|
includeReplayIds,
|
|
77
|
-
|
|
89
|
+
includeMismatchFraction,
|
|
90
|
+
includeReviews: includeReviewsResolved,
|
|
78
91
|
};
|
|
79
92
|
// Diffs are only meaningful once the run has finished with a verdict
|
|
80
93
|
// (Success/Failure). Block until it finishes (default) or, with
|
|
@@ -117,11 +130,13 @@ const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToCom
|
|
|
117
130
|
(0, common_1.logProgress)(`Fetching diffs summary for test run ${resolvedTestRunId}...`);
|
|
118
131
|
const diffsSummaryOptions = {
|
|
119
132
|
includeReplayIds,
|
|
133
|
+
includeMismatchFraction,
|
|
120
134
|
includeDomDiffIds,
|
|
121
135
|
includeAllDiffs: includeAllDiffsResolved,
|
|
122
136
|
orderByReplayDiffs,
|
|
123
|
-
|
|
137
|
+
includeReviews: includeReviewsResolved,
|
|
124
138
|
onlyUnreviewed,
|
|
139
|
+
onlyRejected,
|
|
125
140
|
};
|
|
126
141
|
let response = await (0, client_1.getTestRunDiffsSummary)(client, resolvedTestRunId, diffsSummaryOptions);
|
|
127
142
|
// A cold start finding the last computation already `failed` retriggers
|
|
@@ -162,18 +177,15 @@ const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToCom
|
|
|
162
177
|
response = await (0, client_1.getTestRunDiffsSummary)(client, resolvedTestRunId, diffsSummaryOptions);
|
|
163
178
|
}
|
|
164
179
|
const data = response.data ?? [];
|
|
165
|
-
// The backend sets `index` to a global rank — a flat priority rank by default,
|
|
166
|
-
// or a replayDiff-grouped rank under orderByReplayDiffs; rows sort by it.
|
|
167
|
-
const rows = (0, test_run_diffs_utils_1.flattenDiffRows)(data);
|
|
168
180
|
if (json) {
|
|
169
|
-
(0, print_json_1.printJson)(
|
|
181
|
+
(0, print_json_1.printJson)(data);
|
|
170
182
|
}
|
|
171
183
|
else {
|
|
172
184
|
// Always emit the TSV header so a zero-diff run is a header with no rows (the
|
|
173
185
|
// same shape as the in-progress short-circuit above), never empty stdout.
|
|
174
186
|
console.log((0, test_run_diffs_utils_1.buildDiffsSummaryHeader)(columns).join("\t"));
|
|
175
|
-
for (const
|
|
176
|
-
console.log((0, test_run_diffs_utils_1.formatDiffRow)(
|
|
187
|
+
for (const diff of data) {
|
|
188
|
+
console.log((0, test_run_diffs_utils_1.formatDiffRow)(diff, columns).join("\t"));
|
|
177
189
|
}
|
|
178
190
|
}
|
|
179
191
|
// Summaries on stderr regardless of --json (which only changes stdout).
|
|
@@ -181,13 +193,13 @@ const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToCom
|
|
|
181
193
|
(0, common_1.logNotice)(`Test run ${resolvedTestRunId} does not have diffs.`);
|
|
182
194
|
return;
|
|
183
195
|
}
|
|
184
|
-
const
|
|
196
|
+
const numReplayDiffs = new Set(data.map((diff) => diff.replayDiffId)).size;
|
|
185
197
|
const tEnd = performance.now();
|
|
186
|
-
(0, common_1.logNotice)(`${
|
|
198
|
+
(0, common_1.logNotice)(`${numReplayDiffs} replay diff(s), ${data.length} screenshot diff(s), total ${((tEnd - t0) / 1000).toFixed(1)}s`);
|
|
187
199
|
};
|
|
188
200
|
exports.testRunDiffsCommand = {
|
|
189
201
|
command: "test-run-diffs",
|
|
190
|
-
describe: "Get the list of screenshot diffs for a given test run (by default a selected subset of representative diffs in priority order). Outputs a TSV table with columns replayDiffId
|
|
202
|
+
describe: "Get the list of screenshot diffs for a given test run (by default a selected subset of representative diffs in priority order). Outputs a priority-ordered TSV table with columns replayDiffId and screenshotName plus the requested additional columns. Pass --counts to print just the totals instead of the list.",
|
|
191
203
|
builder: {
|
|
192
204
|
apiToken: { string: true, description: "Meticulous API token." },
|
|
193
205
|
testRunId: {
|
|
@@ -213,14 +225,30 @@ exports.testRunDiffsCommand = {
|
|
|
213
225
|
description: "Output only screenshot diffs still awaiting review (decision unreviewed), across every difference rather than just the selected subset — i.e. everything left to review. Implies --includeAllDiffs, so the isSelected column is included to tell selected from unselected differences.",
|
|
214
226
|
default: false,
|
|
215
227
|
},
|
|
228
|
+
onlyRejected: {
|
|
229
|
+
boolean: true,
|
|
230
|
+
description: "Output only screenshot diffs rejected during review (decision rejected), across every difference rather than just the selected subset — i.e. every diff already marked rejected. Implies --includeAllDiffs, so the isSelected column is included to tell selected from unselected differences.",
|
|
231
|
+
default: false,
|
|
232
|
+
},
|
|
216
233
|
includeReplayIds: {
|
|
217
234
|
boolean: true,
|
|
218
235
|
description: "Add baseReplayId and headReplayId columns with each diff's base and head replay IDs.",
|
|
219
236
|
default: false,
|
|
220
237
|
},
|
|
238
|
+
includeMismatchFraction: {
|
|
239
|
+
boolean: true,
|
|
240
|
+
description: "Add a mismatchFraction column with the fraction of pixels that differ between the before and after screenshots.",
|
|
241
|
+
default: false,
|
|
242
|
+
},
|
|
243
|
+
includeReviews: {
|
|
244
|
+
boolean: true,
|
|
245
|
+
description: "Add decision and openComments columns with the PR review decision and number of open review comments per diff.",
|
|
246
|
+
default: false,
|
|
247
|
+
},
|
|
221
248
|
includeReviewDecisions: {
|
|
222
249
|
boolean: true,
|
|
223
|
-
description: "
|
|
250
|
+
description: "Deprecated alias for --includeReviews.",
|
|
251
|
+
deprecated: "use --includeReviews instead",
|
|
224
252
|
default: false,
|
|
225
253
|
},
|
|
226
254
|
includeDomDiffIds: {
|
|
@@ -230,7 +258,7 @@ exports.testRunDiffsCommand = {
|
|
|
230
258
|
},
|
|
231
259
|
orderByReplayDiffs: {
|
|
232
260
|
boolean: true,
|
|
233
|
-
description: "Order the list by replay diff (a replay diff's differences
|
|
261
|
+
description: "Order the list by replay diff (a replay diff's differences are consecutive) instead of the default global priority order.",
|
|
234
262
|
default: false,
|
|
235
263
|
},
|
|
236
264
|
dontWaitForTestRunToComplete: {
|
|
@@ -247,4 +275,4 @@ exports.testRunDiffsCommand = {
|
|
|
247
275
|
handler: (0, sentry_utils_1.wrapHandler)(handler),
|
|
248
276
|
};
|
|
249
277
|
//# sourceMappingURL=test-run-diffs.command.js.map
|
|
250
|
-
//# debugId=
|
|
278
|
+
//# debugId=dae4fe9a-beb1-5abd-9bb4-6cd752555079
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-run-diffs.command.js","sources":["../../../src/commands/agent/test-run-diffs.command.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AACA,qDAMkC;AAClC,qDAAkE;AAElE,+DAA2D;AAC3D,mEAA+D;AAC/D,+DAA0D;AAC1D,2FAKkD;AAClD,
|
|
1
|
+
{"version":3,"file":"test-run-diffs.command.js","sources":["../../../src/commands/agent/test-run-diffs.command.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"dae4fe9a-beb1-5abd-9bb4-6cd752555079"}
|