@empiricalrun/playwright-utils 0.38.6 → 0.39.1
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 +20 -0
- package/dist/overlay-tests/click.spec.js +2 -1
- package/dist/reporter/empirical-reporter.d.ts.map +1 -1
- package/dist/reporter/empirical-reporter.js +15 -4
- package/dist/reporter/uploader.d.ts +2 -2
- package/dist/reporter/uploader.d.ts.map +1 -1
- package/dist/reporter/uploader.js +25 -3
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +2 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @empiricalrun/playwright-utils
|
|
2
2
|
|
|
3
|
+
## 0.39.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 36fc057: chore: rename telemetry fields for consistency
|
|
8
|
+
- Updated dependencies [92254ba]
|
|
9
|
+
- @empiricalrun/r2-uploader@0.9.1
|
|
10
|
+
- @empiricalrun/test-gen@0.79.3
|
|
11
|
+
|
|
12
|
+
## 0.39.0
|
|
13
|
+
|
|
14
|
+
### Minor Changes
|
|
15
|
+
|
|
16
|
+
- d1aa88c: chore: remove hardcoded asset bucket domain
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- 5c8ac32: chore: more verbose logs for blob uploads
|
|
21
|
+
- @empiricalrun/test-gen@0.79.2
|
|
22
|
+
|
|
3
23
|
## 0.38.6
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
|
@@ -45,7 +45,8 @@ function getCacheDataWithTextContent({ textContent }) {
|
|
|
45
45
|
const finalZIndex = await targetButton.evaluate((el) => window.getComputedStyle(el).getPropertyValue("z-index"));
|
|
46
46
|
(0, fixtures_1.expect)(finalZIndex).toBe(initialZIndex);
|
|
47
47
|
});
|
|
48
|
-
|
|
48
|
+
// Skipped since it's flaky
|
|
49
|
+
fixtures_1.test.skip("should dismiss two-step overlay for click", async ({ page, server, }) => {
|
|
49
50
|
await page.goto(`${server.baseURL}/tos.html`);
|
|
50
51
|
// Assert that button and overlay load
|
|
51
52
|
await (0, fixtures_1.expect)(page.getByRole("button", { name: "Target" })).toBeVisible();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empirical-reporter.d.ts","sourceRoot":"","sources":["../../src/reporter/empirical-reporter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,UAAU,EACX,MAAM,2BAA2B,CAAC;AAkBnC,cAAM,iBAAkB,YAAW,QAAQ;IACzC,OAAO,CAAC,kBAAkB,CAAyB;IACnD,OAAO,CAAC,oBAAoB,CAG1B;IACF,OAAO,CAAC,sBAAsB,CAAuB;IACrD,OAAO,CAAC,YAAY,CAAgD;IACpE,OAAO,CAAC,iBAAiB,CAAyC;IAClE,OAAO,CAAC,gBAAgB,CAAkC;IAC1D,OAAO,CAAC,SAAS,CAAyB;;IAM1C,OAAO,CAAC,6BAA6B,CAkCnC;IAEF,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU;IAoFtC,KAAK,CAAC,MAAM,EAAE,UAAU;
|
|
1
|
+
{"version":3,"file":"empirical-reporter.d.ts","sourceRoot":"","sources":["../../src/reporter/empirical-reporter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,UAAU,EACX,MAAM,2BAA2B,CAAC;AAkBnC,cAAM,iBAAkB,YAAW,QAAQ;IACzC,OAAO,CAAC,kBAAkB,CAAyB;IACnD,OAAO,CAAC,oBAAoB,CAG1B;IACF,OAAO,CAAC,sBAAsB,CAAuB;IACrD,OAAO,CAAC,YAAY,CAAgD;IACpE,OAAO,CAAC,iBAAiB,CAAyC;IAClE,OAAO,CAAC,gBAAgB,CAAkC;IAC1D,OAAO,CAAC,SAAS,CAAyB;;IAM1C,OAAO,CAAC,6BAA6B,CAkCnC;IAEF,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU;IAoFtC,KAAK,CAAC,MAAM,EAAE,UAAU;IA8G9B,OAAO,CAAC,gBAAgB;YAoBV,gBAAgB;YAOhB,iBAAiB;CAchC;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -156,14 +156,18 @@ class EmpiricalReporter {
|
|
|
156
156
|
await Promise.allSettled(this._pendingTestCaseEvents);
|
|
157
157
|
if (this._hasSharding) {
|
|
158
158
|
const blobDir = path_1.default.join(this._currentWorkingDir, "blob-report");
|
|
159
|
+
logger_1.logger.info(`[Empirical Reporter] Sharding enabled, checking for blob-report at: ${blobDir}`);
|
|
159
160
|
if (fs_1.default.existsSync(blobDir)) {
|
|
160
161
|
await this._patchBlobReport(blobDir);
|
|
161
162
|
await this._uploadBlobReport(blobDir);
|
|
162
163
|
}
|
|
163
164
|
else {
|
|
164
|
-
logger_1.logger.
|
|
165
|
+
logger_1.logger.warn(`[Empirical Reporter] blob-report does not exist at: ${blobDir}`);
|
|
165
166
|
}
|
|
166
167
|
}
|
|
168
|
+
else {
|
|
169
|
+
logger_1.logger.info(`[Empirical Reporter] Sharding not enabled (HAS_SHARDING=${process.env.HAS_SHARDING})`);
|
|
170
|
+
}
|
|
167
171
|
logger_1.logger.debug("[Empirical Reporter] All uploads finished");
|
|
168
172
|
const timeDiff = Date.now() - startTime;
|
|
169
173
|
logger_1.logger.debug("[Empirical Reporter] Time taken to upload after tests ended: ", timeDiff, "ms");
|
|
@@ -194,9 +198,16 @@ class EmpiricalReporter {
|
|
|
194
198
|
async _uploadBlobReport(blobDir) {
|
|
195
199
|
if (!this._uploader)
|
|
196
200
|
return;
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
201
|
+
try {
|
|
202
|
+
const files = await fs_1.default.promises.readdir(blobDir);
|
|
203
|
+
logger_1.logger.info(`[Empirical Reporter] Uploading blob report from ${blobDir}, files: ${files.join(", ")}`);
|
|
204
|
+
await this._uploader.uploadDirectory(blobDir, "blobs");
|
|
205
|
+
await this._uploader.waitForUploads();
|
|
206
|
+
logger_1.logger.info("[Empirical Reporter] Blob report uploaded successfully");
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
logger_1.logger.error("[Empirical Reporter] Failed to upload blob report:", error);
|
|
210
|
+
}
|
|
200
211
|
}
|
|
201
212
|
}
|
|
202
213
|
exports.default = EmpiricalReporter;
|
|
@@ -2,8 +2,8 @@ import { StorageCredentials } from "@empiricalrun/r2-uploader";
|
|
|
2
2
|
export interface UploaderConfig {
|
|
3
3
|
projectName: string;
|
|
4
4
|
runId: string;
|
|
5
|
-
baseUrl
|
|
6
|
-
uploadBucket
|
|
5
|
+
baseUrl: string;
|
|
6
|
+
uploadBucket: string;
|
|
7
7
|
credentials: StorageCredentials;
|
|
8
8
|
}
|
|
9
9
|
export declare class Uploader {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploader.d.ts","sourceRoot":"","sources":["../../src/reporter/uploader.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAGnB,MAAM,2BAA2B,CAAC;AAKnC,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,
|
|
1
|
+
{"version":3,"file":"uploader.d.ts","sourceRoot":"","sources":["../../src/reporter/uploader.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAGnB,MAAM,2BAA2B,CAAC;AAKnC,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAqB;gBAE7B,MAAM,EAAE,cAAc;IAWlC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAgBhC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAUhC,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,OAAO,GAAG,kBAAkB,GAAG,IAAI;IAO1E,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAEK,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA6BnB,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC;IAiBV,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAGtC;AAED,wBAAgB,cAAc,IAAI,QAAQ,GAAG,IAAI,CA+ChD"}
|
|
@@ -14,8 +14,8 @@ class Uploader {
|
|
|
14
14
|
_destinationDir;
|
|
15
15
|
_credentials;
|
|
16
16
|
constructor(config) {
|
|
17
|
-
this._baseUrl = config.baseUrl
|
|
18
|
-
this._uploadBucket = config.uploadBucket
|
|
17
|
+
this._baseUrl = config.baseUrl;
|
|
18
|
+
this._uploadBucket = config.uploadBucket;
|
|
19
19
|
this._destinationDir = `${config.projectName}/${config.runId}`;
|
|
20
20
|
this._credentials = config.credentials;
|
|
21
21
|
logger_1.logger.debug(`[Uploader] Initialized with destination: ${this._destinationDir}, provider: ${this._credentials.provider}`);
|
|
@@ -112,10 +112,32 @@ function createUploader() {
|
|
|
112
112
|
logger_1.logger.debug(`[Uploader] ${storageType} credentials not found`);
|
|
113
113
|
return null;
|
|
114
114
|
}
|
|
115
|
-
|
|
115
|
+
let baseUrl;
|
|
116
|
+
let uploadBucket;
|
|
117
|
+
if (enableS3) {
|
|
118
|
+
const region = process.env.S3_REGION;
|
|
119
|
+
const bucket = process.env.S3_UPLOAD_BUCKET;
|
|
120
|
+
if (!region || !bucket) {
|
|
121
|
+
logger_1.logger.debug("[Uploader] S3_REGION or S3_UPLOAD_BUCKET not configured");
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
baseUrl = `https://${bucket}.s3.${region}.amazonaws.com`;
|
|
125
|
+
uploadBucket = bucket;
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
const accountId = process.env.R2_ACCOUNT_ID;
|
|
129
|
+
const bucket = "test-report";
|
|
130
|
+
if (!accountId) {
|
|
131
|
+
logger_1.logger.debug("[Uploader] R2_ACCOUNT_ID not configured");
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
baseUrl = `https://reports-r2.empirical.run`;
|
|
135
|
+
uploadBucket = bucket;
|
|
136
|
+
}
|
|
116
137
|
return new Uploader({
|
|
117
138
|
projectName: process.env.PROJECT_NAME,
|
|
118
139
|
runId: process.env.TEST_RUN_GITHUB_ACTION_ID,
|
|
140
|
+
baseUrl,
|
|
119
141
|
uploadBucket,
|
|
120
142
|
credentials,
|
|
121
143
|
});
|
package/dist/telemetry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAKtE,wBAAsB,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBrE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAKtE,wBAAsB,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBrE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C,GAAG,IAAI,CAqBP"}
|
package/dist/telemetry.js
CHANGED
|
@@ -36,7 +36,8 @@ function trackOverlayDismissed(opts) {
|
|
|
36
36
|
original_locator: opts.original ?? "",
|
|
37
37
|
cache_hit: opts.cache,
|
|
38
38
|
success: opts.success,
|
|
39
|
-
project_name: process.env.PROJECT_NAME ?? "",
|
|
39
|
+
project_name: process.env.PROJECT_NAME ?? "unknown",
|
|
40
|
+
repo_name: process.env.GIT_REPO_NAME ?? "unknown",
|
|
40
41
|
test_run_id: process.env.TEST_RUN_GITHUB_ACTION_ID ?? "",
|
|
41
42
|
test_name: opts.testName ?? "",
|
|
42
43
|
tokens_input: opts.tokens?.input ?? 0,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@empiricalrun/playwright-utils",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.39.1",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"registry": "https://registry.npmjs.org/",
|
|
6
6
|
"access": "public"
|
|
@@ -43,8 +43,8 @@
|
|
|
43
43
|
"puppeteer-extra-plugin-recaptcha": "^3.6.8",
|
|
44
44
|
"rimraf": "^6.0.1",
|
|
45
45
|
"@empiricalrun/llm": "^0.25.2",
|
|
46
|
-
"@empiricalrun/r2-uploader": "^0.9.
|
|
47
|
-
"@empiricalrun/test-gen": "^0.79.
|
|
46
|
+
"@empiricalrun/r2-uploader": "^0.9.1",
|
|
47
|
+
"@empiricalrun/test-gen": "^0.79.3"
|
|
48
48
|
},
|
|
49
49
|
"scripts": {
|
|
50
50
|
"dev": "tsc --build --watch",
|