@crvy/rprtr 0.1.1 → 0.1.3

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
@@ -5,6 +5,26 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.1.3] - 2026-06-18
9
+
10
+ ### Fixed
11
+
12
+ - **reporter:** Resolve browser label for Playwright's default project
13
+ ## [0.1.2] - 2026-06-08
14
+
15
+ ### Added
16
+
17
+ - Reporter sends register message with Playwright config to server
18
+ - Reporter sends register message with Playwright config to server
19
+
20
+ ### Fixed
21
+
22
+ - **check:** Run publint after other checks to avoid race condition with build
23
+
24
+ ### Styling
25
+
26
+ - Reformat long lines
27
+ - Reformat long lines
8
28
  ## [0.1.1] - 2026-06-08
9
29
 
10
30
  ### Fixed
@@ -3,6 +3,7 @@ import {
3
3
  IncomingWebSocketMessageSchema,
4
4
  LoadedReportDataSchema,
5
5
  OfflineReportSchema,
6
+ RegisterDataSchema,
6
7
  RunEndDataSchema,
7
8
  TestBeginDataSchema,
8
9
  TestEndDataSchema,
@@ -12,7 +13,7 @@ import {
12
13
  finalizeRunEvent,
13
14
  resolveBaselineTargets,
14
15
  safeParse
15
- } from "./chunk-43JLQN36.js";
16
+ } from "./chunk-X2TCDD54.js";
16
17
 
17
18
  // src/server/app.ts
18
19
  import { dirname as dirname3, join as join3 } from "path";
@@ -234,7 +235,8 @@ async function handleFile(ctx, req) {
234
235
  }
235
236
  function reporterTitlePath(test) {
236
237
  const testFile = test.location?.file;
237
- return ["", test.browser, testFile ?? "", ...test.titlePath, test.title];
238
+ const projectName = test.projectName ?? test.browser;
239
+ return ["", projectName, testFile ?? "", ...test.titlePath, test.title];
238
240
  }
239
241
  function resolveBaselineSnapshotPath(routing, test, retry, imageName) {
240
242
  const testFile = test.location?.file;
@@ -250,7 +252,7 @@ function resolveBaselineSnapshotPath(routing, test, retry, imageName) {
250
252
  configDir: routing.configDir,
251
253
  testDir: routing.playwrightTestDir ?? dirname2(testFile),
252
254
  snapshotDir: routing.playwrightSnapshotDir ?? dirname2(testFile),
253
- projectName: test.browser,
255
+ projectName: test.projectName ?? test.browser,
254
256
  snapshotSuffix: process.platform,
255
257
  snapshotPathTemplate: routing.playwrightSnapshotPathTemplate,
256
258
  toHaveScreenshotPathTemplate: routing.playwrightToHaveScreenshotPathTemplate
@@ -372,6 +374,40 @@ function handleSync(ctx) {
372
374
  };
373
375
  broadcastToBrowsers(ctx.wsClients, message);
374
376
  }
377
+ function handleRegister(ctx, data) {
378
+ const roots = [];
379
+ if (data.playwrightSnapshotDir !== void 0 && data.playwrightSnapshotDir !== "") {
380
+ roots.push(data.playwrightSnapshotDir);
381
+ }
382
+ if (data.playwrightTestDir !== void 0 && data.playwrightTestDir !== "") {
383
+ roots.push(data.playwrightTestDir);
384
+ }
385
+ const existing = ctx.routesContext.artifactRoots ?? [];
386
+ for (const root of roots) {
387
+ if (!existing.includes(root)) {
388
+ existing.push(root);
389
+ }
390
+ }
391
+ ctx.routesContext.artifactRoots = existing;
392
+ if (ctx.routesContext.approvalRouting !== void 0) {
393
+ if (data.playwrightSnapshotDir !== void 0) {
394
+ ctx.routesContext.approvalRouting.playwrightSnapshotDir = data.playwrightSnapshotDir;
395
+ }
396
+ if (data.playwrightTestDir !== void 0) {
397
+ ctx.routesContext.approvalRouting.playwrightTestDir = data.playwrightTestDir;
398
+ }
399
+ if (data.playwrightSnapshotPathTemplate !== void 0) {
400
+ ctx.routesContext.approvalRouting.playwrightSnapshotPathTemplate = data.playwrightSnapshotPathTemplate;
401
+ }
402
+ if (data.playwrightToHaveScreenshotPathTemplate !== void 0) {
403
+ ctx.routesContext.approvalRouting.playwrightToHaveScreenshotPathTemplate = data.playwrightToHaveScreenshotPathTemplate;
404
+ }
405
+ }
406
+ console.log("[Server] Reporter registered with config:", {
407
+ playwrightSnapshotDir: data.playwrightSnapshotDir,
408
+ playwrightTestDir: data.playwrightTestDir
409
+ });
410
+ }
375
411
 
376
412
  // src/server/routes.ts
377
413
  import { join as join2 } from "path";
@@ -570,15 +606,6 @@ function createReportData(options) {
570
606
  screenshotDir: options.screenshotDir ?? "./screenshots"
571
607
  };
572
608
  }
