@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 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
- (0, fixtures_1.test)("should dismiss two-step overlay for click", async ({ page, server }) => {
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;IAuG9B,OAAO,CAAC,gBAAgB;YAoBV,gBAAgB;YAOhB,iBAAiB;CAMhC;AAED,eAAe,iBAAiB,CAAC"}
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.debug(`[Empirical Reporter] blob-report does not exist at: ${blobDir}`);
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
- await this._uploader.uploadDirectory(blobDir, "blobs");
198
- await this._uploader.waitForUploads();
199
- logger_1.logger.debug("[Empirical Reporter] Blob report uploaded");
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?: string;
6
- uploadBucket?: string;
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,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,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,CAyBhD"}
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 || "https://reports.empirical.run";
18
- this._uploadBucket = config.uploadBucket || "test-report";
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
- const uploadBucket = enableS3 ? process.env.S3_UPLOAD_BUCKET : "test-report";
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
  });
@@ -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,CAoBP"}
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.38.6",
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.0",
47
- "@empiricalrun/test-gen": "^0.79.1"
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",