@alwaysmeticulous/cli 2.40.0 → 2.40.4
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/api/test-run.api.d.ts +3 -31
- package/dist/api/test-run.api.js +3 -96
- package/dist/commands/download-replay/download-replay.command.js +4 -4
- package/dist/commands/download-session/download-session.command.js +4 -4
- package/dist/commands/record/record.command.js +8 -11
- package/dist/commands/replay/replay.command.d.ts +3 -14
- package/dist/commands/replay/replay.command.js +3 -233
- package/dist/commands/run-all-tests/run-all-tests.command.js +5 -5
- package/dist/commands/show-project/show-project.command.js +2 -3
- package/dist/index.d.ts +0 -7
- package/dist/index.js +1 -13
- package/dist/main.js +5 -11
- package/dist/utils/sentry.utils.d.ts +0 -4
- package/dist/utils/sentry.utils.js +3 -23
- package/package.json +14 -32
- package/dist/api/client.d.ts +0 -5
- package/dist/api/client.js +0 -32
- package/dist/api/download.d.ts +0 -1
- package/dist/api/download.js +0 -21
- package/dist/api/project.api.d.ts +0 -3
- package/dist/api/project.api.js +0 -22
- package/dist/api/replay-diff.api.d.ts +0 -13
- package/dist/api/replay-diff.api.js +0 -32
- package/dist/api/replay.api.d.ts +0 -36
- package/dist/api/replay.api.js +0 -89
- package/dist/api/session.api.d.ts +0 -6
- package/dist/api/session.api.js +0 -45
- package/dist/api/types.d.ts +0 -39
- package/dist/api/types.js +0 -2
- package/dist/api/upload.d.ts +0 -1
- package/dist/api/upload.js +0 -18
- package/dist/archive/archive.d.ts +0 -4
- package/dist/archive/archive.js +0 -64
- package/dist/command-utils/common-types.d.ts +0 -20
- package/dist/command-utils/common-types.js +0 -2
- package/dist/commands/bootstrap/bootstrap.command.d.ts +0 -2
- package/dist/commands/bootstrap/bootstrap.command.js +0 -33
- package/dist/commands/create-test/create-test.command.d.ts +0 -90
- package/dist/commands/create-test/create-test.command.js +0 -165
- package/dist/commands/replay/utils/compute-diff.d.ts +0 -13
- package/dist/commands/replay/utils/compute-diff.js +0 -95
- package/dist/commands/replay/utils/exit-early-if-skip-upload-env-var-set.d.ts +0 -1
- package/dist/commands/replay/utils/exit-early-if-skip-upload-env-var-set.js +0 -27
- package/dist/commands/screenshot-diff/screenshot-diff.command.d.ts +0 -53
- package/dist/commands/screenshot-diff/screenshot-diff.command.js +0 -182
- package/dist/commands/screenshot-diff/utils/__tests__/get-screenshot-identifier.spec.d.ts +0 -1
- package/dist/commands/screenshot-diff/utils/__tests__/get-screenshot-identifier.spec.js +0 -25
- package/dist/commands/screenshot-diff/utils/get-screenshot-filename.d.ts +0 -2
- package/dist/commands/screenshot-diff/utils/get-screenshot-filename.js +0 -22
- package/dist/commands/screenshot-diff/utils/get-screenshot-identifier.d.ts +0 -2
- package/dist/commands/screenshot-diff/utils/get-screenshot-identifier.js +0 -39
- package/dist/commands/screenshot-diff/utils/has-notable-differences.d.ts +0 -2
- package/dist/commands/screenshot-diff/utils/has-notable-differences.js +0 -10
- package/dist/commands/serve/serve.command.d.ts +0 -10
- package/dist/commands/serve/serve.command.js +0 -31
- package/dist/commands/update-tests/update-tests.command.d.ts +0 -21
- package/dist/commands/update-tests/update-tests.command.js +0 -96
- package/dist/config/config.d.ts +0 -3
- package/dist/config/config.js +0 -69
- package/dist/config/config.types.d.ts +0 -16
- package/dist/config/config.types.js +0 -2
- package/dist/config/snippets.d.ts +0 -1
- package/dist/config/snippets.js +0 -18
- package/dist/errors/config.d.ts +0 -3
- package/dist/errors/config.js +0 -10
- package/dist/image/diff.utils.d.ts +0 -19
- package/dist/image/diff.utils.js +0 -25
- package/dist/image/io.utils.d.ts +0 -3
- package/dist/image/io.utils.js +0 -25
- package/dist/local-data/local-data.utils.d.ts +0 -20
- package/dist/local-data/local-data.utils.js +0 -92
- package/dist/local-data/replay-assets.d.ts +0 -3
- package/dist/local-data/replay-assets.js +0 -94
- package/dist/local-data/replays.d.ts +0 -18
- package/dist/local-data/replays.js +0 -87
- package/dist/local-data/screenshot-diffs.d.ts +0 -7
- package/dist/local-data/screenshot-diffs.js +0 -20
- package/dist/local-data/serve-assets-from-simulation.d.ts +0 -5
- package/dist/local-data/serve-assets-from-simulation.js +0 -52
- package/dist/local-data/sessions.d.ts +0 -10
- package/dist/local-data/sessions.js +0 -41
- package/dist/parallel-tests/__tests__/merge-test-results.spec.d.ts +0 -1
- package/dist/parallel-tests/__tests__/merge-test-results.spec.js +0 -104
- package/dist/parallel-tests/__tests__/mock-test-results.d.ts +0 -17
- package/dist/parallel-tests/__tests__/mock-test-results.js +0 -106
- package/dist/parallel-tests/__tests__/parrallel-tests.handler.spec.d.ts +0 -1
- package/dist/parallel-tests/__tests__/parrallel-tests.handler.spec.js +0 -205
- package/dist/parallel-tests/execute-test-in-child-process.d.ts +0 -3
- package/dist/parallel-tests/execute-test-in-child-process.js +0 -44
- package/dist/parallel-tests/merge-test-results.d.ts +0 -12
- package/dist/parallel-tests/merge-test-results.js +0 -106
- package/dist/parallel-tests/messages.types.d.ts +0 -17
- package/dist/parallel-tests/messages.types.js +0 -2
- package/dist/parallel-tests/parallel-replay.handler.d.ts +0 -3
- package/dist/parallel-tests/parallel-replay.handler.js +0 -56
- package/dist/parallel-tests/parallel-replay.types.d.ts +0 -16
- package/dist/parallel-tests/parallel-replay.types.js +0 -2
- package/dist/parallel-tests/parallel-tests.handler.d.ts +0 -14
- package/dist/parallel-tests/parallel-tests.handler.js +0 -194
- package/dist/parallel-tests/run-all-tests.d.ts +0 -73
- package/dist/parallel-tests/run-all-tests.js +0 -237
- package/dist/parallel-tests/run-all-tests.types.d.ts +0 -6
- package/dist/parallel-tests/run-all-tests.types.js +0 -2
- package/dist/parallel-tests/screenshot-diff-results.utils.d.ts +0 -7
- package/dist/parallel-tests/screenshot-diff-results.utils.js +0 -20
- package/dist/parallel-tests/task.handler.d.ts +0 -1
- package/dist/parallel-tests/task.handler.js +0 -86
- package/dist/utils/api-token.utils.d.ts +0 -1
- package/dist/utils/api-token.utils.js +0 -31
- package/dist/utils/commit-sha.utils.d.ts +0 -1
- package/dist/utils/commit-sha.utils.js +0 -42
- package/dist/utils/config.utils.d.ts +0 -7
- package/dist/utils/config.utils.js +0 -33
- package/dist/utils/github-summary.utils.d.ts +0 -5
- package/dist/utils/github-summary.utils.js +0 -38
- package/dist/utils/run-all-tests.utils.d.ts +0 -16
- package/dist/utils/run-all-tests.utils.js +0 -32
- package/dist/utils/test-run-environment.utils.d.ts +0 -2
- package/dist/utils/test-run-environment.utils.js +0 -25
- package/dist/utils/version.utils.d.ts +0 -1
- package/dist/utils/version.utils.js +0 -17
|
@@ -1,35 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TestCaseResult } from "@alwaysmeticulous/api";
|
|
2
2
|
import { AxiosInstance } from "axios";
|
|
3
|
-
|
|
4
|
-
import { ScreenshotLocator, TestRun, TestRunStatus } from "./types";
|
|
5
|
-
export declare const getTestRun: (options: {
|
|
6
|
-
client: AxiosInstance;
|
|
7
|
-
testRunId: string;
|
|
8
|
-
}) => Promise<TestRun | null>;
|
|
9
|
-
export declare const createTestRun: (options: {
|
|
10
|
-
client: AxiosInstance;
|
|
11
|
-
commitSha: string;
|
|
12
|
-
meticulousSha: string;
|
|
13
|
-
configData: TestRunConfigData;
|
|
14
|
-
}) => Promise<TestRun>;
|
|
15
|
-
export declare const putTestRunResults: (options: {
|
|
16
|
-
client: AxiosInstance;
|
|
17
|
-
testRunId: string;
|
|
18
|
-
status: TestRunStatus;
|
|
19
|
-
resultData: {
|
|
20
|
-
[key: string]: any;
|
|
21
|
-
};
|
|
22
|
-
}) => Promise<TestRun>;
|
|
23
|
-
export declare const getTestRunUrl: (testRun: TestRun) => string;
|
|
24
|
-
export interface GetLatestTestRunResultsOptions {
|
|
3
|
+
export interface GetCachedTestRunResultsOptions {
|
|
25
4
|
client: AxiosInstance;
|
|
26
5
|
commitSha: string;
|
|
27
6
|
}
|
|
28
|
-
export declare const getCachedTestRunResults: ({ client, commitSha, }:
|
|
29
|
-
export declare const getLatestTestRunId: (opts: GetLatestTestRunResultsOptions) => Promise<string | null>;
|
|
30
|
-
export interface GetBaseScreenshotLocatorsOptions {
|
|
31
|
-
client: AxiosInstance;
|
|
32
|
-
testRunId: string;
|
|
33
|
-
sessionId: string;
|
|
34
|
-
}
|
|
35
|
-
export declare const getBaseScreenshots: ({ client, testRunId, sessionId, }: GetBaseScreenshotLocatorsOptions) => Promise<ScreenshotLocator[]>;
|
|
7
|
+
export declare const getCachedTestRunResults: ({ client, commitSha, }: GetCachedTestRunResultsOptions) => Promise<TestCaseResult[]>;
|
package/dist/api/test-run.api.js
CHANGED
|
@@ -1,73 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
4
|
};
|
|
28
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.
|
|
6
|
+
exports.getCachedTestRunResults = void 0;
|
|
7
|
+
const client_1 = require("@alwaysmeticulous/client");
|
|
30
8
|
const common_1 = require("@alwaysmeticulous/common");
|
|
31
|
-
const axios_1 = __importStar(require("axios"));
|
|
32
9
|
const loglevel_1 = __importDefault(require("loglevel"));
|
|
33
|
-
const getTestRun = async ({ client, testRunId }) => {
|
|
34
|
-
const { data } = await client.get(`test-runs/${testRunId}`).catch((error) => {
|
|
35
|
-
var _a;
|
|
36
|
-
if (axios_1.default.isAxiosError(error)) {
|
|
37
|
-
if (((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 404) {
|
|
38
|
-
return { data: null };
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
throw error;
|
|
42
|
-
});
|
|
43
|
-
return data;
|
|
44
|
-
};
|
|
45
|
-
exports.getTestRun = getTestRun;
|
|
46
|
-
const createTestRun = async ({ client, commitSha, meticulousSha, configData, }) => {
|
|
47
|
-
const { data } = await client.post("test-runs", {
|
|
48
|
-
commitSha,
|
|
49
|
-
meticulousSha,
|
|
50
|
-
configData,
|
|
51
|
-
});
|
|
52
|
-
return data;
|
|
53
|
-
};
|
|
54
|
-
exports.createTestRun = createTestRun;
|
|
55
|
-
const putTestRunResults = async ({ client, testRunId, status, resultData }) => {
|
|
56
|
-
const { data } = await client.put(`test-runs/${testRunId}/results`, {
|
|
57
|
-
status,
|
|
58
|
-
resultData,
|
|
59
|
-
});
|
|
60
|
-
return data;
|
|
61
|
-
};
|
|
62
|
-
exports.putTestRunResults = putTestRunResults;
|
|
63
|
-
const getTestRunUrl = (testRun) => {
|
|
64
|
-
const { project } = testRun;
|
|
65
|
-
const organizationName = encodeURIComponent(project.organization.name);
|
|
66
|
-
const projectName = encodeURIComponent(project.name);
|
|
67
|
-
const testRunUrl = `https://app.meticulous.ai/projects/${organizationName}/${projectName}/test-runs/${testRun.id}`;
|
|
68
|
-
return testRunUrl;
|
|
69
|
-
};
|
|
70
|
-
exports.getTestRunUrl = getTestRunUrl;
|
|
71
10
|
const getCachedTestRunResults = async ({ client, commitSha, }) => {
|
|
72
11
|
var _a, _b, _c;
|
|
73
12
|
const logger = loglevel_1.default.getLogger(common_1.METICULOUS_LOGGER_NAME);
|
|
@@ -75,40 +14,8 @@ const getCachedTestRunResults = async ({ client, commitSha, }) => {
|
|
|
75
14
|
logger.warn("Test run cache not supported: no commit hash");
|
|
76
15
|
return [];
|
|
77
16
|
}
|
|
78
|
-
const results = (_c = (_b = (_a = (await getLatestTestRunResults({ client, commitSha }))) === null || _a === void 0 ? void 0 : _a.resultData) === null || _b === void 0 ? void 0 : _b.results) !== null && _c !== void 0 ? _c : [];
|
|
17
|
+
const results = (_c = (_b = (_a = (await (0, client_1.getLatestTestRunResults)({ client, commitSha }))) === null || _a === void 0 ? void 0 : _a.resultData) === null || _b === void 0 ? void 0 : _b.results) !== null && _c !== void 0 ? _c : [];
|
|
79
18
|
// Only return passing tests
|
|
80
19
|
return results.filter(({ result }) => result === "pass");
|
|
81
20
|
};
|
|
82
21
|
exports.getCachedTestRunResults = getCachedTestRunResults;
|
|
83
|
-
const getLatestTestRunResults = async ({ client, commitSha, }) => {
|
|
84
|
-
var _a;
|
|
85
|
-
const { data } = await client
|
|
86
|
-
.get(`test-runs/cache?commitSha=${encodeURIComponent(commitSha)}`)
|
|
87
|
-
.catch((error) => {
|
|
88
|
-
var _a;
|
|
89
|
-
if (error instanceof axios_1.AxiosError && ((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 404) {
|
|
90
|
-
return { data: null };
|
|
91
|
-
}
|
|
92
|
-
throw error;
|
|
93
|
-
});
|
|
94
|
-
return (_a = data) !== null && _a !== void 0 ? _a : null;
|
|
95
|
-
};
|
|
96
|
-
const getLatestTestRunId = async (opts) => {
|
|
97
|
-
var _a, _b;
|
|
98
|
-
return (_b = (_a = (await getLatestTestRunResults(opts))) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null;
|
|
99
|
-
};
|
|
100
|
-
exports.getLatestTestRunId = getLatestTestRunId;
|
|
101
|
-
const getBaseScreenshots = async ({ client, testRunId, sessionId, }) => {
|
|
102
|
-
var _a;
|
|
103
|
-
const { data } = await client
|
|
104
|
-
.get(`test-runs/${encodeURIComponent(testRunId)}/base-screenshots?sessionId=${encodeURIComponent(sessionId)}`)
|
|
105
|
-
.catch((error) => {
|
|
106
|
-
var _a;
|
|
107
|
-
if (error instanceof axios_1.AxiosError && ((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 404) {
|
|
108
|
-
return { data: null };
|
|
109
|
-
}
|
|
110
|
-
throw error;
|
|
111
|
-
});
|
|
112
|
-
return (_a = data) !== null && _a !== void 0 ? _a : [];
|
|
113
|
-
};
|
|
114
|
-
exports.getBaseScreenshots = getBaseScreenshots;
|
|
@@ -4,17 +4,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.downloadReplayCommand = void 0;
|
|
7
|
+
const client_1 = require("@alwaysmeticulous/client");
|
|
7
8
|
const common_1 = require("@alwaysmeticulous/common");
|
|
9
|
+
const downloading_helpers_1 = require("@alwaysmeticulous/downloading-helpers");
|
|
8
10
|
const loglevel_1 = __importDefault(require("loglevel"));
|
|
9
|
-
const client_1 = require("../../api/client");
|
|
10
11
|
const command_builder_1 = require("../../command-utils/command-builder");
|
|
11
|
-
const replays_1 = require("../../local-data/replays");
|
|
12
12
|
const handler = async ({ apiToken, replayId, }) => {
|
|
13
13
|
const logger = loglevel_1.default.getLogger(common_1.METICULOUS_LOGGER_NAME);
|
|
14
14
|
const client = (0, client_1.createClient)({ apiToken });
|
|
15
|
-
const { fileName: replayMetadataFileName } = await (0,
|
|
15
|
+
const { fileName: replayMetadataFileName } = await (0, downloading_helpers_1.getOrFetchReplay)(client, replayId);
|
|
16
16
|
logger.info(`Downloaded replay metadata to: ${replayMetadataFileName}`);
|
|
17
|
-
const { fileName: replayFolderFilePath } = await (0,
|
|
17
|
+
const { fileName: replayFolderFilePath } = await (0, downloading_helpers_1.getOrFetchReplayArchive)(client, replayId);
|
|
18
18
|
logger.info(`Downloaded replay data to: ${replayFolderFilePath}`);
|
|
19
19
|
};
|
|
20
20
|
exports.downloadReplayCommand = (0, command_builder_1.buildCommand)("download-simulation")
|
|
@@ -4,17 +4,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.downloadSessionCommand = void 0;
|
|
7
|
+
const client_1 = require("@alwaysmeticulous/client");
|
|
7
8
|
const common_1 = require("@alwaysmeticulous/common");
|
|
9
|
+
const downloading_helpers_1 = require("@alwaysmeticulous/downloading-helpers");
|
|
8
10
|
const loglevel_1 = __importDefault(require("loglevel"));
|
|
9
|
-
const client_1 = require("../../api/client");
|
|
10
11
|
const command_builder_1 = require("../../command-utils/command-builder");
|
|
11
|
-
const sessions_1 = require("../../local-data/sessions");
|
|
12
12
|
const handler = async ({ apiToken, sessionId, }) => {
|
|
13
13
|
const logger = loglevel_1.default.getLogger(common_1.METICULOUS_LOGGER_NAME);
|
|
14
14
|
const client = (0, client_1.createClient)({ apiToken });
|
|
15
|
-
const { fileName: sessionMetadataFileName } = await (0,
|
|
15
|
+
const { fileName: sessionMetadataFileName } = await (0, downloading_helpers_1.getOrFetchRecordedSession)(client, sessionId);
|
|
16
16
|
logger.info(`Downloaded session metadata to: ${sessionMetadataFileName}`);
|
|
17
|
-
const { fileName: sessionFileName } = await (0,
|
|
17
|
+
const { fileName: sessionFileName } = await (0, downloading_helpers_1.getOrFetchRecordedSessionData)(client, sessionId);
|
|
18
18
|
logger.info(`Downloaded session data to: ${sessionFileName}`);
|
|
19
19
|
};
|
|
20
20
|
exports.downloadSessionCommand = (0, command_builder_1.buildCommand)("download-session")
|
|
@@ -5,14 +5,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.recordCommand = exports.recordCommandHandler = void 0;
|
|
7
7
|
const path_1 = require("path");
|
|
8
|
+
const client_1 = require("@alwaysmeticulous/client");
|
|
8
9
|
const common_1 = require("@alwaysmeticulous/common");
|
|
10
|
+
const downloading_helpers_1 = require("@alwaysmeticulous/downloading-helpers");
|
|
9
11
|
const loglevel_1 = __importDefault(require("loglevel"));
|
|
10
|
-
const client_1 = require("../../api/client");
|
|
11
|
-
const project_api_1 = require("../../api/project.api");
|
|
12
|
-
const session_api_1 = require("../../api/session.api");
|
|
13
12
|
const command_builder_1 = require("../../command-utils/command-builder");
|
|
14
|
-
const replay_assets_1 = require("../../local-data/replay-assets");
|
|
15
|
-
const commit_sha_utils_1 = require("../../utils/commit-sha.utils");
|
|
16
13
|
const recordCommandHandler = async ({ apiToken, commitSha: commitSha_, devTools, bypassCSP, width, height, uploadIntervalMs, incognito, trace, onDetectedSession: onDetectedSession_, }) => {
|
|
17
14
|
const logger = loglevel_1.default.getLogger(common_1.METICULOUS_LOGGER_NAME);
|
|
18
15
|
const debugLogger = trace ? await common_1.DebugLogger.create() : null;
|
|
@@ -30,7 +27,7 @@ const recordCommandHandler = async ({ apiToken, commitSha: commitSha_, devTools,
|
|
|
30
27
|
logger.info("Preparing recording...");
|
|
31
28
|
// 1. Fetch the recording token
|
|
32
29
|
const client = (0, client_1.createClient)({ apiToken });
|
|
33
|
-
const project = await (0,
|
|
30
|
+
const project = await (0, client_1.getProject)(client);
|
|
34
31
|
if (!project) {
|
|
35
32
|
logger.error("Could not retrieve project data. Is the API token correct?");
|
|
36
33
|
debugLogger === null || debugLogger === void 0 ? void 0 : debugLogger.log("Could not retrieve project data. Is the API token correct?");
|
|
@@ -44,11 +41,11 @@ const recordCommandHandler = async ({ apiToken, commitSha: commitSha_, devTools,
|
|
|
44
41
|
}
|
|
45
42
|
logger.debug(`Recording token: ${recordingToken}`);
|
|
46
43
|
// 2. Guess commit SHA1
|
|
47
|
-
const commitSha = (await (0,
|
|
44
|
+
const commitSha = (await (0, common_1.getCommitSha)(commitSha_)) || "unknown";
|
|
48
45
|
logger.debug(`Commit: ${commitSha}`);
|
|
49
46
|
// 3. Load recording snippets
|
|
50
|
-
const recordingSnippet = await (0,
|
|
51
|
-
const earlyNetworkRecorderSnippet = await (0,
|
|
47
|
+
const recordingSnippet = await (0, downloading_helpers_1.fetchAsset)("v1/stagingMeticulousSnippet.js");
|
|
48
|
+
const earlyNetworkRecorderSnippet = await (0, downloading_helpers_1.fetchAsset)("record/v1/network-recorder.bundle.js");
|
|
52
49
|
// 4. Load recording package
|
|
53
50
|
let recordSession;
|
|
54
51
|
try {
|
|
@@ -64,13 +61,13 @@ const recordCommandHandler = async ({ apiToken, commitSha: commitSha_, devTools,
|
|
|
64
61
|
}
|
|
65
62
|
const cookieDir = (0, path_1.join)((0, common_1.getMeticulousLocalDataDir)(), "cookies");
|
|
66
63
|
// Report recording start
|
|
67
|
-
const recordingCommandId = await (0,
|
|
64
|
+
const recordingCommandId = await (0, client_1.getRecordingCommandId)(client);
|
|
68
65
|
// 5. Start recording
|
|
69
66
|
const onDetectedSession = (sessionId) => {
|
|
70
67
|
if (onDetectedSession_) {
|
|
71
68
|
onDetectedSession_(sessionId);
|
|
72
69
|
}
|
|
73
|
-
(0,
|
|
70
|
+
(0, client_1.postSessionIdNotification)(client, sessionId, recordingCommandId).catch((error) => {
|
|
74
71
|
logger.error(`Warning: error while notifying session recording ${sessionId}`);
|
|
75
72
|
logger.error(error);
|
|
76
73
|
debugLogger === null || debugLogger === void 0 ? void 0 : debugLogger.log(`Warning: error while notifying session recording ${sessionId}`);
|
|
@@ -1,24 +1,13 @@
|
|
|
1
1
|
/// <reference types="yargs" />
|
|
2
|
-
import { ScreenshotDiffResult } from "@alwaysmeticulous/api";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
export interface ReplayOptions extends AdditionalReplayOptions {
|
|
6
|
-
replayTarget: ReplayTarget;
|
|
7
|
-
executionOptions: ReplayExecutionOptions;
|
|
8
|
-
screenshottingOptions: ScreenshotAssertionsOptions;
|
|
9
|
-
generatedBy: GeneratedBy;
|
|
10
|
-
testRunId: string | null;
|
|
11
|
-
replayEventsDependencies: ReplayEventsDependencies;
|
|
12
|
-
suppressScreenshotDiffLogging: boolean;
|
|
13
|
-
}
|
|
14
|
-
export interface ReplayResult {
|
|
2
|
+
import { ScreenshotDiffResult, Replay, ScreenshotDiffOptions } from "@alwaysmeticulous/api";
|
|
3
|
+
import { ReplayExecutionOptions, ReplayTarget } from "@alwaysmeticulous/sdk-bundles-api";
|
|
4
|
+
export interface ReplayAndStoreResultsResult {
|
|
15
5
|
replay: Replay;
|
|
16
6
|
/**
|
|
17
7
|
* Empty if screenshottingOptions.enabled was false.
|
|
18
8
|
*/
|
|
19
9
|
screenshotDiffResultsByBaseReplayId: Record<string, ScreenshotDiffResult[]>;
|
|
20
10
|
}
|
|
21
|
-
export declare const replayCommandHandler: ({ replayTarget, executionOptions, screenshottingOptions, apiToken, sessionId, commitSha: commitSha_, baseTestRunId, cookiesFile, generatedBy, testRunId, replayEventsDependencies, debugger: enableStepThroughDebugger, suppressScreenshotDiffLogging, }: ReplayOptions) => Promise<ReplayResult>;
|
|
22
11
|
export interface RawReplayCommandHandlerOptions extends ScreenshotDiffOptions, Omit<ReplayExecutionOptions, "maxDurationMs" | "maxEventCount">, Omit<AdditionalReplayOptions, "baseTestRunId"> {
|
|
23
12
|
screenshot: boolean;
|
|
24
13
|
appUrl: string | null | undefined;
|
|
@@ -1,237 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.replayCommand = exports.getReplayTarget = exports.rawReplayCommandHandler =
|
|
30
|
-
const
|
|
31
|
-
const path_1 = require("path");
|
|
32
|
-
const common_1 = require("@alwaysmeticulous/common");
|
|
33
|
-
const Sentry = __importStar(require("@sentry/node"));
|
|
34
|
-
const loglevel_1 = __importDefault(require("loglevel"));
|
|
35
|
-
const luxon_1 = require("luxon");
|
|
36
|
-
const client_1 = require("../../api/client");
|
|
37
|
-
const replay_api_1 = require("../../api/replay.api");
|
|
38
|
-
const upload_1 = require("../../api/upload");
|
|
39
|
-
const archive_1 = require("../../archive/archive");
|
|
3
|
+
exports.replayCommand = exports.getReplayTarget = exports.rawReplayCommandHandler = void 0;
|
|
4
|
+
const replay_orchestrator_1 = require("@alwaysmeticulous/replay-orchestrator");
|
|
40
5
|
const command_builder_1 = require("../../command-utils/command-builder");
|
|
41
6
|
const common_options_1 = require("../../command-utils/common-options");
|
|
42
|
-
const local_data_utils_1 = require("../../local-data/local-data.utils");
|
|
43
|
-
const replay_assets_1 = require("../../local-data/replay-assets");
|
|
44
|
-
const serve_assets_from_simulation_1 = require("../../local-data/serve-assets-from-simulation");
|
|
45
|
-
const sessions_1 = require("../../local-data/sessions");
|
|
46
|
-
const commit_sha_utils_1 = require("../../utils/commit-sha.utils");
|
|
47
|
-
const version_utils_1 = require("../../utils/version.utils");
|
|
48
|
-
const compute_diff_1 = require("./utils/compute-diff");
|
|
49
|
-
const exit_early_if_skip_upload_env_var_set_1 = require("./utils/exit-early-if-skip-upload-env-var-set");
|
|
50
|
-
const replayCommandHandler = async ({ replayTarget, executionOptions, screenshottingOptions, apiToken, sessionId, commitSha: commitSha_, baseTestRunId, cookiesFile, generatedBy, testRunId, replayEventsDependencies, debugger: enableStepThroughDebugger, suppressScreenshotDiffLogging, }) => {
|
|
51
|
-
var _a;
|
|
52
|
-
if (executionOptions.headless === true &&
|
|
53
|
-
enableStepThroughDebugger === true) {
|
|
54
|
-
throw new Error("Cannot run with both --debugger flag and --headless flag at the same time.");
|
|
55
|
-
}
|
|
56
|
-
const rootTransaction = (_a = Sentry.getCurrentHub().getScope()) === null || _a === void 0 ? void 0 : _a.getTransaction();
|
|
57
|
-
const handlerSpanContext = {
|
|
58
|
-
name: "replay.command_handler",
|
|
59
|
-
description: "Handle the replay command",
|
|
60
|
-
op: "replay.command_handler",
|
|
61
|
-
};
|
|
62
|
-
let transaction;
|
|
63
|
-
if (rootTransaction) {
|
|
64
|
-
transaction = rootTransaction.startChild(handlerSpanContext);
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
transaction = Sentry.startTransaction(handlerSpanContext);
|
|
68
|
-
}
|
|
69
|
-
Sentry.getCurrentHub().configureScope((scope) => scope.setSpan(transaction));
|
|
70
|
-
const logger = loglevel_1.default.getLogger(common_1.METICULOUS_LOGGER_NAME);
|
|
71
|
-
const client = (0, client_1.createClient)({ apiToken });
|
|
72
|
-
// 1. Check session files
|
|
73
|
-
const fetchSessions = transaction.startChild({ op: "fetchingSessions" });
|
|
74
|
-
const { data: session } = await (0, sessions_1.getOrFetchRecordedSession)(client, sessionId);
|
|
75
|
-
const { data: sessionData } = await (0, sessions_1.getOrFetchRecordedSessionData)(client, sessionId);
|
|
76
|
-
fetchSessions.finish();
|
|
77
|
-
// 2. Guess commit SHA1
|
|
78
|
-
const commitSha = (await (0, commit_sha_utils_1.getCommitSha)(commitSha_)) || "unknown";
|
|
79
|
-
logger.debug(`Commit: ${commitSha}`);
|
|
80
|
-
const meticulousSha = await (0, version_utils_1.getMeticulousVersion)();
|
|
81
|
-
// 3. If simulationIdForAssets specified then download assets & spin up local server
|
|
82
|
-
const serveOrGetAppUrlSpan = transaction.startChild({
|
|
83
|
-
op: "serveOrGetAppUrl",
|
|
84
|
-
});
|
|
85
|
-
const { appUrl, closeServer } = await serveOrGetAppUrl(client, replayTarget);
|
|
86
|
-
serveOrGetAppUrlSpan.finish();
|
|
87
|
-
// 4. Load replay package
|
|
88
|
-
let replayEvents;
|
|
89
|
-
try {
|
|
90
|
-
logger.debug("Loading replayer package...");
|
|
91
|
-
const replayer = await require("@alwaysmeticulous/replayer");
|
|
92
|
-
replayEvents = replayer.replayEvents;
|
|
93
|
-
}
|
|
94
|
-
catch (error) {
|
|
95
|
-
logger.error("Error: could not import @alwaysmeticulous/replayer");
|
|
96
|
-
logger.error(error);
|
|
97
|
-
process.exit(1);
|
|
98
|
-
}
|
|
99
|
-
// Report replay start
|
|
100
|
-
logger.debug("Reporting replay started...");
|
|
101
|
-
const replayCommandId = await (0, replay_api_1.getReplayCommandId)(client, sessionId);
|
|
102
|
-
// 5. Create replay directory
|
|
103
|
-
logger.debug("Creating directory to store replay output...");
|
|
104
|
-
await (0, promises_1.mkdir)((0, path_1.join)((0, common_1.getMeticulousLocalDataDir)(), "replays"), {
|
|
105
|
-
recursive: true,
|
|
106
|
-
});
|
|
107
|
-
const tempDirName = (0, local_data_utils_1.sanitizeFilename)(`${new Date().toISOString()}-`);
|
|
108
|
-
const tempDir = await (0, promises_1.mkdtemp)((0, path_1.join)((0, common_1.getMeticulousLocalDataDir)(), "replays", tempDirName));
|
|
109
|
-
// 6. Create and save replay parameters
|
|
110
|
-
logger.debug("Snapshotting replay parameters...");
|
|
111
|
-
const replayEventsParams = {
|
|
112
|
-
appUrl: appUrl !== null && appUrl !== void 0 ? appUrl : null,
|
|
113
|
-
replayExecutionOptions: executionOptions,
|
|
114
|
-
browser: null,
|
|
115
|
-
outputDir: tempDir,
|
|
116
|
-
session,
|
|
117
|
-
recordingId: "manual-replay",
|
|
118
|
-
meticulousSha: "meticulousSha",
|
|
119
|
-
generatedBy,
|
|
120
|
-
testRunId,
|
|
121
|
-
dependencies: replayEventsDependencies,
|
|
122
|
-
enableStepThroughDebugger,
|
|
123
|
-
screenshottingOptions,
|
|
124
|
-
cookiesFile: cookiesFile !== null && cookiesFile !== void 0 ? cookiesFile : null,
|
|
125
|
-
};
|
|
126
|
-
await (0, promises_1.writeFile)((0, path_1.join)(tempDir, "replayEventsParams.json"), JSON.stringify(replayEventsParams));
|
|
127
|
-
// 7. Perform replay
|
|
128
|
-
logger.debug("Beggining replay...");
|
|
129
|
-
const startTime = luxon_1.DateTime.utc();
|
|
130
|
-
await replayEvents({
|
|
131
|
-
...replayEventsParams,
|
|
132
|
-
sessionData,
|
|
133
|
-
parentPerformanceSpan: transaction.startChild({ op: "replayEvents" }),
|
|
134
|
-
});
|
|
135
|
-
closeServer === null || closeServer === void 0 ? void 0 : closeServer();
|
|
136
|
-
const endTime = luxon_1.DateTime.utc();
|
|
137
|
-
logger.info(`Simulation time: ${endTime.diff(startTime).as("seconds")} seconds`);
|
|
138
|
-
(0, exit_early_if_skip_upload_env_var_set_1.exitEarlyIfSkipUploadEnvVarSet)(baseTestRunId);
|
|
139
|
-
logger.info("Sending simulation results to Meticulous");
|
|
140
|
-
// 8. Create a Zip archive containing the replay files
|
|
141
|
-
const createReplayArchiveSpan = transaction.startChild({
|
|
142
|
-
op: "createArchiveAndUpload",
|
|
143
|
-
});
|
|
144
|
-
const archivePath = await (0, archive_1.createReplayArchive)(tempDir);
|
|
145
|
-
createReplayArchiveSpan.finish();
|
|
146
|
-
try {
|
|
147
|
-
// 9. Get upload URL
|
|
148
|
-
const getReplayPushUrlSpan = transaction.startChild({
|
|
149
|
-
op: "getReplayPushUrl",
|
|
150
|
-
});
|
|
151
|
-
const replay = await (0, replay_api_1.createReplay)({
|
|
152
|
-
client,
|
|
153
|
-
commitSha,
|
|
154
|
-
sessionId,
|
|
155
|
-
meticulousSha,
|
|
156
|
-
version: "v2",
|
|
157
|
-
metadata: { generatedBy },
|
|
158
|
-
});
|
|
159
|
-
const uploadUrlData = await (0, replay_api_1.getReplayPushUrl)(client, replay.id);
|
|
160
|
-
if (!uploadUrlData) {
|
|
161
|
-
logger.error("Error: Could not get a push URL from the Meticulous API");
|
|
162
|
-
process.exit(1);
|
|
163
|
-
}
|
|
164
|
-
const uploadUrl = uploadUrlData.pushUrl;
|
|
165
|
-
getReplayPushUrlSpan.finish();
|
|
166
|
-
// 10. Send archive to S3
|
|
167
|
-
const uploadArchiveSpan = transaction.startChild({ op: "uploadArchive" });
|
|
168
|
-
try {
|
|
169
|
-
await (0, upload_1.uploadArchive)(uploadUrl, archivePath);
|
|
170
|
-
}
|
|
171
|
-
catch (error) {
|
|
172
|
-
await (0, replay_api_1.putReplayPushedStatus)(client, replay.id, "failure", replayCommandId).catch(logger.error);
|
|
173
|
-
logger.error(error);
|
|
174
|
-
process.exit(1);
|
|
175
|
-
}
|
|
176
|
-
uploadArchiveSpan.finish();
|
|
177
|
-
// 11. Report successful upload to Meticulous
|
|
178
|
-
const updatedProjectBuild = await (0, replay_api_1.putReplayPushedStatus)(client, replay.id, "success", replayCommandId);
|
|
179
|
-
logger.info("Simulation artifacts successfully sent to Meticulous");
|
|
180
|
-
logger.debug(updatedProjectBuild);
|
|
181
|
-
const replayUrl = (0, replay_api_1.getReplayUrl)(replay);
|
|
182
|
-
logger.info("=======");
|
|
183
|
-
logger.info(`View simulation at: ${replayUrl}`);
|
|
184
|
-
logger.info("=======");
|
|
185
|
-
// 12. Diff against base replay screenshot if one is provided
|
|
186
|
-
const computeDiffSpan = transaction.startChild({
|
|
187
|
-
op: "computeDiff",
|
|
188
|
-
});
|
|
189
|
-
const computeDiffsLogger = loglevel_1.default.getLogger(`METICULOUS_LOGGER_NAME/compute-diffs`);
|
|
190
|
-
if (suppressScreenshotDiffLogging) {
|
|
191
|
-
computeDiffsLogger.setLevel("ERROR", false);
|
|
192
|
-
}
|
|
193
|
-
else {
|
|
194
|
-
computeDiffsLogger.setLevel(logger.getLevel(), false);
|
|
195
|
-
}
|
|
196
|
-
const screenshotDiffResultsByBaseReplayId = screenshottingOptions.enabled && baseTestRunId
|
|
197
|
-
? await (0, compute_diff_1.computeDiff)({
|
|
198
|
-
client,
|
|
199
|
-
baseTestRunId,
|
|
200
|
-
sessionId,
|
|
201
|
-
headReplayId: replay.id,
|
|
202
|
-
tempDir,
|
|
203
|
-
screenshottingOptions,
|
|
204
|
-
logger: computeDiffsLogger,
|
|
205
|
-
})
|
|
206
|
-
: {};
|
|
207
|
-
computeDiffSpan.finish();
|
|
208
|
-
return { replay, screenshotDiffResultsByBaseReplayId };
|
|
209
|
-
}
|
|
210
|
-
finally {
|
|
211
|
-
await (0, archive_1.deleteArchive)(archivePath);
|
|
212
|
-
transaction.finish();
|
|
213
|
-
}
|
|
214
|
-
};
|
|
215
|
-
exports.replayCommandHandler = replayCommandHandler;
|
|
216
|
-
const serveOrGetAppUrl = async (client, replayTarget) => {
|
|
217
|
-
if (replayTarget.type === "snapshotted-assets") {
|
|
218
|
-
const server = await (0, serve_assets_from_simulation_1.serveAssetsFromSimulation)(client, replayTarget.simulationIdForAssets);
|
|
219
|
-
return {
|
|
220
|
-
appUrl: server.url,
|
|
221
|
-
closeServer: server.closeServer,
|
|
222
|
-
};
|
|
223
|
-
}
|
|
224
|
-
if (replayTarget.type === "url") {
|
|
225
|
-
return { appUrl: replayTarget.appUrl };
|
|
226
|
-
}
|
|
227
|
-
if (replayTarget.type === "original-recorded-url") {
|
|
228
|
-
return {};
|
|
229
|
-
}
|
|
230
|
-
return unknownReplayTargetType(replayTarget);
|
|
231
|
-
};
|
|
232
|
-
const unknownReplayTargetType = (replayTarget) => {
|
|
233
|
-
throw new Error(`Unknown type of replay target: ${JSON.stringify(replayTarget)}`);
|
|
234
|
-
};
|
|
235
7
|
const rawReplayCommandHandler = async ({ apiToken, commitSha, sessionId, appUrl, simulationIdForAssets, headless, devTools, bypassCSP, screenshot, diffThreshold, diffPixelThreshold, shiftTime, networkStubbing, moveBeforeClick, cookiesFile, disableRemoteFonts, noSandbox, skipPauses, maxDurationMs, maxEventCount, storyboard, essentialFeaturesOnly, debugger: enableStepThroughDebugger, }) => {
|
|
236
8
|
const executionOptions = {
|
|
237
9
|
headless,
|
|
@@ -258,8 +30,7 @@ const rawReplayCommandHandler = async ({ apiToken, commitSha, sessionId, appUrl,
|
|
|
258
30
|
storyboardOptions,
|
|
259
31
|
}
|
|
260
32
|
: { enabled: false };
|
|
261
|
-
const
|
|
262
|
-
const { replay } = await (0, exports.replayCommandHandler)({
|
|
33
|
+
const { replay } = await (0, replay_orchestrator_1.replayAndStoreResults)({
|
|
263
34
|
replayTarget: (0, exports.getReplayTarget)({
|
|
264
35
|
appUrl: appUrl !== null && appUrl !== void 0 ? appUrl : null,
|
|
265
36
|
simulationIdForAssets: simulationIdForAssets !== null && simulationIdForAssets !== void 0 ? simulationIdForAssets : null,
|
|
@@ -273,7 +44,6 @@ const rawReplayCommandHandler = async ({ apiToken, commitSha, sessionId, appUrl,
|
|
|
273
44
|
generatedBy: generatedByOption,
|
|
274
45
|
baseTestRunId: null,
|
|
275
46
|
testRunId: null,
|
|
276
|
-
replayEventsDependencies,
|
|
277
47
|
debugger: enableStepThroughDebugger,
|
|
278
48
|
suppressScreenshotDiffLogging: false,
|
|
279
49
|
});
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.runAllTestsCommand = void 0;
|
|
4
|
-
const client_1 = require("
|
|
4
|
+
const client_1 = require("@alwaysmeticulous/client");
|
|
5
|
+
const common_1 = require("@alwaysmeticulous/common");
|
|
6
|
+
const replay_orchestrator_1 = require("@alwaysmeticulous/replay-orchestrator");
|
|
5
7
|
const test_run_api_1 = require("../../api/test-run.api");
|
|
6
8
|
const command_builder_1 = require("../../command-utils/command-builder");
|
|
7
9
|
const common_options_1 = require("../../command-utils/common-options");
|
|
8
|
-
const run_all_tests_1 = require("../../parallel-tests/run-all-tests");
|
|
9
|
-
const commit_sha_utils_1 = require("../../utils/commit-sha.utils");
|
|
10
10
|
const handler = async ({ apiToken, commitSha: commitSha_, baseCommitSha, appUrl, headless, devTools, bypassCSP, diffThreshold, diffPixelThreshold, shiftTime, networkStubbing, githubSummary, parallelize, parallelTasks: parrelelTasks_, maxRetriesOnFailure, rerunTestsNTimes, useCache, testsFile, disableRemoteFonts, noSandbox, skipPauses, moveBeforeClick, maxDurationMs, maxEventCount, storyboard, essentialFeaturesOnly, baseTestRunId, }) => {
|
|
11
11
|
const executionOptions = {
|
|
12
12
|
headless,
|
|
@@ -31,12 +31,12 @@ const handler = async ({ apiToken, commitSha: commitSha_, baseCommitSha, appUrl,
|
|
|
31
31
|
storyboardOptions,
|
|
32
32
|
};
|
|
33
33
|
const parrelelTasks = parallelize ? parrelelTasks_ : 1;
|
|
34
|
-
const commitSha = (await (0,
|
|
34
|
+
const commitSha = (await (0, common_1.getCommitSha)(commitSha_)) || "unknown";
|
|
35
35
|
const client = (0, client_1.createClient)({ apiToken });
|
|
36
36
|
const cachedTestRunResults = useCache
|
|
37
37
|
? await (0, test_run_api_1.getCachedTestRunResults)({ client, commitSha })
|
|
38
38
|
: [];
|
|
39
|
-
const { testRun } = await (0,
|
|
39
|
+
const { testRun } = await (0, replay_orchestrator_1.executeTestRun)({
|
|
40
40
|
testsFile: testsFile !== null && testsFile !== void 0 ? testsFile : null,
|
|
41
41
|
executionOptions,
|
|
42
42
|
screenshottingOptions,
|
|
@@ -4,15 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.showProjectCommand = void 0;
|
|
7
|
+
const client_1 = require("@alwaysmeticulous/client");
|
|
7
8
|
const common_1 = require("@alwaysmeticulous/common");
|
|
8
9
|
const loglevel_1 = __importDefault(require("loglevel"));
|
|
9
|
-
const client_1 = require("../../api/client");
|
|
10
|
-
const project_api_1 = require("../../api/project.api");
|
|
11
10
|
const command_builder_1 = require("../../command-utils/command-builder");
|
|
12
11
|
const handler = async ({ apiToken }) => {
|
|
13
12
|
const logger = loglevel_1.default.getLogger(common_1.METICULOUS_LOGGER_NAME);
|
|
14
13
|
const client = (0, client_1.createClient)({ apiToken });
|
|
15
|
-
const project = await (0,
|
|
14
|
+
const project = await (0, client_1.getProject)(client);
|
|
16
15
|
if (!project) {
|
|
17
16
|
logger.error("Could not retrieve project data. Is the API token correct?");
|
|
18
17
|
process.exit(1);
|
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
export { GetLatestTestRunResultsOptions } from "./api/test-run.api";
|
|
2
|
-
export { bootstrapCommand } from "./commands/bootstrap/bootstrap.command";
|
|
3
|
-
export { createTestCommand } from "./commands/create-test/create-test.command";
|
|
4
1
|
export { downloadReplayCommand } from "./commands/download-replay/download-replay.command";
|
|
5
2
|
export { downloadSessionCommand } from "./commands/download-session/download-session.command";
|
|
6
3
|
export { recordCommand } from "./commands/record/record.command";
|
|
7
4
|
export { replayCommand } from "./commands/replay/replay.command";
|
|
8
5
|
export { runAllTestsCommand } from "./commands/run-all-tests/run-all-tests.command";
|
|
9
|
-
export { screenshotDiffCommand } from "./commands/screenshot-diff/screenshot-diff.command";
|
|
10
6
|
export { showProjectCommand } from "./commands/show-project/show-project.command";
|
|
11
|
-
export { updateTestsCommand } from "./commands/update-tests/update-tests.command";
|
|
12
|
-
export { runAllTests, RunAllTestsResult, RunAllTestsTestRun as TestRun, RunAllTestsTestRun, } from "./parallel-tests/run-all-tests";
|
|
13
7
|
export { initLogger, setLogLevel } from "./utils/logger.utils";
|
|
14
|
-
export { initSentry } from "./utils/sentry.utils";
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
var bootstrap_command_1 = require("./commands/bootstrap/bootstrap.command");
|
|
5
|
-
Object.defineProperty(exports, "bootstrapCommand", { enumerable: true, get: function () { return bootstrap_command_1.bootstrapCommand; } });
|
|
6
|
-
var create_test_command_1 = require("./commands/create-test/create-test.command");
|
|
7
|
-
Object.defineProperty(exports, "createTestCommand", { enumerable: true, get: function () { return create_test_command_1.createTestCommand; } });
|
|
3
|
+
exports.setLogLevel = exports.initLogger = exports.showProjectCommand = exports.runAllTestsCommand = exports.replayCommand = exports.recordCommand = exports.downloadSessionCommand = exports.downloadReplayCommand = void 0;
|
|
8
4
|
var download_replay_command_1 = require("./commands/download-replay/download-replay.command");
|
|
9
5
|
Object.defineProperty(exports, "downloadReplayCommand", { enumerable: true, get: function () { return download_replay_command_1.downloadReplayCommand; } });
|
|
10
6
|
var download_session_command_1 = require("./commands/download-session/download-session.command");
|
|
@@ -15,16 +11,8 @@ var replay_command_1 = require("./commands/replay/replay.command");
|
|
|
15
11
|
Object.defineProperty(exports, "replayCommand", { enumerable: true, get: function () { return replay_command_1.replayCommand; } });
|
|
16
12
|
var run_all_tests_command_1 = require("./commands/run-all-tests/run-all-tests.command");
|
|
17
13
|
Object.defineProperty(exports, "runAllTestsCommand", { enumerable: true, get: function () { return run_all_tests_command_1.runAllTestsCommand; } });
|
|
18
|
-
var screenshot_diff_command_1 = require("./commands/screenshot-diff/screenshot-diff.command");
|
|
19
|
-
Object.defineProperty(exports, "screenshotDiffCommand", { enumerable: true, get: function () { return screenshot_diff_command_1.screenshotDiffCommand; } });
|
|
20
14
|
var show_project_command_1 = require("./commands/show-project/show-project.command");
|
|
21
15
|
Object.defineProperty(exports, "showProjectCommand", { enumerable: true, get: function () { return show_project_command_1.showProjectCommand; } });
|
|
22
|
-
var update_tests_command_1 = require("./commands/update-tests/update-tests.command");
|
|
23
|
-
Object.defineProperty(exports, "updateTestsCommand", { enumerable: true, get: function () { return update_tests_command_1.updateTestsCommand; } });
|
|
24
|
-
var run_all_tests_1 = require("./parallel-tests/run-all-tests");
|
|
25
|
-
Object.defineProperty(exports, "runAllTests", { enumerable: true, get: function () { return run_all_tests_1.runAllTests; } });
|
|
26
16
|
var logger_utils_1 = require("./utils/logger.utils");
|
|
27
17
|
Object.defineProperty(exports, "initLogger", { enumerable: true, get: function () { return logger_utils_1.initLogger; } });
|
|
28
18
|
Object.defineProperty(exports, "setLogLevel", { enumerable: true, get: function () { return logger_utils_1.setLogLevel; } });
|
|
29
|
-
var sentry_utils_1 = require("./utils/sentry.utils");
|
|
30
|
-
Object.defineProperty(exports, "initSentry", { enumerable: true, get: function () { return sentry_utils_1.initSentry; } });
|