573
- function createHandlerContext(reportData, wsClients, currentRunIds, saveReport, approvalRouting) {
574
- return {
575
- reportData,
576
- wsClients,
577
- currentRunIds,
578
- saveReport,
579
- approvalRouting
580
- };
581
- }
582
609
  async function loadReport(reportPath, reportData) {
583
610
  try {
584
611
  const raw = await readJsonFile(reportPath);
@@ -661,6 +688,15 @@ async function handleParsedWebSocketMessage(ctx, msg) {
661
688
  case "sync":
662
689
  handleSync(ctx);
663
690
  break;
691
+ case "register": {
692
+ const parsed = safeParse(RegisterDataSchema, msg.data);
693
+ if (parsed === null) {
694
+ console.error("Invalid register message data", msg.data);
695
+ break;
696
+ }
697
+ handleRegister(ctx, parsed);
698
+ break;
699
+ }
664
700
  }
665
701
  }
666
702
  function createWebSocketMessageHandler(getHandlerContext) {
@@ -737,7 +773,14 @@ async function createServerApp(options = {}) {
737
773
  await writeJsonFile(reportFile, reportData);
738
774
  }
739
775
  const routesContext = createRoutesContext(reportData, staticDir, saveReport, options);
740
- const getHandlerContext = () => createHandlerContext(reportData, wsClients, currentRunIds, saveReport, routesContext.approvalRouting);
776
+ const getHandlerContext = () => ({
777
+ reportData,
778
+ wsClients,
779
+ currentRunIds,
780
+ saveReport,
781
+ approvalRouting: routesContext.approvalRouting,
782
+ routesContext
783
+ });
741
784
  const handleRequest = (req) => handleHttpRequest(routesContext, req);
742
785
  const handleWebSocketMessage = createWebSocketMessageHandler(getHandlerContext);
743
786
  await loadReport(reportFile, reportData);
@@ -216,6 +216,7 @@ var TestDataSchema = z.object({
216
216
  id: z.string(),
217
217
  titlePath: z.array(z.string()),
218
218
  browser: z.string(),
219
+ projectName: z.string().optional(),
219
220
  title: z.string(),
220
221
  skip: z.union([z.boolean(), z.string()]).optional(),
221
222
  retries: z.number().optional(),
@@ -240,7 +241,7 @@ var CrvyRprtrSuiteSchema = z.lazy(
240
241
  })
241
242
  );
242
243
  var IncomingWebSocketMessageSchema = z.object({
243
- type: z.enum(["test-begin", "test-end", "run-end", "approve", "sync"]),
244
+ type: z.enum(["test-begin", "test-end", "run-end", "approve", "sync", "register"]),
244
245
  data: z.unknown()
245
246
  });
246
247
  var WebSocketMessageSchema = z.discriminatedUnion("type", [
@@ -267,6 +268,7 @@ var TestBeginDataSchema = z.object({
267
268
  title: z.string(),
268
269
  titlePath: z.array(z.string()),
269
270
  browser: z.string(),
271
+ projectName: z.string().optional(),
270
272
  location: LocationSchema
271
273
  });
272
274
  var TestEndDataSchema = z.object({
@@ -284,6 +286,12 @@ var TestEndDataSchema = z.object({
284
286
  var RunEndDataSchema = z.object({
285
287
  status: z.enum(["passed", "failed", "skipped"])
286
288
  });
289
+ var RegisterDataSchema = z.object({
290
+ playwrightSnapshotDir: z.string().optional(),
291
+ playwrightTestDir: z.string().optional(),
292
+ playwrightSnapshotPathTemplate: z.string().optional(),
293
+ playwrightToHaveScreenshotPathTemplate: z.string().optional()
294
+ });
287
295
  var ReportDataSchema = z.object({
288
296
  isRunning: z.boolean(),
289
297
  tests: z.record(z.string(), TestDataSchema),
@@ -459,12 +467,16 @@ function createMutableReportState(screenshotDir = "./screenshots") {
459
467
  };
460
468
  }
461
469
  function applyTestBeginEvent(state, data) {
462
- const { id, title, titlePath, browser, location } = data;
470
+ const { id, title, titlePath, browser, projectName, location } = data;
463
471
  state.currentRunIds.add(id);
464
472
  state.reportData.tests[id] ??= {
465
473
  id,
466
474
  titlePath: titlePath ?? [],
467
475
  browser: browser ?? "",
476
+ // Older reporters sent the raw project name in `browser` and had no
477
+ // `projectName` field. Preserve that value for snapshot path resolution
478
+ // when loading data produced by such reporters.
479
+ projectName: projectName ?? browser ?? "",
468
480
  title: title ?? "",
469
481
  location,
470
482
  status: "running"
@@ -530,6 +542,7 @@ export {
530
542
  TestBeginDataSchema,
531
543
  TestEndDataSchema,
532
544
  RunEndDataSchema,
545
+ RegisterDataSchema,
533
546
  LoadedReportDataSchema,
534
547
  OfflineReportSchema,
535
548
  ApproveRequestBodySchema,
package/dist/cli.js CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  startServer
4
- } from "./chunk-35CZLYSW.js";
5
- import "./chunk-43JLQN36.js";
4
+ } from "./chunk-F7NSIHCV.js";
5
+ import "./chunk-X2TCDD54.js";
6
6
 
7
7
  // src/cli.ts
8
8
  import { join } from "path";
package/dist/index.js CHANGED
@@ -19368,6 +19368,7 @@ var TestDataSchema = external_exports.object({
19368
19368
  id: external_exports.string(),
19369
19369
  titlePath: external_exports.array(external_exports.string()),
19370
19370
  browser: external_exports.string(),
19371
+ projectName: external_exports.string().optional(),
19371
19372
  title: external_exports.string(),
19372
19373
  skip: external_exports.union([external_exports.boolean(), external_exports.string()]).optional(),
19373
19374
  retries: external_exports.number().optional(),
@@ -19392,7 +19393,7 @@ var CrvyRprtrSuiteSchema = external_exports.lazy(
19392
19393
  })
19393
19394
  );
19394
19395
  var IncomingWebSocketMessageSchema = external_exports.object({
19395
- type: external_exports.enum(["test-begin", "test-end", "run-end", "approve", "sync"]),
19396
+ type: external_exports.enum(["test-begin", "test-end", "run-end", "approve", "sync", "register"]),
19396
19397
  data: external_exports.unknown()
19397
19398
  });
19398
19399
  var WebSocketMessageSchema = external_exports.discriminatedUnion("type", [
@@ -19419,6 +19420,7 @@ var TestBeginDataSchema = external_exports.object({
19419
19420
  title: external_exports.string(),
19420
19421
  titlePath: external_exports.array(external_exports.string()),
19421
19422
  browser: external_exports.string(),
19423
+ projectName: external_exports.string().optional(),
19422
19424
  location: LocationSchema
19423
19425
  });
19424
19426
  var TestEndDataSchema = external_exports.object({
@@ -19436,6 +19438,12 @@ var TestEndDataSchema = external_exports.object({
19436
19438
  var RunEndDataSchema = external_exports.object({
19437
19439
  status: external_exports.enum(["passed", "failed", "skipped"])
19438
19440
  });
19441
+ var RegisterDataSchema = external_exports.object({
19442
+ playwrightSnapshotDir: external_exports.string().optional(),
19443
+ playwrightTestDir: external_exports.string().optional(),
19444
+ playwrightSnapshotPathTemplate: external_exports.string().optional(),
19445
+ playwrightToHaveScreenshotPathTemplate: external_exports.string().optional()
19446
+ });
19439
19447
  var ReportDataSchema = external_exports.object({
19440
19448
  isRunning: external_exports.boolean(),
19441
19449
  tests: external_exports.record(external_exports.string(), TestDataSchema),
@@ -19612,6 +19620,10 @@ function hasScreenshots(item) {
19612
19620
  }
19613
19621
 
19614
19622
  // src/client/helpers/path.ts
19623
+ var DEFAULT_BROWSER_KEY = "default";
19624
+ function browserKeyFor(browser) {
19625
+ return browser === "" ? DEFAULT_BROWSER_KEY : browser;
19626
+ }
19615
19627
  function getTestPath(test) {
19616
19628
  return [...test.titlePath, test.title, test.browser].filter(isDefined);
19617
19629
  }
@@ -19670,7 +19682,7 @@ function treeifyTests(testsById) {
19670
19682
  Object.values(testsById).forEach((test) => {
19671
19683
  if (test === void 0) return;
19672
19684
  const titlePath = test.titlePath ?? [];
19673
- const browser = test.browser ?? "";
19685
+ const browser = browserKeyFor(test.browser ?? "");
19674
19686
  const title = test.title;
19675
19687
  const pathParts = [...titlePath, title, browser].filter((p) => p !== void 0 && p !== "");
19676
19688
  const [browserName, ...testPathParts] = pathParts.reverse();
@@ -19857,8 +19869,8 @@ function collectTestsById(suite) {
19857
19869
  function pathTokensFor(test) {
19858
19870
  const titlePath = test.titlePath ?? [];
19859
19871
  const title = test.title;
19860
- const browser = test.browser ?? "";
19861
- if (title === void 0 || title === "" || browser === "") return null;
19872
+ if (title === void 0 || title === "") return null;
19873
+ const browser = browserKeyFor(test.browser ?? "");
19862
19874
  const pathParts = [...titlePath, title, browser].filter((p) => p !== void 0 && p !== "");
19863
19875
  const reversed = pathParts.reverse();
19864
19876
  const browserKey = reversed[0];
@@ -1 +1 @@
1
- {"version":3,"file":"report-state.d.ts","sourceRoot":"","sources":["../src/report-state.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,KAAK,EAAU,QAAQ,EAAc,MAAM,YAAY,CAAA;AAE9D,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,YAAY,EAAE,OAAO,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,iBAAiB,CAAA;IAC7B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,KAAK,sBAAsB,GAAG,WAAW,GAAG;IAC1C,kBAAkB,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAA;CACtD,CAAA;AA0DD,wBAAgB,wBAAwB,CAAC,aAAa,SAAkB,GAAG,kBAAkB,CAW5F;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,aAAa,GAAG,QAAQ,CAa5F;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE,sBAAsB,EAC5B,OAAO,GAAE;IAAE,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5C,kBAAkB,GAAG,IAAI,CAyC3B;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAa/G"}
1
+ {"version":3,"file":"report-state.d.ts","sourceRoot":"","sources":["../src/report-state.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,KAAK,EAAU,QAAQ,EAAc,MAAM,YAAY,CAAA;AAE9D,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,YAAY,EAAE,OAAO,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,iBAAiB,CAAA;IAC7B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,KAAK,sBAAsB,GAAG,WAAW,GAAG;IAC1C,kBAAkB,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAA;CACtD,CAAA;AA0DD,wBAAgB,wBAAwB,CAAC,aAAa,SAAkB,GAAG,kBAAkB,CAW5F;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,aAAa,GAAG,QAAQ,CAiB5F;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE,sBAAsB,EAC5B,OAAO,GAAE;IAAE,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5C,kBAAkB,GAAG,IAAI,CAyC3B;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAa/G"}
@@ -0,0 +1,24 @@
1
+ import type { TestResult } from '@playwright/test/reporter';
2
+ import type { AttachmentData } from './reporter-utils.ts';
3
+ import type { ResolvedBaselineTarget } from './snapshot-path-resolver.ts';
4
+ export interface CrvyRprtrOptions {
5
+ serverUrl?: string;
6
+ screenshotDir?: string;
7
+ offlineReportPath?: string;
8
+ reportHtmlPath?: string;
9
+ playwrightSnapshotDir?: string;
10
+ playwrightSnapshotPathTemplate?: string;
11
+ playwrightToHaveScreenshotPathTemplate?: string;
12
+ ci?: boolean;
13
+ }
14
+ export interface PendingPortableArtifact {
15
+ testId: string;
16
+ status: TestResult['status'];
17
+ resolvedTargets: ResolvedBaselineTarget[];
18
+ nativeAttachments: AttachmentData[];
19
+ eventData: {
20
+ attachments: AttachmentData[];
21
+ };
22
+ }
23
+ export declare function collectNativeImageAttachments(result: TestResult): AttachmentData[];
24
+ //# sourceMappingURL=reporter-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter-helpers.d.ts","sourceRoot":"","sources":["../src/reporter-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEzE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,8BAA8B,CAAC,EAAE,MAAM,CAAA;IACvC,sCAAsC,CAAC,EAAE,MAAM,CAAA;IAC/C,EAAE,CAAC,EAAE,OAAO,CAAA;CACb;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC5B,eAAe,EAAE,sBAAsB,EAAE,CAAA;IACzC,iBAAiB,EAAE,cAAc,EAAE,CAAA;IACnC,SAAS,EAAE;QAAE,WAAW,EAAE,cAAc,EAAE,CAAA;KAAE,CAAA;CAC7C;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,EAAE,CAWlF"}
package/dist/reporter.cjs CHANGED
@@ -190,12 +190,16 @@ function createMutableReportState(screenshotDir = "./screenshots") {
190
190
  };
191
191
  }
192
192
  function applyTestBeginEvent(state, data) {
193
- const { id, title, titlePath, browser, location } = data;
193
+ const { id, title, titlePath, browser, projectName, location } = data;
194
194
  state.currentRunIds.add(id);
195
195
  state.reportData.tests[id] ??= {
196
196
  id,
197
197
  titlePath: titlePath ?? [],
198
198
  browser: browser ?? "",
199
+ // Older reporters sent the raw project name in `browser` and had no
200
+ // `projectName` field. Preserve that value for snapshot path resolution
201
+ // when loading data produced by such reporters.
202
+ projectName: projectName ?? browser ?? "",
199
203
  title: title ?? "",
200
204
  location,
201
205
  status: "running"
@@ -299,6 +303,7 @@ var TestDataSchema = import_zod.z.object({
299
303
  id: import_zod.z.string(),
300
304
  titlePath: import_zod.z.array(import_zod.z.string()),
301
305
  browser: import_zod.z.string(),
306
+ projectName: import_zod.z.string().optional(),
302
307
  title: import_zod.z.string(),
303
308
  skip: import_zod.z.union([import_zod.z.boolean(), import_zod.z.string()]).optional(),
304
309
  retries: import_zod.z.number().optional(),
@@ -323,7 +328,7 @@ var CrvyRprtrSuiteSchema = import_zod.z.lazy(
323
328
  })
324
329
  );
325
330
  var IncomingWebSocketMessageSchema = import_zod.z.object({
326
- type: import_zod.z.enum(["test-begin", "test-end", "run-end", "approve", "sync"]),
331
+ type: import_zod.z.enum(["test-begin", "test-end", "run-end", "approve", "sync", "register"]),
327
332
  data: import_zod.z.unknown()
328
333
  });
329
334
  var WebSocketMessageSchema = import_zod.z.discriminatedUnion("type", [
@@ -350,6 +355,7 @@ var TestBeginDataSchema = import_zod.z.object({
350
355
  title: import_zod.z.string(),
351
356
  titlePath: import_zod.z.array(import_zod.z.string()),
352
357
  browser: import_zod.z.string(),
358
+ projectName: import_zod.z.string().optional(),
353
359
  location: LocationSchema
354
360
  });
355
361
  var TestEndDataSchema = import_zod.z.object({
@@ -367,6 +373,12 @@ var TestEndDataSchema = import_zod.z.object({
367
373
  var RunEndDataSchema = import_zod.z.object({
368
374
  status: import_zod.z.enum(["passed", "failed", "skipped"])
369
375
  });
376
+ var RegisterDataSchema = import_zod.z.object({
377
+ playwrightSnapshotDir: import_zod.z.string().optional(),
378
+ playwrightTestDir: import_zod.z.string().optional(),
379
+ playwrightSnapshotPathTemplate: import_zod.z.string().optional(),
380
+ playwrightToHaveScreenshotPathTemplate: import_zod.z.string().optional()
381
+ });
370
382
  var ReportDataSchema = import_zod.z.object({
371
383
  isRunning: import_zod.z.boolean(),
372
384
  tests: import_zod.z.record(import_zod.z.string(), TestDataSchema),
@@ -627,6 +639,17 @@ async function writeStaticArtifact(runEvents, screenshotDir, reportHtmlPath) {
627
639
  }
628
640
  }
629
641
 
642
+ // src/reporter-helpers.ts
643
+ function collectNativeImageAttachments(result) {
644
+ return result.attachments.filter(
645
+ (attachment) => attachment.contentType === "image/png" && attachment.path !== void 0
646
+ ).map((attachment) => ({
647
+ name: attachment.name,
648
+ path: attachment.path,
649
+ contentType: attachment.contentType
650
+ }));
651
+ }
652
+
630
653
  // src/reporter-utils.ts
631
654
  var NAMED_SCREENSHOT_STEP_TITLE = /toHaveScreenshot\((.+?)\)/;
632
655
  var UNNAMED_SCREENSHOT_STEP_TITLE = /^Expect "toHaveScreenshot"(?:\s|$)/;
@@ -868,15 +891,6 @@ function resolveBaselineTargets(input) {
868
891
  }
869
892
 
870
893
  // src/reporter.ts
871
- function collectNativeImageAttachments(result) {
872
- return result.attachments.filter(
873
- (attachment) => attachment.contentType === "image/png" && attachment.path !== void 0
874
- ).map((attachment) => ({
875
- name: attachment.name,
876
- path: attachment.path,
877
- contentType: attachment.contentType
878
- }));
879
- }
880
894
  var CrvyRprtr = class {
881
895
  ws = null;
882
896
  serverUrl;
@@ -904,9 +918,7 @@ var CrvyRprtr = class {
904
918
  this.playwrightSnapshotPathTemplate = options.playwrightSnapshotPathTemplate;
905
919
  this.playwrightToHaveScreenshotPathTemplate = options.playwrightToHaveScreenshotPathTemplate;
906
920
  this.ci = options.ci ?? isCI();
907
- if (this.ci) {
908
- this.isOfflineMode = true;
909
- }
921
+ if (this.ci) this.isOfflineMode = true;
910
922
  }
911
923
  async onBegin(config, suite) {
912
924
  this.configDir = config.configFile === void 0 ? config.rootDir : (0, import_path5.dirname)(config.configFile);
@@ -914,6 +926,7 @@ var CrvyRprtr = class {
914
926
  await (0, import_promises3.mkdir)(this.screenshotDir, { recursive: true });
915
927
  if (!this.ci) {
916
928
  this.connect();
929
+ this.sendRegister(config);
917
930
  }
918
931
  }
919
932
  connect() {
@@ -949,24 +962,53 @@ var CrvyRprtr = class {
949
962
  this.isOfflineMode = true;
950
963
  log("[CrvyRprtr] Offline mode enabled - events will be queued to file");
951
964
  }
965
+ sendRegister(config) {
966
+ const snapshotDir = this.playwrightSnapshotDir ?? config.projects[0]?.snapshotDir;
967
+ const testDir = this.playwrightSnapshotDir === void 0 ? config.projects[0]?.testDir : void 0;
968
+ this.send({
969
+ type: "register",
970
+ data: {
971
+ playwrightSnapshotDir: typeof snapshotDir === "string" ? snapshotDir : void 0,
972
+ playwrightTestDir: typeof testDir === "string" ? testDir : void 0,
973
+ playwrightSnapshotPathTemplate: this.playwrightSnapshotPathTemplate,
974
+ playwrightToHaveScreenshotPathTemplate: this.playwrightToHaveScreenshotPathTemplate
975
+ }
976
+ });
977
+ }
952
978
  describeTitlePath(test) {
953
979
  const titlePath = [];
954
980
  for (let suite = test.parent; suite?.type === "describe"; suite = suite.parent)
955
981
  titlePath.unshift(suite.title);
956
982
  return titlePath;
957
983
  }
984
+ /** Resolves a non-empty browser label for UI display, falling back to the
985
+ * configured browser engine since the raw project `name` is `""` for the
986
+ * default project and devices spread `defaultBrowserType` into `use`. */
987
+ resolveBrowserLabel(project) {
988
+ const name = project?.name;
989
+ if (name !== void 0 && name !== "") return name;
990
+ const browserName = project?.use?.browserName;
991
+ if (browserName !== void 0) return browserName;
992
+ const defaultBrowserType = project?.use?.defaultBrowserType;
993
+ if (defaultBrowserType !== void 0) return defaultBrowserType;
994
+ return "chromium";
995
+ }
958
996
  reporterTitlePath(test) {
959
- return typeof test.titlePath === "function" ? test.titlePath() : ["", test.parent.project()?.name ?? "chromium", test.location.file, ...this.describeTitlePath(test), test.title];
997
+ return typeof test.titlePath === "function" ? test.titlePath() : ["", test.parent.project()?.name ?? "", test.location.file, ...this.describeTitlePath(test), test.title];
960
998
  }
961
999
  onTestBegin(test) {
962
- this.testMetadata.set(test.id, { reporterTitlePath: this.reporterTitlePath(test) });
1000
+ const project = test.parent.project();
1001
+ this.testMetadata.set(test.id, {
1002
+ reporterTitlePath: this.reporterTitlePath(test)
1003
+ });
963
1004
  this.send({
964
1005
  type: "test-begin",
965
1006
  data: {
966
1007
  id: test.id,
967
1008
  title: test.title,
968
1009
  titlePath: this.describeTitlePath(test),
969
- browser: test.parent.project()?.name ?? "chromium",
1010
+ browser: this.resolveBrowserLabel(project),
1011
+ projectName: project?.name ?? "",
970
1012
  location: { file: test.location.file, line: test.location.line }
971
1013
  }
972
1014
  });
@@ -1,14 +1,6 @@
1
1
  import type { FullConfig, FullResult, Reporter, Suite, TestCase, TestResult } from '@playwright/test/reporter';
2
- export interface CrvyRprtrOptions {
3
- serverUrl?: string;
4
- screenshotDir?: string;
5
- offlineReportPath?: string;
6
- reportHtmlPath?: string;
7
- playwrightSnapshotDir?: string;
8
- playwrightSnapshotPathTemplate?: string;
9
- playwrightToHaveScreenshotPathTemplate?: string;
10
- ci?: boolean;
11
- }
2
+ import { type CrvyRprtrOptions } from './reporter-helpers.ts';
3
+ export type { CrvyRprtrOptions };
12
4
  export declare class CrvyRprtr implements Reporter {
13
5
  private ws;
14
6
  private serverUrl;
@@ -30,7 +22,12 @@ export declare class CrvyRprtr implements Reporter {
30
22
  onBegin(config: FullConfig, suite: Suite): Promise<void>;
31
23
  private connect;
32
24
  private enableOfflineMode;
25
+ private sendRegister;
33
26
  private describeTitlePath;
27
+ /** Resolves a non-empty browser label for UI display, falling back to the
28
+ * configured browser engine since the raw project `name` is `""` for the
29
+ * default project and devices spread `defaultBrowserType` into `use`. */
30
+ private resolveBrowserLabel;
34
31
  private reporterTitlePath;
35
32
  onTestBegin(test: TestCase): void;
36
33
  onTestEnd(test: TestCase, result: TestResult): void;
@@ -1 +1 @@
1
- {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAqB9G,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,8BAA8B,CAAC,EAAE,MAAM,CAAA;IACvC,sCAAsC,CAAC,EAAE,MAAM,CAAA;IAC/C,EAAE,CAAC,EAAE,OAAO,CAAA;CACb;AAuBD,qBAAa,SAAU,YAAW,QAAQ;IACxC,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,YAAY,CAAqD;IACzE,OAAO,CAAC,qBAAqB,CAAC,CAAQ;IACtC,OAAO,CAAC,8BAA8B,CAAC,CAAQ;IAC/C,OAAO,CAAC,sCAAsC,CAAC,CAAQ;IACvD,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAS;IAC5B,OAAO,CAAC,gBAAgB,CAAgC;gBAE5C,OAAO,GAAE,gBAAqB;IAepC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9D,OAAO,CAAC,OAAO;IA6Bf,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,iBAAiB;IAMzB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAcjC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAmCnD,OAAO,CAAC,aAAa;YAqBP,uBAAuB;IAiB/B,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAyC9C,OAAO,CAAC,IAAI;CAUb;AAED,eAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,UAAU,EAEV,UAAU,EACV,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,UAAU,EACX,MAAM,2BAA2B,CAAA;AAalC,OAAO,EAEL,KAAK,gBAAgB,EAEtB,MAAM,uBAAuB,CAAA;AAS9B,YAAY,EAAE,gBAAgB,EAAE,CAAA;AAEhC,qBAAa,SAAU,YAAW,QAAQ;IACxC,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,YAAY,CAAqD;IACzE,OAAO,CAAC,qBAAqB,CAAC,CAAQ;IACtC,OAAO,CAAC,8BAA8B,CAAC,CAAQ;IAC/C,OAAO,CAAC,sCAAsC,CAAC,CAAQ;IACvD,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAS;IAC5B,OAAO,CAAC,gBAAgB,CAAgC;gBAE5C,OAAO,GAAE,gBAAqB;IAapC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9D,OAAO,CAAC,OAAO;IA6Bf,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,iBAAiB;IAOzB;;6EAEyE;IACzE,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,iBAAiB;IAOzB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAkBjC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAmCnD,OAAO,CAAC,aAAa;YAqBP,uBAAuB;IAgB/B,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAwC9C,OAAO,CAAC,IAAI;CAUb;AAED,eAAe,SAAS,CAAA"}
package/dist/reporter.js CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  resolveBaselineTargets,
10
10
  safeParse,
11
11
  withResolvedVisualNames
12
- } from "./chunk-43JLQN36.js";
12
+ } from "./chunk-X2TCDD54.js";
13
13
 
14
14
  // src/reporter.ts
15
15
  import { existsSync } from "fs";
@@ -250,6 +250,17 @@ async function writeStaticArtifact(runEvents, screenshotDir, reportHtmlPath) {
250
250
  }
251
251
  }
252
252
 
253
+ // src/reporter-helpers.ts
254
+ function collectNativeImageAttachments(result) {
255
+ return result.attachments.filter(
256
+ (attachment) => attachment.contentType === "image/png" && attachment.path !== void 0
257
+ ).map((attachment) => ({
258
+ name: attachment.name,
259
+ path: attachment.path,
260
+ contentType: attachment.contentType
261
+ }));
262
+ }
263
+
253
264
  // src/reporter-utils.ts
254
265
  var NAMED_SCREENSHOT_STEP_TITLE = /toHaveScreenshot\((.+?)\)/;
255
266
  var UNNAMED_SCREENSHOT_STEP_TITLE = /^Expect "toHaveScreenshot"(?:\s|$)/;
@@ -320,15 +331,6 @@ function extractScreenshotDeclarations(steps) {
320
331
  }
321
332
 
322
333
  // src/reporter.ts
323
- function collectNativeImageAttachments(result) {
324
- return result.attachments.filter(
325
- (attachment) => attachment.contentType === "image/png" && attachment.path !== void 0
326
- ).map((attachment) => ({
327
- name: attachment.name,
328
- path: attachment.path,
329
- contentType: attachment.contentType
330
- }));
331
- }
332
334
  var CrvyRprtr = class {
333
335
  ws = null;
334
336
  serverUrl;
@@ -356,9 +358,7 @@ var CrvyRprtr = class {
356
358
  this.playwrightSnapshotPathTemplate = options.playwrightSnapshotPathTemplate;
357
359
  this.playwrightToHaveScreenshotPathTemplate = options.playwrightToHaveScreenshotPathTemplate;
358
360
  this.ci = options.ci ?? isCI();
359
- if (this.ci) {
360
- this.isOfflineMode = true;
361
- }
361
+ if (this.ci) this.isOfflineMode = true;
362
362
  }
363
363
  async onBegin(config, suite) {
364
364
  this.configDir = config.configFile === void 0 ? config.rootDir : dirname3(config.configFile);
@@ -366,6 +366,7 @@ var CrvyRprtr = class {
366
366
  await mkdir3(this.screenshotDir, { recursive: true });
367
367
  if (!this.ci) {
368
368
  this.connect();
369
+ this.sendRegister(config);
369
370
  }
370
371
  }
371
372
  connect() {
@@ -401,24 +402,53 @@ var CrvyRprtr = class {
401
402
  this.isOfflineMode = true;
402
403
  log("[CrvyRprtr] Offline mode enabled - events will be queued to file");
403
404
  }
405
+ sendRegister(config) {
406
+ const snapshotDir = this.playwrightSnapshotDir ?? config.projects[0]?.snapshotDir;
407
+ const testDir = this.playwrightSnapshotDir === void 0 ? config.projects[0]?.testDir : void 0;
408
+ this.send({
409
+ type: "register",
410
+ data: {
411
+ playwrightSnapshotDir: typeof snapshotDir === "string" ? snapshotDir : void 0,
412
+ playwrightTestDir: typeof testDir === "string" ? testDir : void 0,
413
+ playwrightSnapshotPathTemplate: this.playwrightSnapshotPathTemplate,
414
+ playwrightToHaveScreenshotPathTemplate: this.playwrightToHaveScreenshotPathTemplate
415
+ }
416
+ });
417
+ }
404
418
  describeTitlePath(test) {
405
419
  const titlePath = [];
406
420
  for (let suite = test.parent; suite?.type === "describe"; suite = suite.parent)
407
421
  titlePath.unshift(suite.title);
408
422
  return titlePath;
409
423
  }
424
+ /** Resolves a non-empty browser label for UI display, falling back to the
425
+ * configured browser engine since the raw project `name` is `""` for the
426
+ * default project and devices spread `defaultBrowserType` into `use`. */
427
+ resolveBrowserLabel(project) {
428
+ const name = project?.name;
429
+ if (name !== void 0 && name !== "") return name;
430
+ const browserName = project?.use?.browserName;
431
+ if (browserName !== void 0) return browserName;
432
+ const defaultBrowserType = project?.use?.defaultBrowserType;
433
+ if (defaultBrowserType !== void 0) return defaultBrowserType;
434
+ return "chromium";
435
+ }
410
436
  reporterTitlePath(test) {
411
- return typeof test.titlePath === "function" ? test.titlePath() : ["", test.parent.project()?.name ?? "chromium", test.location.file, ...this.describeTitlePath(test), test.title];
437
+ return typeof test.titlePath === "function" ? test.titlePath() : ["", test.parent.project()?.name ?? "", test.location.file, ...this.describeTitlePath(test), test.title];
412
438
  }
413
439
  onTestBegin(test) {
414
- this.testMetadata.set(test.id, { reporterTitlePath: this.reporterTitlePath(test) });
440
+ const project = test.parent.project();
441
+ this.testMetadata.set(test.id, {
442
+ reporterTitlePath: this.reporterTitlePath(test)
443
+ });
415
444
  this.send({
416
445
  type: "test-begin",
417
446
  data: {
418
447
  id: test.id,
419
448
  title: test.title,
420
449
  titlePath: this.describeTitlePath(test),
421
- browser: test.parent.project()?.name ?? "chromium",
450
+ browser: this.resolveBrowserLabel(project),
451
+ projectName: project?.name ?? "",
422
452
  location: { file: test.location.file, line: test.location.line }
423
453
  }
424
454
  });
package/dist/schemas.d.ts CHANGED
@@ -93,6 +93,7 @@ export declare const TestDataSchema: z.ZodObject<{
93
93
  id: z.ZodString;
94
94
  titlePath: z.ZodArray<z.ZodString>;
95
95
  browser: z.ZodString;
96
+ projectName: z.ZodOptional<z.ZodString>;
96
97
  title: z.ZodString;
97
98
  skip: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
98
99
  retries: z.ZodOptional<z.ZodNumber>;
@@ -153,6 +154,7 @@ export declare const CrvyRprtrTestSchema: z.ZodObject<{
153
154
  id: z.ZodString;
154
155
  titlePath: z.ZodArray<z.ZodString>;
155
156
  browser: z.ZodString;
157
+ projectName: z.ZodOptional<z.ZodString>;
156
158
  title: z.ZodString;
157
159
  skip: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
158
160
  retries: z.ZodOptional<z.ZodNumber>;
@@ -227,6 +229,7 @@ export declare const IncomingWebSocketMessageSchema: z.ZodObject<{
227
229
  "run-end": "run-end";
228
230
  approve: "approve";
229
231
  sync: "sync";
232
+ register: "register";
230
233
  }>;
231
234
  data: z.ZodUnknown;
232
235
  }, z.core.$strip>;
@@ -237,6 +240,7 @@ export declare const WebSocketMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
237
240
  id: z.ZodString;
238
241
  titlePath: z.ZodArray<z.ZodString>;
239
242
  browser: z.ZodString;
243
+ projectName: z.ZodOptional<z.ZodString>;
240
244
  title: z.ZodString;
241
245
  skip: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
242
246
  retries: z.ZodOptional<z.ZodNumber>;
@@ -298,6 +302,7 @@ export declare const WebSocketMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
298
302
  id: z.ZodString;
299
303
  titlePath: z.ZodArray<z.ZodString>;
300
304
  browser: z.ZodString;
305
+ projectName: z.ZodOptional<z.ZodString>;
301
306
  title: z.ZodString;
302
307
  skip: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
303
308
  retries: z.ZodOptional<z.ZodNumber>;
@@ -370,6 +375,7 @@ export declare const WebSocketMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
370
375
  id: z.ZodString;
371
376
  titlePath: z.ZodArray<z.ZodString>;
372
377
  browser: z.ZodString;
378
+ projectName: z.ZodOptional<z.ZodString>;
373
379
  title: z.ZodString;
374
380
  skip: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
375
381
  retries: z.ZodOptional<z.ZodNumber>;
@@ -437,6 +443,7 @@ export declare const TestBeginDataSchema: z.ZodObject<{
437
443
  title: z.ZodString;
438
444
  titlePath: z.ZodArray<z.ZodString>;
439
445
  browser: z.ZodString;
446
+ projectName: z.ZodOptional<z.ZodString>;
440
447
  location: z.ZodObject<{
441
448
  file: z.ZodString;
442
449
  line: z.ZodNumber;
@@ -479,12 +486,20 @@ export declare const RunEndDataSchema: z.ZodObject<{
479
486
  }>;
480
487
  }, z.core.$strip>;
481
488
  export type RunEndData = z.infer<typeof RunEndDataSchema>;
489
+ export declare const RegisterDataSchema: z.ZodObject<{
490
+ playwrightSnapshotDir: z.ZodOptional<z.ZodString>;
491
+ playwrightTestDir: z.ZodOptional<z.ZodString>;
492
+ playwrightSnapshotPathTemplate: z.ZodOptional<z.ZodString>;
493
+ playwrightToHaveScreenshotPathTemplate: z.ZodOptional<z.ZodString>;
494
+ }, z.core.$strip>;
495
+ export type RegisterData = z.infer<typeof RegisterDataSchema>;
482
496
  export declare const ReportDataSchema: z.ZodObject<{
483
497
  isRunning: z.ZodBoolean;
484
498
  tests: z.ZodRecord<z.ZodString, z.ZodObject<{
485
499
  id: z.ZodString;
486
500
  titlePath: z.ZodArray<z.ZodString>;
487
501
  browser: z.ZodString;
502
+ projectName: z.ZodOptional<z.ZodString>;
488
503
  title: z.ZodString;
489
504
  skip: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
490
505
  retries: z.ZodOptional<z.ZodNumber>;
@@ -550,6 +565,7 @@ export declare const LoadedReportDataSchema: z.ZodObject<{
550
565
  id: z.ZodString;
551
566
  titlePath: z.ZodArray<z.ZodString>;
552
567
  browser: z.ZodString;
568
+ projectName: z.ZodOptional<z.ZodString>;
553
569
  title: z.ZodString;
554
570
  skip: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
555
571
  retries: z.ZodOptional<z.ZodNumber>;
@@ -646,6 +662,7 @@ export declare const ReportApiResponseSchema: z.ZodObject<{
646
662
  id: z.ZodString;
647
663
  titlePath: z.ZodArray<z.ZodString>;
648
664
  browser: z.ZodString;
665
+ projectName: z.ZodOptional<z.ZodString>;
649
666
  title: z.ZodString;
650
667
  skip: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
651
668
  retries: z.ZodOptional<z.ZodNumber>;
@@ -710,6 +727,7 @@ export declare const ClientBootstrapDataSchema: z.ZodObject<{
710
727
  id: z.ZodString;
711
728
  titlePath: z.ZodArray<z.ZodString>;
712
729
  browser: z.ZodString;
730
+ projectName: z.ZodOptional<z.ZodString>;
713
731
  title: z.ZodString;
714
732
  skip: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
715
733
  retries: z.ZodOptional<z.ZodNumber>;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAI/C,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,8BAA8B,CAAC,EAAE,MAAM,CAAA;IACvC,sCAAsC,CAAC,EAAE,MAAM,CAAA;CAChD;AAUD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAChC,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,aAAa,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IAClD,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3D;AA6MD,wBAAsB,eAAe,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,CA8BrF"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAI/C,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,8BAA8B,CAAC,EAAE,MAAM,CAAA;IACvC,sCAAsC,CAAC,EAAE,MAAM,CAAA;CAChD;AAUD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAChC,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,aAAa,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IAClD,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3D;AAsMD,wBAAsB,eAAe,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,CAmCrF"}
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-routes.d.ts","sourceRoot":"","sources":["../../src/server/artifact-routes.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAWhD,wBAAsB,UAAU,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAgCpF;AAOD,MAAM,MAAM,eAAe,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAAA;AAE9D,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAyBf;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmCxF;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAQhH"}
1
+ {"version":3,"file":"artifact-routes.d.ts","sourceRoot":"","sources":["../../src/server/artifact-routes.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAWhD,wBAAsB,UAAU,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAgCpF;AAYD,MAAM,MAAM,eAAe,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAAA;AAE9D,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAyBf;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmCxF;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAQhH"}
@@ -1,6 +1,7 @@
1
- import type { TestBeginData, TestEndData } from '../schemas.ts';
1
+ import type { RegisterData, TestBeginData, TestEndData } from '../schemas.ts';
2
2
  import type { TestData } from '../types.ts';
3
3
  import { type ApprovalRouting } from './artifact-routes.ts';
4
+ import type { RoutesContext } from './routes.ts';
4
5
  import type { RuntimeWebSocket } from './ws.ts';
5
6
  export interface HandlerContext {
6
7
  reportData: {
@@ -14,6 +15,7 @@ export interface HandlerContext {
14
15
  currentRunIds: Set<string>;
15
16
  saveReport: () => Promise<void>;
16
17
  approvalRouting?: ApprovalRouting;
18
+ routesContext: RoutesContext;
17
19
  }
18
20
  export declare function handleTestBegin(ctx: HandlerContext, data: TestBeginData): void;
19
21
  export declare function handleTestEnd(ctx: HandlerContext, data: TestEndData): void;
@@ -22,4 +24,5 @@ export declare function handleRunEnd(ctx: HandlerContext, data: {
22
24
  }): Promise<void>;
23
25
  export declare function handleApprove(): void;
24
26
  export declare function handleSync(ctx: HandlerContext): void;
27
+ export declare function handleRegister(ctx: HandlerContext, data: RegisterData): void;
25
28
  //# sourceMappingURL=handlers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/server/handlers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC/D,OAAO,KAAK,EAA0B,QAAQ,EAAE,MAAM,aAAa,CAAA;AACnE,OAAO,EAA+B,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAExF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE;QACV,SAAS,EAAE,OAAO,CAAA;QAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC/B,QAAQ,EAAE,MAAM,EAAE,CAAA;QAClB,YAAY,EAAE,OAAO,CAAA;QACrB,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;IACD,SAAS,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAChC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAA;CAClC;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAM9E;AAwBD,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAiB1E;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE;IAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;CAAE,GAChD,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAgB,aAAa,IAAI,IAAI,CAIpC;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAWpD"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/server/handlers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC7E,OAAO,KAAK,EAA0B,QAAQ,EAAE,MAAM,aAAa,CAAA;AACnE,OAAO,EAA+B,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE;QACV,SAAS,EAAE,OAAO,CAAA;QAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC/B,QAAQ,EAAE,MAAM,EAAE,CAAA;QAClB,YAAY,EAAE,OAAO,CAAA;QACrB,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;IACD,SAAS,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAChC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,aAAa,EAAE,aAAa,CAAA;CAC7B;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAM9E;AAwBD,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAiB1E;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE;IAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;CAAE,GAChD,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAgB,aAAa,IAAI,IAAI,CAIpC;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAWpD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAqC5E"}
@@ -9,7 +9,7 @@ export interface RoutesContext {
9
9
  };
10
10
  staticDir: string;
11
11
  saveReport: () => Promise<void>;
12
- artifactRoots?: readonly string[];
12
+ artifactRoots?: string[];
13
13
  approvalRouting?: {
14
14
  configDir: string;
15
15
  playwrightTestDir?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAI3C,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE;QACV,SAAS,EAAE,OAAO,CAAA;QAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC/B,QAAQ,EAAE,MAAM,EAAE,CAAA;QAClB,YAAY,EAAE,OAAO,CAAA;QACrB,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,eAAe,CAAC,EAAE;QAChB,SAAS,EAAE,MAAM,CAAA;QACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAA;QAC9B,8BAA8B,CAAC,EAAE,MAAM,CAAA;QACvC,sCAAsC,CAAC,EAAE,MAAM,CAAA;KAChD,CAAA;CACF;AAED,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAA;AAqMtG,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CA6CrF"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAI3C,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE;QACV,SAAS,EAAE,OAAO,CAAA;QAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC/B,QAAQ,EAAE,MAAM,EAAE,CAAA;QAClB,YAAY,EAAE,OAAO,CAAA;QACrB,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,eAAe,CAAC,EAAE;QAChB,SAAS,EAAE,MAAM,CAAA;QACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAA;QAC9B,8BAA8B,CAAC,EAAE,MAAM,CAAA;QACvC,sCAAsC,CAAC,EAAE,MAAM,CAAA;KAChD,CAAA;CACF;AAED,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAA;AAqMtG,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CA6CrF"}
package/dist/server.cjs CHANGED
@@ -169,12 +169,16 @@ function createMutableReportState(screenshotDir = "./screenshots") {
169
169
  };
170
170
  }
171
171
  function applyTestBeginEvent(state, data) {
172
- const { id, title, titlePath, browser, location } = data;
172
+ const { id, title, titlePath, browser, projectName, location } = data;
173
173
  state.currentRunIds.add(id);
174
174
  state.reportData.tests[id] ??= {
175
175
  id,
176
176
  titlePath: titlePath ?? [],
177
177
  browser: browser ?? "",
178
+ // Older reporters sent the raw project name in `browser` and had no
179
+ // `projectName` field. Preserve that value for snapshot path resolution
180
+ // when loading data produced by such reporters.
181
+ projectName: projectName ?? browser ?? "",
178
182
  title: title ?? "",
179
183
  location,
180
184
  status: "running"
@@ -278,6 +282,7 @@ var TestDataSchema = import_zod.z.object({
278
282
  id: import_zod.z.string(),
279
283
  titlePath: import_zod.z.array(import_zod.z.string()),
280
284
  browser: import_zod.z.string(),
285
+ projectName: import_zod.z.string().optional(),
281
286
  title: import_zod.z.string(),
282
287
  skip: import_zod.z.union([import_zod.z.boolean(), import_zod.z.string()]).optional(),
283
288
  retries: import_zod.z.number().optional(),
@@ -302,7 +307,7 @@ var CrvyRprtrSuiteSchema = import_zod.z.lazy(
302
307
  })
303
308
  );
304
309
  var IncomingWebSocketMessageSchema = import_zod.z.object({
305
- type: import_zod.z.enum(["test-begin", "test-end", "run-end", "approve", "sync"]),
310
+ type: import_zod.z.enum(["test-begin", "test-end", "run-end", "approve", "sync", "register"]),
306
311
  data: import_zod.z.unknown()
307
312
  });
308
313
  var WebSocketMessageSchema = import_zod.z.discriminatedUnion("type", [
@@ -329,6 +334,7 @@ var TestBeginDataSchema = import_zod.z.object({
329
334
  title: import_zod.z.string(),
330
335
  titlePath: import_zod.z.array(import_zod.z.string()),
331
336
  browser: import_zod.z.string(),
337
+ projectName: import_zod.z.string().optional(),
332
338
  location: LocationSchema
333
339
  });
334
340
  var TestEndDataSchema = import_zod.z.object({
@@ -346,6 +352,12 @@ var TestEndDataSchema = import_zod.z.object({
346
352
  var RunEndDataSchema = import_zod.z.object({
347
353
  status: import_zod.z.enum(["passed", "failed", "skipped"])
348
354
  });
355
+ var RegisterDataSchema = import_zod.z.object({
356
+ playwrightSnapshotDir: import_zod.z.string().optional(),
357
+ playwrightTestDir: import_zod.z.string().optional(),
358
+ playwrightSnapshotPathTemplate: import_zod.z.string().optional(),
359
+ playwrightToHaveScreenshotPathTemplate: import_zod.z.string().optional()
360
+ });
349
361
  var ReportDataSchema = import_zod.z.object({
350
362
  isRunning: import_zod.z.boolean(),
351
363
  tests: import_zod.z.record(import_zod.z.string(), TestDataSchema),
@@ -766,7 +778,8 @@ async function handleFile(ctx, req) {
766
778
  }
767
779
  function reporterTitlePath(test) {
768
780
  const testFile = test.location?.file;
769
- return ["", test.browser, testFile ?? "", ...test.titlePath, test.title];
781
+ const projectName = test.projectName ?? test.browser;
782
+ return ["", projectName, testFile ?? "", ...test.titlePath, test.title];
770
783
  }
771
784
  function resolveBaselineSnapshotPath(routing, test, retry, imageName) {
772
785
  const testFile = test.location?.file;
@@ -782,7 +795,7 @@ function resolveBaselineSnapshotPath(routing, test, retry, imageName) {
782
795
  configDir: routing.configDir,
783
796
  testDir: routing.playwrightTestDir ?? (0, import_path6.dirname)(testFile),
784
797
  snapshotDir: routing.playwrightSnapshotDir ?? (0, import_path6.dirname)(testFile),
785
- projectName: test.browser,
798
+ projectName: test.projectName ?? test.browser,
786
799
  snapshotSuffix: process.platform,
787
800
  snapshotPathTemplate: routing.playwrightSnapshotPathTemplate,
788
801
  toHaveScreenshotPathTemplate: routing.playwrightToHaveScreenshotPathTemplate
@@ -904,6 +917,40 @@ function handleSync(ctx) {
904
917
  };
905
918
  broadcastToBrowsers(ctx.wsClients, message);
906
919
  }
920
+ function handleRegister(ctx, data) {
921
+ const roots = [];
922
+ if (data.playwrightSnapshotDir !== void 0 && data.playwrightSnapshotDir !== "") {
923
+ roots.push(data.playwrightSnapshotDir);
924
+ }
925
+ if (data.playwrightTestDir !== void 0 && data.playwrightTestDir !== "") {
926
+ roots.push(data.playwrightTestDir);
927
+ }
928
+ const existing = ctx.routesContext.artifactRoots ?? [];
929
+ for (const root of roots) {
930
+ if (!existing.includes(root)) {
931
+ existing.push(root);
932
+ }
933
+ }
934
+ ctx.routesContext.artifactRoots = existing;
935
+ if (ctx.routesContext.approvalRouting !== void 0) {
936
+ if (data.playwrightSnapshotDir !== void 0) {
937
+ ctx.routesContext.approvalRouting.playwrightSnapshotDir = data.playwrightSnapshotDir;
938
+ }
939
+ if (data.playwrightTestDir !== void 0) {
940
+ ctx.routesContext.approvalRouting.playwrightTestDir = data.playwrightTestDir;
941
+ }
942
+ if (data.playwrightSnapshotPathTemplate !== void 0) {
943
+ ctx.routesContext.approvalRouting.playwrightSnapshotPathTemplate = data.playwrightSnapshotPathTemplate;
944
+ }
945
+ if (data.playwrightToHaveScreenshotPathTemplate !== void 0) {
946
+ ctx.routesContext.approvalRouting.playwrightToHaveScreenshotPathTemplate = data.playwrightToHaveScreenshotPathTemplate;
947
+ }
948
+ }
949
+ console.log("[Server] Reporter registered with config:", {
950
+ playwrightSnapshotDir: data.playwrightSnapshotDir,
951
+ playwrightTestDir: data.playwrightTestDir
952
+ });
953
+ }
907
954
 
908
955
  // src/server/routes.ts
909
956
  var import_path7 = require("path");
@@ -1103,15 +1150,6 @@ function createReportData(options) {
1103
1150
  screenshotDir: options.screenshotDir ?? "./screenshots"
1104
1151
  };
1105
1152
  }
1106
- function createHandlerContext(reportData, wsClients, currentRunIds, saveReport, approvalRouting) {
1107
- return {
1108
- reportData,
1109
- wsClients,
1110
- currentRunIds,
1111
- saveReport,
1112
- approvalRouting
1113
- };
1114
- }
1115
1153
  async function loadReport(reportPath, reportData) {
1116
1154
  try {
1117
1155
  const raw = await readJsonFile(reportPath);
@@ -1194,6 +1232,15 @@ async function handleParsedWebSocketMessage(ctx, msg) {
1194
1232
  case "sync":
1195
1233
  handleSync(ctx);
1196
1234
  break;
1235
+ case "register": {
1236
+ const parsed = safeParse(RegisterDataSchema, msg.data);
1237
+ if (parsed === null) {
1238
+ console.error("Invalid register message data", msg.data);
1239
+ break;
1240
+ }
1241
+ handleRegister(ctx, parsed);
1242
+ break;
1243
+ }
1197
1244
  }
1198
1245
  }
1199
1246
  function createWebSocketMessageHandler(getHandlerContext) {
@@ -1270,7 +1317,14 @@ async function createServerApp(options = {}) {
1270
1317
  await writeJsonFile(reportFile, reportData);
1271
1318
  }
1272
1319
  const routesContext = createRoutesContext(reportData, staticDir, saveReport, options);
1273
- const getHandlerContext = () => createHandlerContext(reportData, wsClients, currentRunIds, saveReport, routesContext.approvalRouting);
1320
+ const getHandlerContext = () => ({
1321
+ reportData,
1322
+ wsClients,
1323
+ currentRunIds,
1324
+ saveReport,
1325
+ approvalRouting: routesContext.approvalRouting,
1326
+ routesContext
1327
+ });
1274
1328
  const handleRequest = (req) => handleHttpRequest(routesContext, req);
1275
1329
  const handleWebSocketMessage = createWebSocketMessageHandler(getHandlerContext);
1276
1330
  await loadReport(reportFile, reportData);
package/dist/server.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  startServer
3
- } from "./chunk-35CZLYSW.js";
4
- import "./chunk-43JLQN36.js";
3
+ } from "./chunk-F7NSIHCV.js";
4
+ import "./chunk-X2TCDD54.js";
5
5
  export {
6
6
  startServer
7
7
  };
package/dist/types.d.ts CHANGED
@@ -30,6 +30,13 @@ export interface TestData {
30
30
  id: string;
31
31
  titlePath: string[];
32
32
  browser: string;
33
+ /**
34
+ * Raw Playwright project name. Used for snapshot path resolution so the
35
+ * resolver matches what Playwright itself used when storing baselines
36
+ * (empty string for the implicit default project). Undefined for data
37
+ * produced by older reporters; consumers fall back to `browser`.
38
+ */
39
+ projectName?: string;
33
40
  title: string;
34
41
  skip?: boolean | string;
35
42
  retries?: number;
@@ -87,6 +94,7 @@ export interface TestBeginMessage {
87
94
  title: string;
88
95
  titlePath: string[];
89
96
  browser: string;
97
+ projectName?: string;
90
98
  location: Location;
91
99
  };
92
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crvy/rprtr",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Playwright reporter with visual regression UI for comparing and approving screenshot tests",
5
5
  "keywords": [
6
6
  "crvy",