@empiricalrun/playwright-utils 0.28.7 → 0.29.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/CHANGELOG.md +45 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -6
- package/dist/playwright-extensions.d.ts.map +1 -1
- package/dist/reporter/empirical-reporter.d.ts +1 -1
- package/dist/reporter/empirical-reporter.d.ts.map +1 -1
- package/dist/reporter/empirical-reporter.js +38 -38
- package/dist/reporter/uploader.d.ts +1 -12
- package/dist/reporter/uploader.d.ts.map +1 -1
- package/dist/reporter/uploader.js +0 -42
- package/dist/reporter/util.d.ts +3 -21
- package/dist/reporter/util.d.ts.map +1 -1
- package/dist/reporter/util.js +0 -17
- package/package.json +6 -6
- package/playwright.config.ts +7 -4
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/reporter/base.d.ts +0 -41
- package/dist/reporter/base.d.ts.map +0 -1
- package/dist/reporter/base.js +0 -177
- package/dist/reporter/custom.d.ts +0 -72
- package/dist/reporter/custom.d.ts.map +0 -1
- package/dist/reporter/custom.js +0 -824
- package/dist/reporter/queue.d.ts +0 -8
- package/dist/reporter/queue.d.ts.map +0 -1
- package/dist/reporter/queue.js +0 -88
- package/dist/reporter/reporterV2.d.ts +0 -36
- package/dist/reporter/reporterV2.d.ts.map +0 -1
- package/dist/reporter/reporterV2.js +0 -19
- package/dist/reporter/third_party/html-reporter-types.d.ts +0 -107
- package/dist/reporter/third_party/html-reporter-types.d.ts.map +0 -1
- package/dist/reporter/third_party/html-reporter-types.js +0 -18
- package/dist/reporter/types.d.ts +0 -3
- package/dist/reporter/types.d.ts.map +0 -1
- package/dist/reporter/types.js +0 -2
- package/eslint.config.mjs +0 -23
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,50 @@
|
|
|
1
1
|
# @empiricalrun/playwright-utils
|
|
2
2
|
|
|
3
|
+
## 0.29.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- b01be05: feat: move task queue to r2-uploader package
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- 6920cda: feat: send all attachments from pw-utils to dash
|
|
12
|
+
- Updated dependencies [b01be05]
|
|
13
|
+
- Updated dependencies [e65313e]
|
|
14
|
+
- @empiricalrun/r2-uploader@0.4.0
|
|
15
|
+
- @empiricalrun/test-gen@0.78.0
|
|
16
|
+
- @empiricalrun/llm@0.24.0
|
|
17
|
+
|
|
18
|
+
## 0.28.8
|
|
19
|
+
|
|
20
|
+
### Patch Changes
|
|
21
|
+
|
|
22
|
+
- a085efd: chore: remove custom reporter for playwright 1.47
|
|
23
|
+
- 7077c69: fix: empirical-reporter video url array bug
|
|
24
|
+
- Updated dependencies [8ff49e5]
|
|
25
|
+
- Updated dependencies [bc38c65]
|
|
26
|
+
- Updated dependencies [a45714d]
|
|
27
|
+
- Updated dependencies [e5e45e0]
|
|
28
|
+
- Updated dependencies [ba65440]
|
|
29
|
+
- Updated dependencies [cf991ee]
|
|
30
|
+
- Updated dependencies [44373a4]
|
|
31
|
+
- Updated dependencies [8a206cf]
|
|
32
|
+
- Updated dependencies [eda0ccd]
|
|
33
|
+
- Updated dependencies [151dc8f]
|
|
34
|
+
- Updated dependencies [49b44a6]
|
|
35
|
+
- Updated dependencies [25bd9b6]
|
|
36
|
+
- Updated dependencies [1f7e8b0]
|
|
37
|
+
- Updated dependencies [42e19ee]
|
|
38
|
+
- Updated dependencies [82a6fe7]
|
|
39
|
+
- Updated dependencies [f9a7023]
|
|
40
|
+
- Updated dependencies [d56954c]
|
|
41
|
+
- Updated dependencies [02c3532]
|
|
42
|
+
- Updated dependencies [8f3a25f]
|
|
43
|
+
- Updated dependencies [bd61b13]
|
|
44
|
+
- Updated dependencies [a25735a]
|
|
45
|
+
- @empiricalrun/llm@0.23.0
|
|
46
|
+
- @empiricalrun/test-gen@0.77.0
|
|
47
|
+
|
|
3
48
|
## 0.28.7
|
|
4
49
|
|
|
5
50
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAI7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAczD,wBAAgB,gBAAgB,IAAI,MAAM,CAazC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAI7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAczD,wBAAgB,gBAAgB,IAAI,MAAM,CAazC;AAwCD,eAAO,MAAM,UAAU,EAAE,oBA0BxB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,iBAarB,CAAC"}
|
package/dist/config/index.js
CHANGED
|
@@ -53,13 +53,8 @@ function isPlaywrightV147() {
|
|
|
53
53
|
return version && version.includes("1.47") ? true : false;
|
|
54
54
|
}
|
|
55
55
|
function getReporters() {
|
|
56
|
-
// TODO: Remove this once we have migrated to 1.53.X for all repos
|
|
57
56
|
if (isPlaywrightV147()) {
|
|
58
|
-
|
|
59
|
-
["list"],
|
|
60
|
-
["json", { outputFile: "playwright-report/summary.json" }],
|
|
61
|
-
["./node_modules/@empiricalrun/playwright-utils/dist/reporter/custom.js"],
|
|
62
|
-
];
|
|
57
|
+
throw new Error("Please upgrade to Playwright version 1.53.X or above to use the latest reporters");
|
|
63
58
|
}
|
|
64
59
|
return [
|
|
65
60
|
["list"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright-extensions.d.ts","sourceRoot":"","sources":["../src/playwright-extensions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"playwright-extensions.d.ts","sourceRoot":"","sources":["../src/playwright-extensions.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7C,CAAC;AAEF,OAAO,QAAQ,iBAAiB,CAAC;IAC/B,UAAU,OAAQ,SAAQ,eAAe;KAAG;CAC7C;AAED,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,OAAQ,SAAQ,eAAe;KAAG;CAC7C"}
|
|
@@ -9,7 +9,7 @@ declare class EmpiricalReporter implements Reporter {
|
|
|
9
9
|
private _urlPrefix;
|
|
10
10
|
private checkR2Creds;
|
|
11
11
|
constructor();
|
|
12
|
-
private
|
|
12
|
+
private enqueTestAttachmentUploadTask;
|
|
13
13
|
onTestEnd(test: TestCase, result: TestResult): void;
|
|
14
14
|
onEnd(result: FullResult): Promise<void>;
|
|
15
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empirical-reporter.d.ts","sourceRoot":"","sources":["../../src/reporter/empirical-reporter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"empirical-reporter.d.ts","sourceRoot":"","sources":["../../src/reporter/empirical-reporter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,UAAU,EACX,MAAM,2BAA2B,CAAC;AAanC,cAAM,iBAAkB,YAAW,QAAQ;IACzC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,kBAAkB,CAAyB;IACnD,OAAO,CAAC,oBAAoB,CAAkB;IAC9C,OAAO,CAAC,oBAAoB,CAG1B;IACF,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,UAAU,CACwE;IAE1F,OAAO,CAAC,YAAY;;IAyBpB,OAAO,CAAC,6BAA6B,CA4BnC;IAEF,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU;IAsEtC,KAAK,CAAC,MAAM,EAAE,UAAU;CA+G/B;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -3,11 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const
|
|
6
|
+
const r2_uploader_1 = require("@empiricalrun/r2-uploader");
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const logger_1 = require("../logger");
|
|
10
|
-
const queue_1 = require("./queue");
|
|
11
10
|
const uploader_1 = require("./uploader");
|
|
12
11
|
const util_1 = require("./util");
|
|
13
12
|
class EmpiricalReporter {
|
|
@@ -36,9 +35,11 @@ class EmpiricalReporter {
|
|
|
36
35
|
this._destinationDir = path_1.default.join(process.env.PROJECT_NAME, process.env.TEST_RUN_GITHUB_ACTION_ID);
|
|
37
36
|
this._willUploadArtifacts = this.checkR2Creds();
|
|
38
37
|
}
|
|
39
|
-
|
|
40
|
-
if (!attachment.path)
|
|
38
|
+
enqueTestAttachmentUploadTask = async (attachment) => {
|
|
39
|
+
if (!attachment.path) {
|
|
40
|
+
logger_1.logger.warn(`[Empirical Reporter] Skipping attachment without path: ${attachment.name}`);
|
|
41
41
|
return;
|
|
42
|
+
}
|
|
42
43
|
const exists = await (0, util_1.checkFileExistsAsync)(attachment.path);
|
|
43
44
|
if (exists) {
|
|
44
45
|
logger_1.logger.debug(`[Empirical Reporter] Processing attachment: File exists`);
|
|
@@ -54,7 +55,7 @@ class EmpiricalReporter {
|
|
|
54
55
|
uploadBucket: this._uploadBucket,
|
|
55
56
|
baseUrl: this._baseUrl,
|
|
56
57
|
});
|
|
57
|
-
return (0,
|
|
58
|
+
return (0, r2_uploader_1.sendTaskToQueue)(uploadTask);
|
|
58
59
|
};
|
|
59
60
|
onTestEnd(test, result) {
|
|
60
61
|
if (!this._willUploadArtifacts) {
|
|
@@ -65,51 +66,50 @@ class EmpiricalReporter {
|
|
|
65
66
|
return;
|
|
66
67
|
}
|
|
67
68
|
try {
|
|
68
|
-
const attachmentPromises = result.attachments.map((attachment) => {
|
|
69
|
-
|
|
69
|
+
const attachmentPromises = result.attachments.map(async (attachment) => {
|
|
70
|
+
const fileMap = await this.enqueTestAttachmentUploadTask(attachment);
|
|
71
|
+
if (!fileMap) {
|
|
72
|
+
logger_1.logger.error(`No upload result for ${attachment}`);
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
// Since we are uploading a single attachmnet, the fileMap will have one entry
|
|
76
|
+
const url = Object.values(fileMap)[0];
|
|
77
|
+
if (!url) {
|
|
78
|
+
logger_1.logger.error(`No url in file map for ${attachment}`);
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
if (!attachment.path) {
|
|
82
|
+
// This should never happen because we only upload if attachment.path is there
|
|
83
|
+
logger_1.logger.error(`No path in file map for ${attachment}`);
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
name: attachment.name,
|
|
88
|
+
contentType: attachment.contentType,
|
|
89
|
+
path: attachment.path,
|
|
90
|
+
url,
|
|
91
|
+
};
|
|
70
92
|
});
|
|
71
93
|
const testCaseRunEventTask = async () => {
|
|
72
94
|
return Promise.all(attachmentPromises)
|
|
73
95
|
.then((uploadedAttachments) => {
|
|
74
96
|
logger_1.logger.debug(`[Empirical Reporter] Attachments for test ${test.title} are uploaded:`, uploadedAttachments);
|
|
75
97
|
const { suites, projectName } = (0, util_1.suitesAndProjectForTest)(test);
|
|
76
|
-
|
|
98
|
+
const params = {
|
|
77
99
|
test,
|
|
78
|
-
result,
|
|
79
|
-
assetsURL: {
|
|
80
|
-
trace: "",
|
|
81
|
-
videos: [],
|
|
82
|
-
errorContext: "",
|
|
83
|
-
},
|
|
84
100
|
suites,
|
|
101
|
+
result,
|
|
85
102
|
projectName,
|
|
86
|
-
|
|
103
|
+
attachments: uploadedAttachments.filter((a) => a !== undefined),
|
|
104
|
+
runId: process.env.TEST_RUN_GITHUB_ACTION_ID,
|
|
87
105
|
};
|
|
88
|
-
uploadedAttachments.forEach((attachment) => {
|
|
89
|
-
if (attachment) {
|
|
90
|
-
Object.entries(attachment).forEach(([key, value]) => {
|
|
91
|
-
if (key.includes("video")) {
|
|
92
|
-
params.assetsURL.videos.push({
|
|
93
|
-
name: `test-${test.id}-slug-${(0, crypto_1.randomUUID)()}`,
|
|
94
|
-
url: value,
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
if (key.includes("trace")) {
|
|
98
|
-
params.assetsURL.trace = value;
|
|
99
|
-
}
|
|
100
|
-
if (key.includes("error-context")) {
|
|
101
|
-
params.assetsURL.errorContext = value;
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
106
|
return (0, util_1.sendTestCaseUpdateToDashboard)(params);
|
|
107
107
|
})
|
|
108
108
|
.catch((error) => {
|
|
109
109
|
logger_1.logger.error(`[Empirical Reporter] Error sending test case event for: ${test.title}:`, error);
|
|
110
110
|
});
|
|
111
111
|
};
|
|
112
|
-
void (0,
|
|
112
|
+
void (0, r2_uploader_1.sendTaskToQueue)(testCaseRunEventTask);
|
|
113
113
|
return;
|
|
114
114
|
}
|
|
115
115
|
catch (error) {
|
|
@@ -142,7 +142,7 @@ class EmpiricalReporter {
|
|
|
142
142
|
uploadBucket: this._uploadBucket,
|
|
143
143
|
baseUrl: this._baseUrl,
|
|
144
144
|
});
|
|
145
|
-
void (0,
|
|
145
|
+
void (0, r2_uploader_1.sendTaskToQueue)(uploadHtmlTask);
|
|
146
146
|
}
|
|
147
147
|
else {
|
|
148
148
|
logger_1.logger.error(`[Empirical Reporter] playwright-report/index.html does not exist at: ${htmlFilePath}`);
|
|
@@ -158,7 +158,7 @@ class EmpiricalReporter {
|
|
|
158
158
|
uploadBucket: this._uploadBucket,
|
|
159
159
|
baseUrl: this._baseUrl,
|
|
160
160
|
});
|
|
161
|
-
void (0,
|
|
161
|
+
void (0, r2_uploader_1.sendTaskToQueue)(uploadJsonTask);
|
|
162
162
|
}
|
|
163
163
|
else {
|
|
164
164
|
logger_1.logger.error(`[Empirical Reporter] summary.json does not exist at: ${jsonFilePath}`);
|
|
@@ -173,13 +173,13 @@ class EmpiricalReporter {
|
|
|
173
173
|
uploadBucket: this._uploadBucket,
|
|
174
174
|
baseUrl: this._baseUrl,
|
|
175
175
|
});
|
|
176
|
-
void (0,
|
|
176
|
+
void (0, r2_uploader_1.sendTaskToQueue)(uploadTraceTask);
|
|
177
177
|
}
|
|
178
178
|
else {
|
|
179
179
|
logger_1.logger.error(`[Empirical Reporter] playwright-report/trace does not exist at: ${traceFilePath}`);
|
|
180
180
|
return;
|
|
181
181
|
}
|
|
182
|
-
await (0,
|
|
182
|
+
await (0, r2_uploader_1.waitForTaskQueueToFinish)();
|
|
183
183
|
logger_1.logger.debug("[Empirical Reporter] All uploads finished");
|
|
184
184
|
const endTime = new Date().getTime();
|
|
185
185
|
logger_1.logger.debug("[Empirical Reporter] Finished final report upload at: ", new Intl.DateTimeFormat("en-US", {
|
|
@@ -1,15 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AsyncTask } from "./queue";
|
|
3
|
-
export declare function uploadFiles({ fileList, outputFolder, relativePath, }: {
|
|
4
|
-
outputFolder: string;
|
|
5
|
-
fileList?: string[];
|
|
6
|
-
relativePath: string;
|
|
7
|
-
}): Promise<FileMap | void>;
|
|
8
|
-
export declare function createUploadTask({ fileList, outputFolder, relativePath, }: {
|
|
9
|
-
outputFolder: string;
|
|
10
|
-
fileList?: string[];
|
|
11
|
-
relativePath?: string;
|
|
12
|
-
}): AsyncTask;
|
|
1
|
+
import { AsyncTask } from "@empiricalrun/r2-uploader";
|
|
13
2
|
/**
|
|
14
3
|
* Creates an async task for uploading files to R2 storage.
|
|
15
4
|
* This is an improved version of createUploadTask that:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploader.d.ts","sourceRoot":"","sources":["../../src/reporter/uploader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"uploader.d.ts","sourceRoot":"","sources":["../../src/reporter/uploader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA4B,MAAM,2BAA2B,CAAC;AAKhF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,OAAO,GACR,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,SAAS,CA8BZ"}
|
|
@@ -3,52 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.uploadFiles = uploadFiles;
|
|
7
|
-
exports.createUploadTask = createUploadTask;
|
|
8
6
|
exports.createUploadTaskV2 = createUploadTaskV2;
|
|
9
7
|
const r2_uploader_1 = require("@empiricalrun/r2-uploader");
|
|
10
8
|
const path_1 = __importDefault(require("path"));
|
|
11
9
|
const logger_1 = require("../logger");
|
|
12
|
-
// TODO: Remove this once we have migrated to 1.53.X for all repos
|
|
13
|
-
const R2_BUCKET_NAME = "test-report";
|
|
14
|
-
const R2_BASE_URL = "https://reports.empirical.run";
|
|
15
|
-
// TODO: Remove this once we have migrated to 1.53.X for all repos
|
|
16
|
-
async function uploadFiles({ fileList, outputFolder, relativePath, }) {
|
|
17
|
-
if (!process.env.PROJECT_NAME || !process.env.TEST_RUN_GITHUB_ACTION_ID) {
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
const urls = {};
|
|
21
|
-
const sourceDir = path_1.default.join(outputFolder, relativePath);
|
|
22
|
-
const destinationDir = path_1.default.join(process.env.PROJECT_NAME, process.env.TEST_RUN_GITHUB_ACTION_ID, relativePath);
|
|
23
|
-
const uploadedfiles = await (0, r2_uploader_1.uploadDirectory)({
|
|
24
|
-
sourceDir,
|
|
25
|
-
fileList,
|
|
26
|
-
destinationDir,
|
|
27
|
-
uploadBucket: R2_BUCKET_NAME,
|
|
28
|
-
});
|
|
29
|
-
Object.entries(uploadedfiles).forEach(([filePath]) => {
|
|
30
|
-
const fileName = filePath.split("/").pop() || "";
|
|
31
|
-
const fileUrl = new URL(path_1.default.join(destinationDir, fileName), R2_BASE_URL);
|
|
32
|
-
urls[fileName] = fileUrl.toString();
|
|
33
|
-
});
|
|
34
|
-
logger_1.logger.debug("Finished uploading files:", urls);
|
|
35
|
-
return urls;
|
|
36
|
-
}
|
|
37
|
-
// TODO: Remove this once we have migrated to 1.53.X for all repos
|
|
38
|
-
function createUploadTask({ fileList, outputFolder, relativePath = "", }) {
|
|
39
|
-
return async () => {
|
|
40
|
-
return uploadFiles({
|
|
41
|
-
fileList,
|
|
42
|
-
outputFolder,
|
|
43
|
-
relativePath,
|
|
44
|
-
})
|
|
45
|
-
.then((fileMap) => {
|
|
46
|
-
logger_1.logger.debug("Finished uploading files", fileMap);
|
|
47
|
-
return fileMap;
|
|
48
|
-
})
|
|
49
|
-
.catch((e) => logger_1.logger.error("Error uploading files", e));
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
10
|
/**
|
|
53
11
|
* Creates an async task for uploading files to R2 storage.
|
|
54
12
|
* This is an improved version of createUploadTask that:
|
package/dist/reporter/util.d.ts
CHANGED
|
@@ -1,23 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* Copyright (c) Microsoft Corporation.
|
|
4
|
-
* Modifications copyright (c) Forge AI Private Limited
|
|
5
|
-
*
|
|
6
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
* you may not use this file except in compliance with the License.
|
|
8
|
-
* You may obtain a copy of the License at
|
|
9
|
-
*
|
|
10
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
*
|
|
12
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
-
* See the License for the specific language governing permissions and
|
|
16
|
-
* limitations under the License.
|
|
17
|
-
*/
|
|
18
|
-
import { GenericPlaywrightAttachment } from "@empiricalrun/shared-types";
|
|
19
|
-
import { JSONReport as PlaywrightJSONReport, JSONReportSpec, TestCase } from "@playwright/test/reporter";
|
|
20
|
-
import { TestCaseRunEndEvent } from "./types";
|
|
1
|
+
import { GenericPlaywrightAttachment, TestCaseRunEndEventV2 } from "@empiricalrun/shared-types";
|
|
2
|
+
import { JSONReportSpec, JSONReport as PlaywrightJSONReport, TestCase } from "@playwright/test/reporter";
|
|
21
3
|
export declare function getPackageJsonPath(folderPath: string): string;
|
|
22
4
|
export declare function resolveReporterOutputPath(defaultValue: string, configDir: string, configValue: string | undefined): string;
|
|
23
5
|
export declare function normalizeAndSaveAttachment(outputPath: string, name: string, options?: {
|
|
@@ -34,7 +16,7 @@ export declare function suitesAndProjectForTest(test: TestCase): {
|
|
|
34
16
|
suites: string[];
|
|
35
17
|
projectName: string;
|
|
36
18
|
};
|
|
37
|
-
export declare function sendTestCaseUpdateToDashboard(params:
|
|
19
|
+
export declare function sendTestCaseUpdateToDashboard(params: TestCaseRunEndEventV2): Promise<void>;
|
|
38
20
|
export declare function safelySerialiseJSON(obj: any, keyFilter?: (key: string) => boolean): any;
|
|
39
21
|
export declare function updateHtmlZipFileAttachmentPaths(jsonFilePath: string, htmlFilePath: string, repoPath: string): Promise<void>;
|
|
40
22
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/reporter/util.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/reporter/util.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,cAAc,EAGd,UAAU,IAAI,oBAAoB,EAElC,QAAQ,EACT,MAAM,2BAA2B,CAAC;AAoBnC,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAmB7D;AAED,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAAG,SAAS,UAMhC;AAED,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5E,OAAO,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,CAyCD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ;;;EAwBrD;AAED,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAyDf;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,GAAG,EACR,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GACnC,GAAG,CAIL;AAED,wBAAsB,gCAAgC,CACpD,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,iBAuFjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,GAAG,EACb,iBAAiB,EAAE,GAAG,CACpB,MAAM,EACN;IAAE,WAAW,EAAE,2BAA2B,EAAE,CAAA;CAAE,EAAE,CACjD,QA+BF;AAGD,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,oBAAoB,EACjC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,QAavC;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,mBAAmB,EAAE,MAAM,EAC3B,QAAQ,EAAE,MAAM,EAChB,cAAc,GAAE,OAAe,GAC9B,GAAG,CAAC,MAAM,EAAE;IAAE,WAAW,EAAE,2BAA2B,EAAE,CAAA;CAAE,EAAE,CAAC,CA4C/D;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO7E;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gCAAgC,CACpD,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,6CAoClB"}
|
package/dist/reporter/util.js
CHANGED
|
@@ -1,21 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Original file: https://github.com/microsoft/playwright/blob/cf8c14f884b6f24966350a5f49b1580c3e183d21/packages/playwright/src/util.ts
|
|
4
|
-
* Copyright (c) Microsoft Corporation.
|
|
5
|
-
* Modifications copyright (c) Forge AI Private Limited
|
|
6
|
-
*
|
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
-
* you may not use this file except in compliance with the License.
|
|
9
|
-
* You may obtain a copy of the License at
|
|
10
|
-
*
|
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
*
|
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
* See the License for the specific language governing permissions and
|
|
17
|
-
* limitations under the License.
|
|
18
|
-
*/
|
|
19
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
20
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
21
4
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@empiricalrun/playwright-utils",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"registry": "https://registry.npmjs.org/",
|
|
6
6
|
"access": "public"
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"@types/adm-zip": "^0.5.7",
|
|
33
33
|
"playwright-core": "1.53.2",
|
|
34
34
|
"serve-handler": "^6.1.6",
|
|
35
|
-
"@empiricalrun/shared-types": "0.
|
|
35
|
+
"@empiricalrun/shared-types": "0.12.0"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@babel/code-frame": "^7.24.7",
|
|
@@ -43,15 +43,15 @@
|
|
|
43
43
|
"mailosaur": "^8.6.1",
|
|
44
44
|
"puppeteer-extra-plugin-recaptcha": "^3.6.8",
|
|
45
45
|
"rimraf": "^6.0.1",
|
|
46
|
-
"@empiricalrun/llm": "^0.
|
|
47
|
-
"@empiricalrun/r2-uploader": "^0.
|
|
48
|
-
"@empiricalrun/test-gen": "^0.
|
|
46
|
+
"@empiricalrun/llm": "^0.24.0",
|
|
47
|
+
"@empiricalrun/r2-uploader": "^0.4.0",
|
|
48
|
+
"@empiricalrun/test-gen": "^0.78.0"
|
|
49
49
|
},
|
|
50
50
|
"scripts": {
|
|
51
51
|
"dev": "tsc --build --watch",
|
|
52
52
|
"build": "tsc --build",
|
|
53
53
|
"clean": "tsc --build --clean",
|
|
54
|
-
"lint": "
|
|
54
|
+
"lint": "biome check --unsafe",
|
|
55
55
|
"test": "vitest run",
|
|
56
56
|
"test-browser": "npx playwright test",
|
|
57
57
|
"test:watch": "vitest"
|
package/playwright.config.ts
CHANGED
|
@@ -18,8 +18,11 @@ export default defineConfig({
|
|
|
18
18
|
actionTimeout: 5_000,
|
|
19
19
|
},
|
|
20
20
|
expect: { timeout: 5_000 },
|
|
21
|
-
projects: [
|
|
22
|
-
name: "
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
projects: [
|
|
22
|
+
{ name: "chromium" },
|
|
23
|
+
{
|
|
24
|
+
name: "regex-test",
|
|
25
|
+
testMatch: /.*\.random-ext.spec\.ts/,
|
|
26
|
+
},
|
|
27
|
+
],
|
|
25
28
|
});
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["./src/email.ts","./src/index.ts","./src/logger.ts","./src/playwright-extensions.ts","./src/auth/google.ts","./src/auth/index.ts","./src/auth/types.ts","./src/captcha/index.ts","./src/captcha/vision.ts","./src/config/index.ts","./src/config/devices/types.ts","./src/overlay-tests/cache.spec.ts","./src/overlay-tests/click.spec.ts","./src/overlay-tests/fixtures.ts","./src/overlay-tests/patch.spec.ts","./src/reporter/
|
|
1
|
+
{"root":["./src/email.ts","./src/index.ts","./src/logger.ts","./src/playwright-extensions.ts","./src/auth/google.ts","./src/auth/index.ts","./src/auth/types.ts","./src/captcha/index.ts","./src/captcha/vision.ts","./src/config/index.ts","./src/config/devices/types.ts","./src/overlay-tests/cache.spec.ts","./src/overlay-tests/click.spec.ts","./src/overlay-tests/fixtures.ts","./src/overlay-tests/patch.spec.ts","./src/reporter/empirical-reporter.ts","./src/reporter/uploader.ts","./src/reporter/util.ts","./src/test/constants.ts","./src/test/expect.ts","./src/test/index.ts","./src/test/types.ts","./src/test/scripts/agent-capabilities.ts","./src/test/scripts/index.ts","./src/test/scripts/locator-highlights.ts","./src/test/scripts/locator-vision.ts","./src/test/scripts/mouse-pointer.ts","./src/test/scripts/types.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/cache.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/index.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/prompt.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/types.ts","./src/test/scripts/pw-locator-patch/dismiss-overlays/utils.ts","./src/test/scripts/pw-locator-patch/highlight/click.ts","./src/test/scripts/pw-locator-patch/highlight/expect.ts","./src/test/scripts/pw-locator-patch/highlight/hover.ts","./src/test/scripts/pw-locator-patch/highlight/inner-text.ts","./src/test/scripts/pw-locator-patch/highlight/input-value.ts","./src/test/scripts/pw-locator-patch/highlight/is-checked.ts","./src/test/scripts/pw-locator-patch/highlight/is-disabled.ts","./src/test/scripts/pw-locator-patch/highlight/is-editable.ts","./src/test/scripts/pw-locator-patch/highlight/text-content.ts","./src/test/scripts/pw-locator-patch/utils/index.ts","./src/test/scripts/pw-locator-patch/vision/query.ts"],"version":"5.8.3"}
|
package/dist/reporter/base.d.ts
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Original file: https://github.com/microsoft/playwright/blob/cf8c14f884b6f24966350a5f49b1580c3e183d21/packages/playwright/src/reporters/base.ts
|
|
3
|
-
* Copyright (c) Microsoft Corporation.
|
|
4
|
-
* Modifications copyright (c) Forge AI Private Limited
|
|
5
|
-
*
|
|
6
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
* you may not use this file except in compliance with the License.
|
|
8
|
-
* You may obtain a copy of the License at
|
|
9
|
-
*
|
|
10
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
*
|
|
12
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
-
* See the License for the specific language governing permissions and
|
|
16
|
-
* limitations under the License.
|
|
17
|
-
*/
|
|
18
|
-
import type { FullConfig, Location, TestCase, TestError, TestResult, TestStep } from "@playwright/test/reporter";
|
|
19
|
-
export type TestResultOutput = {
|
|
20
|
-
chunk: string | Buffer;
|
|
21
|
-
type: "stdout" | "stderr";
|
|
22
|
-
};
|
|
23
|
-
export declare const kOutputSymbol: unique symbol;
|
|
24
|
-
type ErrorDetails = {
|
|
25
|
-
message: string;
|
|
26
|
-
location?: Location;
|
|
27
|
-
};
|
|
28
|
-
export declare const isTTY: boolean, ttyWidth: number, colors: any;
|
|
29
|
-
export declare function formatResultFailure(test: TestCase, result: TestResult, initialIndent: string, highlightCode: boolean): ErrorDetails[];
|
|
30
|
-
export declare function relativeFilePath(config: FullConfig, file: string): string;
|
|
31
|
-
export declare function stepSuffix(step: TestStep | undefined): string;
|
|
32
|
-
export declare function formatError(error: TestError, highlightCode: boolean): ErrorDetails;
|
|
33
|
-
export declare function separator(text?: string): string;
|
|
34
|
-
export declare function prepareErrorStack(stack: string): {
|
|
35
|
-
message: string;
|
|
36
|
-
stackLines: string[];
|
|
37
|
-
location?: Location;
|
|
38
|
-
};
|
|
39
|
-
export declare function stripAnsiEscapes(str: string): string;
|
|
40
|
-
export {};
|
|
41
|
-
//# sourceMappingURL=base.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/reporter/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,UAAU,EACV,QAAQ,EACT,MAAM,2BAA2B,CAAC;AAQnC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC3B,CAAC;AACF,eAAO,MAAM,aAAa,eAAmB,CAAC;AAE9C,KAAK,YAAY,GAAG;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAEF,eAAO,MAAQ,KAAK,WAAE,QAAQ,UAAE,MAAM,KA6ClC,CAAC;AAEL,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,UAAU,EAClB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,OAAO,GACrB,YAAY,EAAE,CAyBhB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,UAMpD;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,OAAO,GACrB,YAAY,CA+Bd;AAED,wBAAgB,SAAS,CAAC,IAAI,GAAE,MAAW,GAAG,MAAM,CAInD;AAMD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAmBA;AAMD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD"}
|