@alwaysmeticulous/cli 2.305.0 → 2.307.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/commands/agent/index.js +8 -8
- package/dist/commands/agent/index.js.map +1 -1
- package/dist/commands/agent/js-coverage.command.d.ts +5 -0
- package/dist/commands/agent/js-coverage.command.d.ts.map +1 -1
- package/dist/commands/agent/js-coverage.command.js +120 -24
- 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.map +1 -1
- package/dist/commands/agent/screenshot-dom-diff.command.js +3 -3
- package/dist/commands/agent/screenshot-dom-diff.command.js.map +1 -1
- package/dist/commands/agent/screenshot-image-files.command.d.ts.map +1 -1
- package/dist/commands/agent/screenshot-image-files.command.js +3 -3
- package/dist/commands/agent/screenshot-image-files.command.js.map +1 -1
- package/dist/commands/agent/screenshot-image.command.d.ts.map +1 -1
- package/dist/commands/agent/screenshot-image.command.js +3 -3
- package/dist/commands/agent/screenshot-image.command.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.d.ts +1 -1
- package/dist/commands/agent/test-run-diffs.command.d.ts.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.js +39 -31
- package/dist/commands/agent/test-run-diffs.command.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.spec.d.ts +2 -0
- package/dist/commands/agent/test-run-diffs.command.spec.d.ts.map +1 -0
- package/dist/commands/agent/test-run-diffs.command.spec.js +148 -0
- package/dist/commands/agent/test-run-diffs.command.spec.js.map +1 -0
- package/dist/commands/agent/test-run-diffs.utils.d.ts +14 -26
- package/dist/commands/agent/test-run-diffs.utils.d.ts.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.js +23 -35
- package/dist/commands/agent/test-run-diffs.utils.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.spec.js +15 -58
- package/dist/commands/agent/test-run-diffs.utils.spec.js.map +1 -1
- package/dist/commands/agent/test-run-for-commit.command.d.ts +1 -0
- package/dist/commands/agent/test-run-for-commit.command.d.ts.map +1 -1
- package/dist/commands/agent/test-run-for-commit.command.js +11 -12
- package/dist/commands/agent/test-run-for-commit.command.js.map +1 -1
- package/dist/commands/agent/trigger-test-run.command.d.ts +1 -0
- package/dist/commands/agent/trigger-test-run.command.d.ts.map +1 -1
- package/dist/commands/agent/trigger-test-run.command.js +8 -6
- package/dist/commands/agent/trigger-test-run.command.js.map +1 -1
- package/dist/commands/agent/upload-build.command.js +3 -3
- package/dist/commands/agent/upload-build.command.js.map +1 -1
- package/dist/commands/auth/__tests__/get-project.command.spec.d.ts +2 -0
- package/dist/commands/auth/__tests__/get-project.command.spec.d.ts.map +1 -0
- package/dist/commands/auth/__tests__/get-project.command.spec.js +72 -0
- package/dist/commands/auth/__tests__/get-project.command.spec.js.map +1 -0
- package/dist/commands/auth/__tests__/login.command.spec.js +13 -29
- package/dist/commands/auth/__tests__/login.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/logout.command.spec.js +3 -6
- package/dist/commands/auth/__tests__/logout.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/set-project.command.spec.d.ts +2 -0
- package/dist/commands/auth/__tests__/set-project.command.spec.d.ts.map +1 -0
- package/dist/commands/auth/__tests__/set-project.command.spec.js +60 -0
- package/dist/commands/auth/__tests__/set-project.command.spec.js.map +1 -0
- package/dist/commands/auth/__tests__/whoami.command.spec.js +16 -8
- package/dist/commands/auth/__tests__/whoami.command.spec.js.map +1 -1
- package/dist/commands/auth/get-project.command.d.ts +10 -0
- package/dist/commands/auth/get-project.command.d.ts.map +1 -0
- package/dist/commands/auth/get-project.command.js +49 -0
- package/dist/commands/auth/get-project.command.js.map +1 -0
- package/dist/commands/auth/index.js +4 -4
- package/dist/commands/auth/index.js.map +1 -1
- package/dist/commands/auth/login.command.d.ts.map +1 -1
- package/dist/commands/auth/login.command.js +9 -24
- package/dist/commands/auth/login.command.js.map +1 -1
- package/dist/commands/auth/logout.command.d.ts.map +1 -1
- package/dist/commands/auth/logout.command.js +6 -4
- package/dist/commands/auth/logout.command.js.map +1 -1
- package/dist/commands/auth/whoami.command.d.ts.map +1 -1
- package/dist/commands/auth/whoami.command.js +10 -22
- package/dist/commands/auth/whoami.command.js.map +1 -1
- package/dist/commands/ci/__tests__/session-filter.utils.spec.d.ts +2 -0
- package/dist/commands/ci/__tests__/session-filter.utils.spec.d.ts.map +1 -0
- package/dist/commands/ci/__tests__/session-filter.utils.spec.js +66 -0
- package/dist/commands/ci/__tests__/session-filter.utils.spec.js.map +1 -0
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.d.ts +1 -0
- 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 +29 -4
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js.map +1 -1
- package/dist/commands/ci/session-filter.utils.d.ts +25 -0
- package/dist/commands/ci/session-filter.utils.d.ts.map +1 -0
- package/dist/commands/ci/session-filter.utils.js +80 -0
- package/dist/commands/ci/session-filter.utils.js.map +1 -0
- package/dist/commands/ci/trigger-test-run.core.js +3 -3
- package/dist/commands/ci/trigger-test-run.core.js.map +1 -1
- package/dist/commands/ci/upload-asset-chunk.command.js +3 -3
- package/dist/commands/ci/upload-asset-chunk.command.js.map +1 -1
- package/dist/commands/debug/index.d.ts.map +1 -1
- package/dist/commands/debug/index.js +6 -9
- package/dist/commands/debug/index.js.map +1 -1
- package/dist/commands/local/relevant-sessions.command.js +3 -3
- package/dist/commands/local/relevant-sessions.command.js.map +1 -1
- package/dist/commands/project/show.command.js +3 -3
- package/dist/commands/project/show.command.js.map +1 -1
- package/dist/commands/record/__tests__/login.command.spec.js +5 -3
- package/dist/commands/record/__tests__/login.command.spec.js.map +1 -1
- package/dist/commands/record/__tests__/session.command.spec.js +5 -3
- package/dist/commands/record/__tests__/session.command.spec.js.map +1 -1
- package/dist/commands/record/login.command.js +3 -3
- package/dist/commands/record/login.command.js.map +1 -1
- package/dist/commands/record/session.command.js +3 -3
- package/dist/commands/record/session.command.js.map +1 -1
- package/dist/utils/__tests__/resolve-project-identifier.spec.js +36 -32
- package/dist/utils/__tests__/resolve-project-identifier.spec.js.map +1 -1
- package/dist/utils/__tests__/select-project.spec.js +135 -47
- package/dist/utils/__tests__/select-project.spec.js.map +1 -1
- package/dist/utils/handle-auth-failure.d.ts +1 -0
- package/dist/utils/handle-auth-failure.d.ts.map +1 -1
- package/dist/utils/handle-auth-failure.js +5 -4
- package/dist/utils/handle-auth-failure.js.map +1 -1
- package/dist/utils/resolve-project-identifier.d.ts +12 -10
- package/dist/utils/resolve-project-identifier.d.ts.map +1 -1
- package/dist/utils/resolve-project-identifier.js +29 -18
- package/dist/utils/resolve-project-identifier.js.map +1 -1
- package/dist/utils/resolve-test-run-from-commit.d.ts +6 -2
- package/dist/utils/resolve-test-run-from-commit.d.ts.map +1 -1
- package/dist/utils/resolve-test-run-from-commit.js +10 -9
- package/dist/utils/resolve-test-run-from-commit.js.map +1 -1
- package/dist/utils/select-project.d.ts +37 -13
- package/dist/utils/select-project.d.ts.map +1 -1
- package/dist/utils/select-project.js +111 -41
- package/dist/utils/select-project.js.map +1 -1
- package/package.json +10 -9
- package/dist/commands/auth/unset-project.command.d.ts +0 -3
- package/dist/commands/auth/unset-project.command.d.ts.map +0 -1
- package/dist/commands/auth/unset-project.command.js +0 -27
- package/dist/commands/auth/unset-project.command.js.map +0 -1
|
@@ -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]="ae6e7fd0-5bdc-5a0b-94e2-2a83edc7d8c3")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.imageUrlsCommand = void 0;
|
|
@@ -44,11 +44,11 @@ exports.imageUrlsCommand = {
|
|
|
44
44
|
},
|
|
45
45
|
screenshotName: {
|
|
46
46
|
string: true,
|
|
47
|
-
description: 'Screenshot name (e.g. "after-event-5"
|
|
47
|
+
description: 'Screenshot name, exactly as listed in the screenshotName column of `agent test-run-diffs` for this replay diff (e.g. "after-event-5", "end-state", or "auxiliary-291-0-exit_animation")',
|
|
48
48
|
demandOption: true,
|
|
49
49
|
},
|
|
50
50
|
},
|
|
51
51
|
handler: (0, sentry_utils_1.wrapHandler)(handler),
|
|
52
52
|
};
|
|
53
53
|
//# sourceMappingURL=screenshot-image.command.js.map
|
|
54
|
-
//# debugId=
|
|
54
|
+
//# debugId=ae6e7fd0-5bdc-5a0b-94e2-2a83edc7d8c3
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenshot-image.command.js","sources":["../../../src/commands/agent/screenshot-image.command.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AAAA,qDAGkC;AAClC,qDAAsD;AAEtD,+DAA2D;AAC3D,mEAA+D;AAS/D,MAAM,OAAO,GAAG,KAAK,EAAE,EACrB,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,IAAI,GACI,EAAiB,EAAE;IAC3B,IAAA,mBAAU,GAAE,CAAC;IACb,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAqB,EAAC;QACzC,QAAQ;QACR,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAiB,EAAC,MAAM,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;IAE3E,IAAI,IAAI,EAAE,CAAC;QACT,IAAA,sBAAS,EAAC,IAAI,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC,CAAC;AAEW,QAAA,gBAAgB,GAAoC;IAC/D,OAAO,EAAE,YAAY;IACrB,QAAQ,EACN,yJAAyJ;IAC3J,OAAO,EAAE;QACP,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;QAC/D,YAAY,EAAE;YACZ,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,oBAAoB;YACjC,YAAY,EAAE,IAAI;SACnB;QACD,cAAc,EAAE;YACd,MAAM,EAAE,IAAI;YACZ,WAAW,
|
|
1
|
+
{"version":3,"file":"screenshot-image.command.js","sources":["../../../src/commands/agent/screenshot-image.command.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AAAA,qDAGkC;AAClC,qDAAsD;AAEtD,+DAA2D;AAC3D,mEAA+D;AAS/D,MAAM,OAAO,GAAG,KAAK,EAAE,EACrB,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,IAAI,GACI,EAAiB,EAAE;IAC3B,IAAA,mBAAU,GAAE,CAAC;IACb,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAqB,EAAC;QACzC,QAAQ;QACR,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAiB,EAAC,MAAM,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;IAE3E,IAAI,IAAI,EAAE,CAAC;QACT,IAAA,sBAAS,EAAC,IAAI,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC,CAAC;AAEW,QAAA,gBAAgB,GAAoC;IAC/D,OAAO,EAAE,YAAY;IACrB,QAAQ,EACN,yJAAyJ;IAC3J,OAAO,EAAE;QACP,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE;QAC/D,YAAY,EAAE;YACZ,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,oBAAoB;YACjC,YAAY,EAAE,IAAI;SACnB;QACD,cAAc,EAAE;YACd,MAAM,EAAE,IAAI;YACZ,WAAW,EACT,yLAAyL;YAC3L,YAAY,EAAE,IAAI;SACnB;KACF;IACD,OAAO,EAAE,IAAA,0BAAW,EAAC,OAAO,CAAC;CAC9B,CAAC","debugId":"ae6e7fd0-5bdc-5a0b-94e2-2a83edc7d8c3"}
|
|
@@ -7,9 +7,9 @@ interface Options {
|
|
|
7
7
|
includeReplayIds: boolean;
|
|
8
8
|
includeDomDiffIds: boolean;
|
|
9
9
|
includeAllDiffs: boolean;
|
|
10
|
-
includeMatches: boolean;
|
|
11
10
|
orderByReplayDiffs: boolean;
|
|
12
11
|
json: boolean;
|
|
12
|
+
project?: string | undefined;
|
|
13
13
|
}
|
|
14
14
|
export declare const testRunDiffsCommand: CommandModule<unknown, Options>;
|
|
15
15
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-run-diffs.command.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/test-run-diffs.command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test-run-diffs.command.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/test-run-diffs.command.ts"],"names":[],"mappings":"AAOA,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,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAoLD,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAqD/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]="946d252c-7ec9-5eed-bab5-f9cb175d5dbf")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.testRunDiffsCommand = void 0;
|
|
@@ -13,14 +13,10 @@ 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, includeDomDiffIds, includeAllDiffs,
|
|
16
|
+
const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToComplete, includeReplayIds, includeDomDiffIds, includeAllDiffs, orderByReplayDiffs, 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
|
-
const apiToken_ = await (0, client_1.resolveApiTokenWithOAuth)({
|
|
21
|
-
apiToken,
|
|
22
|
-
enableOAuthLogin: true,
|
|
23
|
-
});
|
|
24
20
|
const client = await (0, client_1.createClientWithOAuth)({
|
|
25
21
|
apiToken,
|
|
26
22
|
enableOAuthLogin: true,
|
|
@@ -34,19 +30,14 @@ const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToCom
|
|
|
34
30
|
status = (await (0, client_1.getTestRun)({ client, testRunId })).status;
|
|
35
31
|
}
|
|
36
32
|
else {
|
|
37
|
-
const run = await (0, resolve_test_run_from_commit_1.resolveTestRunForCommitOrThrow)(client,
|
|
33
|
+
const run = await (0, resolve_test_run_from_commit_1.resolveTestRunForCommitOrThrow)(client, commitSha, project);
|
|
38
34
|
resolvedTestRunId = run.testRunId;
|
|
39
35
|
status = run.status;
|
|
40
36
|
}
|
|
41
|
-
// --includeMatches implies --includeAllDiffs (matches are never part of the
|
|
42
|
-
// selected subset, so they only make sense alongside the full set). Use the
|
|
43
|
-
// effective value for both the request and the isSelected column. Computed
|
|
44
|
-
// up-front so the header can be emitted even on the in-progress short-circuit.
|
|
45
|
-
const allDiffs = (0, test_run_diffs_utils_1.resolveIncludeAllDiffs)({ includeAllDiffs, includeMatches });
|
|
46
37
|
const columns = {
|
|
47
38
|
orderByReplayDiffs,
|
|
48
39
|
includeDomDiffIds,
|
|
49
|
-
includeAllDiffs
|
|
40
|
+
includeAllDiffs,
|
|
50
41
|
includeReplayIds,
|
|
51
42
|
};
|
|
52
43
|
// Diffs are only meaningful once the run has finished with a verdict
|
|
@@ -75,18 +66,39 @@ const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToCom
|
|
|
75
66
|
const diffsSummaryOptions = {
|
|
76
67
|
includeReplayIds,
|
|
77
68
|
includeDomDiffIds,
|
|
78
|
-
includeAllDiffs
|
|
79
|
-
includeMatches,
|
|
69
|
+
includeAllDiffs,
|
|
80
70
|
orderByReplayDiffs,
|
|
81
71
|
};
|
|
82
72
|
let response = await (0, client_1.getTestRunDiffsSummary)(client, resolvedTestRunId, diffsSummaryOptions);
|
|
73
|
+
// A cold start finding the last computation already `failed` retriggers
|
|
74
|
+
// once, up front — before the poll deadline below is computed, so the fresh
|
|
75
|
+
// run always gets the full timeout. This is a one-shot decision made only
|
|
76
|
+
// here, not inside the poll loop: once we're polling, a `failed` result is
|
|
77
|
+
// reported and the command exits, it never retriggers again.
|
|
78
|
+
if (response.status === "failed") {
|
|
79
|
+
(0, common_1.logProgress)(`Diffs computation failed for test run ${resolvedTestRunId}; retriggering...`);
|
|
80
|
+
response = await (0, client_1.getTestRunDiffsSummary)(client, resolvedTestRunId, {
|
|
81
|
+
...diffsSummaryOptions,
|
|
82
|
+
retrigger: true,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
83
85
|
// Poll until complete (or give up after the timeout, rather than forever).
|
|
84
86
|
// A single line when we start waiting — no per-poll output.
|
|
85
87
|
const summaryDeadline = performance.now() + SUMMARY_POLL_TIMEOUT_MS;
|
|
86
88
|
if (response.status === "pending" || response.status === "processing") {
|
|
87
89
|
(0, common_1.logProgress)(`Waiting for diff results for test run ${resolvedTestRunId}...`);
|
|
88
90
|
}
|
|
89
|
-
while (response.status
|
|
91
|
+
while (response.status !== "complete") {
|
|
92
|
+
if (response.status === "failed") {
|
|
93
|
+
const reasonSuffix = response.reason != null ? ` (${response.reason})` : "";
|
|
94
|
+
(0, common_1.logNotice)(`Diffs summary computation failed${reasonSuffix} for test run ${resolvedTestRunId}. ` +
|
|
95
|
+
`Something may have gone wrong — try again later.`);
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
if (response.status !== "pending" && response.status !== "processing") {
|
|
99
|
+
(0, common_1.logNotice)(`Error: unexpected status "${String(response.status)}"`);
|
|
100
|
+
process.exit(1);
|
|
101
|
+
}
|
|
90
102
|
if (performance.now() >= summaryDeadline) {
|
|
91
103
|
(0, common_1.logNotice)(`Diffs summary for test run ${resolvedTestRunId} did not complete within 10 minutes ` +
|
|
92
104
|
`(status: ${response.status}). Something may have gone wrong — try again later.`);
|
|
@@ -95,14 +107,10 @@ const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToCom
|
|
|
95
107
|
await sleep(2000);
|
|
96
108
|
response = await (0, client_1.getTestRunDiffsSummary)(client, resolvedTestRunId, diffsSummaryOptions);
|
|
97
109
|
}
|
|
98
|
-
if (response.status !== "complete") {
|
|
99
|
-
(0, common_1.logNotice)(`Error: unexpected status "${response.status}"`);
|
|
100
|
-
process.exit(1);
|
|
101
|
-
}
|
|
102
110
|
const data = response.data ?? [];
|
|
103
|
-
// The backend sets `index` to
|
|
104
|
-
//
|
|
105
|
-
const rows = (0, test_run_diffs_utils_1.flattenDiffRows)(data
|
|
111
|
+
// The backend sets `index` to a global rank — a flat priority rank by default,
|
|
112
|
+
// or a replayDiff-grouped rank under orderByReplayDiffs; rows sort by it.
|
|
113
|
+
const rows = (0, test_run_diffs_utils_1.flattenDiffRows)(data);
|
|
106
114
|
if (json) {
|
|
107
115
|
(0, print_json_1.printJson)((0, test_run_diffs_utils_1.buildDiffsSummaryJson)(data, columns));
|
|
108
116
|
}
|
|
@@ -125,7 +133,7 @@ const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToCom
|
|
|
125
133
|
};
|
|
126
134
|
exports.testRunDiffsCommand = {
|
|
127
135
|
command: "test-run-diffs",
|
|
128
|
-
describe: "List replay diffs for a test run. Outputs TSV, one row per screenshot: replayDiffId, screenshotName, outcome, mismatch (plus optional columns depending on flags), or the same data with --json (nested by replay diff under --orderByReplayDiffs).",
|
|
136
|
+
describe: "List replay diffs for a test run. Outputs TSV, one row per screenshot diff: replayDiffId, screenshotName, index, outcome, mismatch (plus optional columns depending on flags), or the same data with --json (nested by replay diff under --orderByReplayDiffs).",
|
|
129
137
|
builder: {
|
|
130
138
|
apiToken: { string: true, description: "Meticulous API token" },
|
|
131
139
|
testRunId: {
|
|
@@ -156,18 +164,18 @@ exports.testRunDiffsCommand = {
|
|
|
156
164
|
description: "Return every diff instead of only the selected representative subset; adds an isSelected column",
|
|
157
165
|
default: false,
|
|
158
166
|
},
|
|
159
|
-
includeMatches: {
|
|
160
|
-
boolean: true,
|
|
161
|
-
description: "Include matching screenshots (matches, known flakes), not just differences. Implies --includeAllDiffs.",
|
|
162
|
-
default: false,
|
|
163
|
-
},
|
|
164
167
|
orderByReplayDiffs: {
|
|
165
168
|
boolean: true,
|
|
166
|
-
description: "
|
|
169
|
+
description: "With --json, group screenshots by replay diff instead of a flat list; the index is then a replayDiff-grouped rank rather than a flat priority rank",
|
|
167
170
|
default: false,
|
|
168
171
|
},
|
|
172
|
+
project: {
|
|
173
|
+
string: true,
|
|
174
|
+
description: "Project to resolve --commitSha against (id, 'organization/name', or a bare name unique among your accessible projects). Cannot be combined with --testRunId (the run already determines the project). One-off override for this call only; when omitted, uses the token's project or the default set via `auth set-project`.",
|
|
175
|
+
conflicts: "testRunId",
|
|
176
|
+
},
|
|
169
177
|
},
|
|
170
178
|
handler: (0, sentry_utils_1.wrapHandler)(handler),
|
|
171
179
|
};
|
|
172
180
|
//# sourceMappingURL=test-run-diffs.command.js.map
|
|
173
|
-
//# debugId=
|
|
181
|
+
//# debugId=946d252c-7ec9-5eed-bab5-f9cb175d5dbf
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-run-diffs.command.js","sources":["../../../src/commands/agent/test-run-diffs.command.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AACA,
|
|
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":"946d252c-7ec9-5eed-bab5-f9cb175d5dbf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-run-diffs.command.spec.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/test-run-diffs.command.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,148 @@
|
|
|
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]="3c0e7f38-4e30-5837-84b8-3adebb23936a")}catch(e){}}();
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
const vitest_1 = require("vitest");
|
|
6
|
+
const test_run_diffs_command_1 = require("./test-run-diffs.command");
|
|
7
|
+
// Make wrapHandler a passthrough so handler errors propagate directly to tests
|
|
8
|
+
// rather than being swallowed by process.exit().
|
|
9
|
+
vitest_1.vi.mock("../../command-utils/sentry.utils", () => ({
|
|
10
|
+
wrapHandler: (fn) => fn,
|
|
11
|
+
}));
|
|
12
|
+
const mocks = vitest_1.vi.hoisted(() => ({
|
|
13
|
+
createClientWithOAuth: vitest_1.vi.fn(),
|
|
14
|
+
resolveApiTokenWithOAuth: vitest_1.vi.fn(),
|
|
15
|
+
getTestRun: vitest_1.vi.fn(),
|
|
16
|
+
getTestRunDiffsSummary: vitest_1.vi.fn(),
|
|
17
|
+
ensureTestRunFinished: vitest_1.vi.fn(),
|
|
18
|
+
assertTestRunComplete: vitest_1.vi.fn(),
|
|
19
|
+
resolveTestRunForCommitOrThrow: vitest_1.vi.fn(),
|
|
20
|
+
logNotice: vitest_1.vi.fn(),
|
|
21
|
+
logProgress: vitest_1.vi.fn(),
|
|
22
|
+
}));
|
|
23
|
+
vitest_1.vi.mock("@alwaysmeticulous/client", () => ({
|
|
24
|
+
createClientWithOAuth: mocks.createClientWithOAuth,
|
|
25
|
+
resolveApiTokenWithOAuth: mocks.resolveApiTokenWithOAuth,
|
|
26
|
+
getTestRun: mocks.getTestRun,
|
|
27
|
+
getTestRunDiffsSummary: mocks.getTestRunDiffsSummary,
|
|
28
|
+
}));
|
|
29
|
+
vitest_1.vi.mock("@alwaysmeticulous/common", () => ({
|
|
30
|
+
logNotice: mocks.logNotice,
|
|
31
|
+
logProgress: mocks.logProgress,
|
|
32
|
+
}));
|
|
33
|
+
vitest_1.vi.mock("../../utils/resolve-test-run-from-commit", () => ({
|
|
34
|
+
ensureTestRunFinished: mocks.ensureTestRunFinished,
|
|
35
|
+
assertTestRunComplete: mocks.assertTestRunComplete,
|
|
36
|
+
resolveTestRunForCommitOrThrow: mocks.resolveTestRunForCommitOrThrow,
|
|
37
|
+
}));
|
|
38
|
+
class ProcessExitError extends Error {
|
|
39
|
+
code;
|
|
40
|
+
constructor(code) {
|
|
41
|
+
super(`process.exit(${code})`);
|
|
42
|
+
this.code = code;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const runHandler = () => test_run_diffs_command_1.testRunDiffsCommand.handler({
|
|
46
|
+
apiToken: undefined,
|
|
47
|
+
testRunId: "tr-1",
|
|
48
|
+
commitSha: undefined,
|
|
49
|
+
dontWaitForTestRunToComplete: false,
|
|
50
|
+
includeReplayIds: false,
|
|
51
|
+
includeDomDiffIds: false,
|
|
52
|
+
includeAllDiffs: false,
|
|
53
|
+
orderByReplayDiffs: false,
|
|
54
|
+
json: false,
|
|
55
|
+
});
|
|
56
|
+
let logSpy;
|
|
57
|
+
let exitSpy;
|
|
58
|
+
(0, vitest_1.describe)("test-run-diffs command polling", () => {
|
|
59
|
+
(0, vitest_1.beforeEach)(() => {
|
|
60
|
+
vitest_1.vi.clearAllMocks();
|
|
61
|
+
mocks.createClientWithOAuth.mockResolvedValue({});
|
|
62
|
+
mocks.resolveApiTokenWithOAuth.mockResolvedValue("token");
|
|
63
|
+
mocks.getTestRun.mockResolvedValue({ status: "Success" });
|
|
64
|
+
mocks.ensureTestRunFinished.mockResolvedValue("Success");
|
|
65
|
+
mocks.assertTestRunComplete.mockReturnValue(undefined);
|
|
66
|
+
logSpy = vitest_1.vi.spyOn(console, "log").mockImplementation(() => { });
|
|
67
|
+
exitSpy = vitest_1.vi.spyOn(process, "exit").mockImplementation(((code) => {
|
|
68
|
+
throw new ProcessExitError(code);
|
|
69
|
+
}));
|
|
70
|
+
});
|
|
71
|
+
(0, vitest_1.afterEach)(() => {
|
|
72
|
+
logSpy.mockRestore();
|
|
73
|
+
exitSpy.mockRestore();
|
|
74
|
+
});
|
|
75
|
+
(0, vitest_1.it)("retriggers once up front when the run starts out failed, then reports success", async () => {
|
|
76
|
+
mocks.getTestRunDiffsSummary
|
|
77
|
+
.mockResolvedValueOnce({ status: "failed", reason: "TIMED_OUT" }) // cold-start check
|
|
78
|
+
.mockResolvedValueOnce({ status: "pending" }) // the retrigger call
|
|
79
|
+
.mockResolvedValueOnce({ status: "complete", data: [] }); // first poll
|
|
80
|
+
vitest_1.vi.useFakeTimers();
|
|
81
|
+
const handlerPromise = runHandler();
|
|
82
|
+
await vitest_1.vi.advanceTimersByTimeAsync(2_000);
|
|
83
|
+
await handlerPromise;
|
|
84
|
+
vitest_1.vi.useRealTimers();
|
|
85
|
+
(0, vitest_1.expect)(exitSpy).not.toHaveBeenCalled();
|
|
86
|
+
(0, vitest_1.expect)(mocks.getTestRunDiffsSummary).toHaveBeenCalledTimes(3);
|
|
87
|
+
(0, vitest_1.expect)(mocks.getTestRunDiffsSummary).toHaveBeenNthCalledWith(2, vitest_1.expect.anything(), "tr-1", vitest_1.expect.objectContaining({ retrigger: true }));
|
|
88
|
+
// The poll after retriggering carries no retrigger param of its own.
|
|
89
|
+
(0, vitest_1.expect)(mocks.getTestRunDiffsSummary).toHaveBeenNthCalledWith(3, vitest_1.expect.anything(), "tr-1", vitest_1.expect.not.objectContaining({ retrigger: true }));
|
|
90
|
+
});
|
|
91
|
+
(0, vitest_1.it)("does not retrigger a second time if the freshly retriggered run also fails", async () => {
|
|
92
|
+
mocks.getTestRunDiffsSummary
|
|
93
|
+
.mockResolvedValueOnce({ status: "failed", reason: "TIMED_OUT" }) // cold-start check
|
|
94
|
+
.mockResolvedValueOnce({ status: "pending" }) // the retrigger call
|
|
95
|
+
.mockResolvedValueOnce({ status: "failed", reason: "FAILED" }); // first poll fails too
|
|
96
|
+
vitest_1.vi.useFakeTimers();
|
|
97
|
+
const handlerRejection = (0, vitest_1.expect)(runHandler()).rejects.toThrow(ProcessExitError);
|
|
98
|
+
await vitest_1.vi.advanceTimersByTimeAsync(2_000);
|
|
99
|
+
await handlerRejection;
|
|
100
|
+
vitest_1.vi.useRealTimers();
|
|
101
|
+
(0, vitest_1.expect)(exitSpy).toHaveBeenCalledWith(1);
|
|
102
|
+
(0, vitest_1.expect)(mocks.logNotice).toHaveBeenCalledWith(vitest_1.expect.stringContaining("failed (FAILED)"));
|
|
103
|
+
// Exactly one retrigger for the whole invocation: the initial cold-start
|
|
104
|
+
// check plus the one retrigger call, nothing more.
|
|
105
|
+
(0, vitest_1.expect)(mocks.getTestRunDiffsSummary).toHaveBeenCalledTimes(3);
|
|
106
|
+
});
|
|
107
|
+
(0, vitest_1.it)("does not retrigger when the run isn't already failed", async () => {
|
|
108
|
+
mocks.getTestRunDiffsSummary.mockResolvedValue({
|
|
109
|
+
status: "complete",
|
|
110
|
+
data: [],
|
|
111
|
+
});
|
|
112
|
+
await runHandler();
|
|
113
|
+
(0, vitest_1.expect)(mocks.getTestRunDiffsSummary).toHaveBeenCalledTimes(1);
|
|
114
|
+
(0, vitest_1.expect)(mocks.getTestRunDiffsSummary).not.toHaveBeenCalledWith(vitest_1.expect.anything(), vitest_1.expect.anything(), vitest_1.expect.objectContaining({ retrigger: true }));
|
|
115
|
+
});
|
|
116
|
+
(0, vitest_1.it)("exits 1 immediately on an unrecognized status", async () => {
|
|
117
|
+
mocks.getTestRunDiffsSummary.mockResolvedValue({
|
|
118
|
+
status: "unexpected_bogus_status",
|
|
119
|
+
});
|
|
120
|
+
await (0, vitest_1.expect)(runHandler()).rejects.toThrow(ProcessExitError);
|
|
121
|
+
(0, vitest_1.expect)(exitSpy).toHaveBeenCalledWith(1);
|
|
122
|
+
(0, vitest_1.expect)(mocks.logNotice).toHaveBeenCalledWith(vitest_1.expect.stringContaining('unexpected status "unexpected_bogus_status"'));
|
|
123
|
+
});
|
|
124
|
+
(0, vitest_1.it)("exits 1 once the 10-minute deadline passes while still pending", async () => {
|
|
125
|
+
mocks.getTestRunDiffsSummary.mockResolvedValue({ status: "pending" });
|
|
126
|
+
const nowSpy = vitest_1.vi
|
|
127
|
+
.spyOn(performance, "now")
|
|
128
|
+
.mockReturnValueOnce(0) // t0
|
|
129
|
+
.mockReturnValueOnce(0) // summaryDeadline base
|
|
130
|
+
.mockReturnValueOnce(999_999_999); // deadline check inside the loop
|
|
131
|
+
await (0, vitest_1.expect)(runHandler()).rejects.toThrow(ProcessExitError);
|
|
132
|
+
(0, vitest_1.expect)(exitSpy).toHaveBeenCalledWith(1);
|
|
133
|
+
(0, vitest_1.expect)(mocks.logNotice).toHaveBeenCalledWith(vitest_1.expect.stringContaining("did not complete within 10 minutes"));
|
|
134
|
+
nowSpy.mockRestore();
|
|
135
|
+
});
|
|
136
|
+
(0, vitest_1.it)("prints TSV output once the computation completes", async () => {
|
|
137
|
+
mocks.getTestRunDiffsSummary.mockResolvedValue({
|
|
138
|
+
status: "complete",
|
|
139
|
+
data: [],
|
|
140
|
+
});
|
|
141
|
+
await runHandler();
|
|
142
|
+
(0, vitest_1.expect)(exitSpy).not.toHaveBeenCalled();
|
|
143
|
+
const stdout = logSpy.mock.calls.flat().join("\n");
|
|
144
|
+
(0, vitest_1.expect)(stdout.split("\n")[0]).toContain("replayDiffId");
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
//# sourceMappingURL=test-run-diffs.command.spec.js.map
|
|
148
|
+
//# debugId=3c0e7f38-4e30-5837-84b8-3adebb23936a
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-run-diffs.command.spec.js","sources":["../../../src/commands/agent/test-run-diffs.command.spec.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"3c0e7f38-4e30-5837-84b8-3adebb23936a"}
|
|
@@ -6,44 +6,32 @@ export interface DiffRow {
|
|
|
6
6
|
}
|
|
7
7
|
/** Which optional columns the TSV output includes. */
|
|
8
8
|
export interface DiffsSummaryColumns {
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Group the JSON output by replay diff (screenshots nested underneath) instead
|
|
11
|
+
* of a flat list. Either way the global `index` gives the ordering.
|
|
12
|
+
*/
|
|
10
13
|
orderByReplayDiffs: boolean;
|
|
11
14
|
/** Add the domDiffIds column. */
|
|
12
15
|
includeDomDiffIds: boolean;
|
|
13
|
-
/**
|
|
14
|
-
* Effective "all diffs" — true when --includeAllDiffs or --includeMatches is
|
|
15
|
-
* set (see {@link resolveIncludeAllDiffs}); adds the isSelected column.
|
|
16
|
-
*/
|
|
16
|
+
/** Return every diff, not just the selected subset; adds the isSelected column. */
|
|
17
17
|
includeAllDiffs: boolean;
|
|
18
18
|
/** Add the base/head replay ID columns. */
|
|
19
19
|
includeReplayIds: boolean;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
|
|
26
|
-
export declare const resolveIncludeAllDiffs: ({ includeAllDiffs, includeMatches, }: {
|
|
27
|
-
includeAllDiffs: boolean;
|
|
28
|
-
includeMatches: boolean;
|
|
29
|
-
}) => boolean;
|
|
30
|
-
/**
|
|
31
|
-
* Flattens replay diffs into one list of rows. By default the backend's `index`
|
|
32
|
-
* is a flat cross-replay-diff priority rank, so we sort by it (a flat order the
|
|
33
|
-
* grouped response can't express). With orderByReplayDiffs the backend already
|
|
34
|
-
* returns rows grouped by replay diff in event order, which we preserve.
|
|
35
|
-
*/
|
|
36
|
-
export declare const flattenDiffRows: (data: DiffsSummaryReplayDiff[], orderByReplayDiffs: boolean) => DiffRow[];
|
|
37
|
-
/**
|
|
38
|
-
* Builds the TSV header. index/total are only meaningful with orderByReplayDiffs;
|
|
39
|
-
* by default rows are already in priority order, so the index is omitted.
|
|
22
|
+
* Flattens replay diffs into one list of rows, sorted by the backend's global
|
|
23
|
+
* `index`. That index is a flat priority rank by default, or a replayDiff-grouped
|
|
24
|
+
* rank under orderByReplayDiffs — either way sorting by it yields the intended
|
|
25
|
+
* order (which the grouped response can't express positionally).
|
|
40
26
|
*/
|
|
27
|
+
export declare const flattenDiffRows: (data: DiffsSummaryReplayDiff[]) => DiffRow[];
|
|
28
|
+
/** Builds the TSV header. `index` is the global rank the rows are ordered by. */
|
|
41
29
|
export declare const buildDiffsSummaryHeader: (columns: DiffsSummaryColumns) => string[];
|
|
42
30
|
/**
|
|
43
31
|
* Builds the JSON equivalent of the TSV, gated by the same columns. By default
|
|
44
|
-
* it's a flat array (one object per screenshot, in
|
|
45
|
-
*
|
|
46
|
-
*
|
|
32
|
+
* it's a flat array (one object per screenshot, in global `index` order). With
|
|
33
|
+
* orderByReplayDiffs it nests one level — an array of replay diffs, each with its
|
|
34
|
+
* screenshots grouped underneath.
|
|
47
35
|
*/
|
|
48
36
|
export declare const buildDiffsSummaryJson: (data: DiffsSummaryReplayDiff[], columns: DiffsSummaryColumns) => unknown[];
|
|
49
37
|
/** Formats a single row's fields, gated by the same columns as the header. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-run-diffs.utils.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/test-run-diffs.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAElC,2EAA2E;AAC3E,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,sBAAsB,CAAC;IACnC,UAAU,EAAE,sBAAsB,CAAC;CACpC;AAED,sDAAsD;AACtD,MAAM,WAAW,mBAAmB;IAClC
|
|
1
|
+
{"version":3,"file":"test-run-diffs.utils.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/test-run-diffs.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAElC,2EAA2E;AAC3E,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,sBAAsB,CAAC;IACnC,UAAU,EAAE,sBAAsB,CAAC;CACpC;AAED,sDAAsD;AACtD,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iCAAiC;IACjC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mFAAmF;IACnF,eAAe,EAAE,OAAO,CAAC;IACzB,2CAA2C;IAC3C,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAKD;;;;;GAKG;AACH,eAAO,MAAM,eAAe,SAAU,sBAAsB,EAAE,KAAG,OAAO,EAMvE,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,uBAAuB,YACzB,mBAAmB,KAC3B,MAAM,EAYR,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,SAC1B,sBAAsB,EAAE,WACrB,mBAAmB,KAC3B,OAAO,EAyBT,CAAC;AAkBF,8EAA8E;AAC9E,eAAO,MAAM,aAAa,+BACI,OAAO,WAC1B,mBAAmB,KAC3B,CAAC,MAAM,GAAG,MAAM,CAAC,EAanB,CAAC"}
|
|
@@ -1,39 +1,30 @@
|
|
|
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]="3c7fb585-bd4e-5f70-98d3-70c405509ce4")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.formatDiffRow = exports.buildDiffsSummaryJson = exports.buildDiffsSummaryHeader = exports.flattenDiffRows =
|
|
5
|
+
exports.formatDiffRow = exports.buildDiffsSummaryJson = exports.buildDiffsSummaryHeader = exports.flattenDiffRows = void 0;
|
|
6
6
|
const fmtMismatch = (v) => v != null ? v.toFixed(5) : "";
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* Flattens replay diffs into one list of rows, sorted by the backend's global
|
|
9
|
+
* `index`. That index is a flat priority rank by default, or a replayDiff-grouped
|
|
10
|
+
* rank under orderByReplayDiffs — either way sorting by it yields the intended
|
|
11
|
+
* order (which the grouped response can't express positionally).
|
|
11
12
|
*/
|
|
12
|
-
const
|
|
13
|
-
exports.resolveIncludeAllDiffs = resolveIncludeAllDiffs;
|
|
14
|
-
/**
|
|
15
|
-
* Flattens replay diffs into one list of rows. By default the backend's `index`
|
|
16
|
-
* is a flat cross-replay-diff priority rank, so we sort by it (a flat order the
|
|
17
|
-
* grouped response can't express). With orderByReplayDiffs the backend already
|
|
18
|
-
* returns rows grouped by replay diff in event order, which we preserve.
|
|
19
|
-
*/
|
|
20
|
-
const flattenDiffRows = (data, orderByReplayDiffs) => {
|
|
13
|
+
const flattenDiffRows = (data) => {
|
|
21
14
|
const rows = data.flatMap((replayDiff) => replayDiff.screenshots.map((screenshot) => ({ replayDiff, screenshot })));
|
|
22
|
-
|
|
23
|
-
rows.sort((a, b) => a.screenshot.index - b.screenshot.index);
|
|
24
|
-
}
|
|
15
|
+
rows.sort((a, b) => a.screenshot.index - b.screenshot.index);
|
|
25
16
|
return rows;
|
|
26
17
|
};
|
|
27
18
|
exports.flattenDiffRows = flattenDiffRows;
|
|
28
|
-
/**
|
|
29
|
-
* Builds the TSV header. index/total are only meaningful with orderByReplayDiffs;
|
|
30
|
-
* by default rows are already in priority order, so the index is omitted.
|
|
31
|
-
*/
|
|
19
|
+
/** Builds the TSV header. `index` is the global rank the rows are ordered by. */
|
|
32
20
|
const buildDiffsSummaryHeader = (columns) => {
|
|
33
|
-
const fields = [
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
21
|
+
const fields = [
|
|
22
|
+
"replayDiffId",
|
|
23
|
+
"screenshotName",
|
|
24
|
+
"index",
|
|
25
|
+
"outcome",
|
|
26
|
+
"mismatch",
|
|
27
|
+
];
|
|
37
28
|
if (columns.includeDomDiffIds)
|
|
38
29
|
fields.push("domDiffIds");
|
|
39
30
|
if (columns.includeAllDiffs)
|
|
@@ -45,9 +36,9 @@ const buildDiffsSummaryHeader = (columns) => {
|
|
|
45
36
|
exports.buildDiffsSummaryHeader = buildDiffsSummaryHeader;
|
|
46
37
|
/**
|
|
47
38
|
* Builds the JSON equivalent of the TSV, gated by the same columns. By default
|
|
48
|
-
* it's a flat array (one object per screenshot, in
|
|
49
|
-
*
|
|
50
|
-
*
|
|
39
|
+
* it's a flat array (one object per screenshot, in global `index` order). With
|
|
40
|
+
* orderByReplayDiffs it nests one level — an array of replay diffs, each with its
|
|
41
|
+
* screenshots grouped underneath.
|
|
51
42
|
*/
|
|
52
43
|
const buildDiffsSummaryJson = (data, columns) => {
|
|
53
44
|
if (columns.orderByReplayDiffs) {
|
|
@@ -62,7 +53,7 @@ const buildDiffsSummaryJson = (data, columns) => {
|
|
|
62
53
|
screenshots: replayDiff.screenshots.map((screenshot) => screenshotToJson(screenshot, columns)),
|
|
63
54
|
}));
|
|
64
55
|
}
|
|
65
|
-
return (0, exports.flattenDiffRows)(data
|
|
56
|
+
return (0, exports.flattenDiffRows)(data).map(({ replayDiff, screenshot }) => ({
|
|
66
57
|
replayDiffId: replayDiff.replayDiffId,
|
|
67
58
|
...screenshotToJson(screenshot, columns),
|
|
68
59
|
...(columns.includeReplayIds
|
|
@@ -76,9 +67,7 @@ const buildDiffsSummaryJson = (data, columns) => {
|
|
|
76
67
|
exports.buildDiffsSummaryJson = buildDiffsSummaryJson;
|
|
77
68
|
const screenshotToJson = (screenshot, columns) => ({
|
|
78
69
|
screenshotName: screenshot.screenshotName,
|
|
79
|
-
|
|
80
|
-
? { index: screenshot.index, total: screenshot.total ?? null }
|
|
81
|
-
: {}),
|
|
70
|
+
index: screenshot.index,
|
|
82
71
|
outcome: screenshot.outcome,
|
|
83
72
|
mismatch: screenshot.mismatchFraction ?? null,
|
|
84
73
|
...(columns.includeDomDiffIds
|
|
@@ -93,9 +82,8 @@ const formatDiffRow = ({ replayDiff, screenshot }, columns) => {
|
|
|
93
82
|
const fields = [
|
|
94
83
|
replayDiff.replayDiffId,
|
|
95
84
|
screenshot.screenshotName,
|
|
85
|
+
screenshot.index,
|
|
96
86
|
];
|
|
97
|
-
if (columns.orderByReplayDiffs)
|
|
98
|
-
fields.push(screenshot.index, screenshot.total ?? "");
|
|
99
87
|
fields.push(screenshot.outcome, fmtMismatch(screenshot.mismatchFraction));
|
|
100
88
|
if (columns.includeDomDiffIds)
|
|
101
89
|
fields.push(screenshot.domDiffIds ?? "");
|
|
@@ -107,4 +95,4 @@ const formatDiffRow = ({ replayDiff, screenshot }, columns) => {
|
|
|
107
95
|
};
|
|
108
96
|
exports.formatDiffRow = formatDiffRow;
|
|
109
97
|
//# sourceMappingURL=test-run-diffs.utils.js.map
|
|
110
|
-
//# debugId=
|
|
98
|
+
//# debugId=3c7fb585-bd4e-5f70-98d3-70c405509ce4
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-run-diffs.utils.js","sources":["../../../src/commands/agent/test-run-diffs.utils.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AA0BA,MAAM,WAAW,GAAG,CAAC,CAAgB,EAAU,EAAE,CAC/C,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAEhC
|
|
1
|
+
{"version":3,"file":"test-run-diffs.utils.js","sources":["../../../src/commands/agent/test-run-diffs.utils.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"3c7fb585-bd4e-5f70-98d3-70c405509ce4"}
|