@crvy/rprtr 0.0.7 → 0.0.8

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,11 @@ 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.0.8] - 2026-06-05
9
+
10
+ ### Fixed
11
+
12
+ - Broadcast test-begin events to UI and allow running→terminal status transitions
8
13
  ## [0.0.7] - 2026-06-05
9
14
 
10
15
  ### Ci
@@ -11,7 +11,7 @@ import {
11
11
  finalizeRunEvent,
12
12
  resolveBaselineTargets,
13
13
  safeParse
14
- } from "./chunk-JGS2VWQP.js";
14
+ } from "./chunk-EJRLZZ22.js";
15
15
 
16
16
  // src/server/app.ts
17
17
  import { dirname as dirname3, join as join4 } from "path";
@@ -178,7 +178,9 @@ function broadcastToBrowsers(wsClients, msg) {
178
178
  // src/server/handlers.ts
179
179
  function handleTestBegin(ctx, data) {
180
180
  const test = applyTestBeginEvent(ctx, data);
181
+ ctx.reportData.isRunning = true;
181
182
  console.log(` \u25B6 [${test.browser ?? "?"}] ${test.title}`);
183
+ broadcastToBrowsers(ctx.wsClients, { type: "test-begin", data });
182
184
  }
183
185
  function handleTestEnd(ctx, data) {
184
186
  const result = applyTestEndEvent(ctx, data);
package/dist/cli.js CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  startServer
4
- } from "./chunk-OMDYTNWY.js";
5
- import "./chunk-JGS2VWQP.js";
4
+ } from "./chunk-XU5VQ3FZ.js";
5
+ import "./chunk-EJRLZZ22.js";
6
6
 
7
7
  // src/cli.ts
8
8
  import { join } from "path";
@@ -0,0 +1,3 @@
1
+ export declare const log: (...args: unknown[]) => void;
2
+ export declare const logError: (...args: unknown[]) => void;
3
+ //# sourceMappingURL=debug-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-log.d.ts","sourceRoot":"","sources":["../src/debug-log.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,OAAO,EAAE,KAAG,IAExC,CAAA;AACD,eAAO,MAAM,QAAQ,GAAI,GAAG,MAAM,OAAO,EAAE,KAAG,IAE7C,CAAA"}
package/dist/index.css CHANGED
@@ -24,7 +24,6 @@
24
24
  --color-white: #fff;
25
25
  --spacing: 0.25rem;
26
26
  --container-xl: 36rem;
27
- --container-2xl: 42rem;
28
27
  --text-xs: 0.75rem;
29
28
  --text-xs--line-height: calc(1 / 0.75);
30
29
  --text-sm: 0.875rem;
@@ -391,9 +390,6 @@
391
390
  .w-full {
392
391
  width: 100%;
393
392
  }
394
- .max-w-2xl {
395
- max-width: var(--container-2xl);
396
- }
397
393
  .max-w-full {
398
394
  max-width: 100%;
399
395
  }
@@ -541,12 +537,6 @@
541
537
  .border-edge {
542
538
  border-color: var(--color-edge);
543
539
  }
544
- .border-edge\/70 {
545
- border-color: var(--color-edge);
546
- @supports (color: color-mix(in lab, red, red)) {
547
- border-color: color-mix(in oklab, var(--color-edge) 70%, transparent);
548
- }
549
- }
550
540
  .border-error {
551
541
  border-color: var(--color-error);
552
542
  }
@@ -559,12 +549,6 @@
559
549
  border-color: color-mix(in oklab, var(--color-green-500) 60%, transparent);
560
550
  }
561
551
  }
562
- .border-info\/40 {
563
- border-color: var(--color-info);
564
- @supports (color: color-mix(in lab, red, red)) {
565
- border-color: color-mix(in oklab, var(--color-info) 40%, transparent);
566
- }
567
- }
568
552
  .border-purple-500\/60 {
569
553
  border-color: color-mix(in srgb, oklch(62.7% 0.265 303.9) 60%, transparent);
570
554
  @supports (color: color-mix(in lab, red, red)) {
@@ -619,12 +603,6 @@
619
603
  .bg-info {
620
604
  background-color: var(--color-info);
621
605
  }
622
- .bg-info\/10 {
623
- background-color: var(--color-info);
624
- @supports (color: color-mix(in lab, red, red)) {
625
- background-color: color-mix(in oklab, var(--color-info) 10%, transparent);
626
- }
627
- }
628
606
  .bg-purple-500\/25 {
629
607
  background-color: color-mix(in srgb, oklch(62.7% 0.265 303.9) 25%, transparent);
630
608
  @supports (color: color-mix(in lab, red, red)) {
package/dist/index.js CHANGED
@@ -19550,7 +19550,8 @@ var statusUpdatesMap = /* @__PURE__ */ new Map([
19550
19550
  ["success", /(approved|failed|pending|running)/],
19551
19551
  ["approved", /(failed|pending|running)/],
19552
19552
  ["failed", /(pending|running)/],
19553
- ["pending", /running/]
19553
+ ["pending", /running/],
19554
+ ["running", /(success|approved|failed|pending)/]
19554
19555
  ]);
19555
19556
  function calcStatus(oldStatus, newStatus) {
19556
19557
  return newStatus !== void 0 && statusUpdatesMap.get(oldStatus)?.test(newStatus) === true ? newStatus : oldStatus;
@@ -20282,10 +20283,9 @@ function SlideView($$anchor, $$props) {
20282
20283
  delegate(["input"]);
20283
20284
 
20284
20285
  // src/client/components/SideBySideView.svelte
20285
- var root_24 = from_html(`<div class="px-3 py-2 text-xs text-fg-muted border-t border-edge/70">Copied from the snapshot on disk.</div>`);
20286
- var root_14 = from_html(`<div class="flex-1 flex flex-col bg-surface-panel rounded-md overflow-hidden min-w-0 border-2 border-green-500/60"><h3 class="m-0 px-3 py-2 text-xs font-bold bg-green-500/25 text-green-800 dark:text-green-200 uppercase tracking-wider"> </h3> <div class="flex items-center justify-center p-2"><img alt="Expected" class="w-auto max-w-full object-contain mx-auto" loading="lazy"/></div> <!></div>`);
20287
- var root_32 = from_html(`<div class="flex-1 flex flex-col bg-surface-panel rounded-md overflow-hidden min-w-0 border-2 border-yellow-500/60"><h3 class="m-0 px-3 py-2 text-xs font-bold bg-yellow-500/25 text-yellow-800 dark:text-yellow-200 uppercase tracking-wider">Diff</h3> <div class="flex items-center justify-center p-2"><img alt="Diff" class="w-auto max-w-full object-contain mx-auto" loading="lazy"/></div></div>`);
20288
- var root_42 = from_html(`<div class="flex-1 flex flex-col bg-surface-panel rounded-md overflow-hidden min-w-0 border-2 border-red-500/60"><h3 class="m-0 px-3 py-2 text-xs font-bold bg-red-500/25 text-red-800 dark:text-red-200 uppercase tracking-wider">Actual</h3> <div class="flex items-center justify-center p-2"><img alt="Actual" class="w-auto max-w-full object-contain mx-auto" loading="lazy"/></div></div>`);
20286
+ var root_14 = from_html(`<div class="flex-1 flex flex-col bg-surface-panel rounded-md overflow-hidden min-w-0 border-2 border-green-500/60"><h3 class="m-0 px-3 py-2 text-xs font-bold bg-green-500/25 text-green-800 dark:text-green-200 uppercase tracking-wider"> </h3> <div class="flex items-center justify-center p-2"><img alt="Expected" class="w-auto max-w-full object-contain mx-auto" loading="lazy"/></div></div>`);
20287
+ var root_24 = from_html(`<div class="flex-1 flex flex-col bg-surface-panel rounded-md overflow-hidden min-w-0 border-2 border-yellow-500/60"><h3 class="m-0 px-3 py-2 text-xs font-bold bg-yellow-500/25 text-yellow-800 dark:text-yellow-200 uppercase tracking-wider">Diff</h3> <div class="flex items-center justify-center p-2"><img alt="Diff" class="w-auto max-w-full object-contain mx-auto" loading="lazy"/></div></div>`);
20288
+ var root_32 = from_html(`<div class="flex-1 flex flex-col bg-surface-panel rounded-md overflow-hidden min-w-0 border-2 border-red-500/60"><h3 class="m-0 px-3 py-2 text-xs font-bold bg-red-500/25 text-red-800 dark:text-red-200 uppercase tracking-wider">Actual</h3> <div class="flex items-center justify-center p-2"><img alt="Actual" class="w-auto max-w-full object-contain mx-auto" loading="lazy"/></div></div>`);
20289
20289
  var root3 = from_html(`<div><!> <!> <!></div>`);
20290
20290
  function SideBySideView($$anchor, $$props) {
20291
20291
  push($$props, true);
@@ -20306,7 +20306,7 @@ function SideBySideView($$anchor, $$props) {
20306
20306
  let classes;
20307
20307
  var node = child(div);
20308
20308
  {
20309
- var consequent_1 = ($$anchor2) => {
20309
+ var consequent = ($$anchor2) => {
20310
20310
  var div_1 = root_14();
20311
20311
  var h3 = child(div_1);
20312
20312
  var text2 = child(h3, true);
@@ -20314,16 +20314,6 @@ function SideBySideView($$anchor, $$props) {
20314
20314
  var div_2 = sibling(h3, 2);
20315
20315
  var img_1 = child(div_2);
20316
20316
  reset(div_2);
20317
- var node_1 = sibling(div_2, 2);
20318
- {
20319
- var consequent = ($$anchor3) => {
20320
- var div_3 = root_24();
20321
- append($$anchor3, div_3);
20322
- };
20323
- if_block(node_1, ($$render) => {
20324
- if ($$props.image.source === "baseline-only" && !$$props.image.actual && !$$props.image.diff) $$render(consequent);
20325
- });
20326
- }
20327
20317
  reset(div_1);
20328
20318
  template_effect(() => {
20329
20319
  set_text(text2, get2(expectedLabel));
@@ -20332,37 +20322,37 @@ function SideBySideView($$anchor, $$props) {
20332
20322
  append($$anchor2, div_1);
20333
20323
  };
20334
20324
  if_block(node, ($$render) => {
20335
- if ($$props.image.expect) $$render(consequent_1);
20325
+ if ($$props.image.expect) $$render(consequent);
20336
20326
  });
20337
20327
  }
20338
- var node_2 = sibling(node, 2);
20328
+ var node_1 = sibling(node, 2);
20339
20329
  {
20340
- var consequent_2 = ($$anchor2) => {
20341
- var div_4 = root_32();
20342
- var div_5 = sibling(child(div_4), 2);
20343
- var img_2 = child(div_5);
20344
- reset(div_5);
20330
+ var consequent_1 = ($$anchor2) => {
20331
+ var div_3 = root_24();
20332
+ var div_4 = sibling(child(div_3), 2);
20333
+ var img_2 = child(div_4);
20345
20334
  reset(div_4);
20335
+ reset(div_3);
20346
20336
  template_effect(() => set_attribute2(img_2, "src", $$props.image.diff));
20347
- append($$anchor2, div_4);
20337
+ append($$anchor2, div_3);
20348
20338
  };
20349
- if_block(node_2, ($$render) => {
20350
- if ($$props.image.diff) $$render(consequent_2);
20339
+ if_block(node_1, ($$render) => {
20340
+ if ($$props.image.diff) $$render(consequent_1);
20351
20341
  });
20352
20342
  }
20353
- var node_3 = sibling(node_2, 2);
20343
+ var node_2 = sibling(node_1, 2);
20354
20344
  {
20355
- var consequent_3 = ($$anchor2) => {
20356
- var div_6 = root_42();
20357
- var div_7 = sibling(child(div_6), 2);
20358
- var img_3 = child(div_7);
20359
- reset(div_7);
20345
+ var consequent_2 = ($$anchor2) => {
20346
+ var div_5 = root_32();
20347
+ var div_6 = sibling(child(div_5), 2);
20348
+ var img_3 = child(div_6);
20360
20349
  reset(div_6);
20350
+ reset(div_5);
20361
20351
  template_effect(() => set_attribute2(img_3, "src", $$props.image.actual));
20362
- append($$anchor2, div_6);
20352
+ append($$anchor2, div_5);
20363
20353
  };
20364
- if_block(node_3, ($$render) => {
20365
- if ($$props.image.actual) $$render(consequent_3);
20354
+ if_block(node_2, ($$render) => {
20355
+ if ($$props.image.actual) $$render(consequent_2);
20366
20356
  });
20367
20357
  }
20368
20358
  reset(div);
@@ -20509,20 +20499,17 @@ function BlendView($$anchor, $$props) {
20509
20499
 
20510
20500
  // src/client/components/ResultsPage.svelte
20511
20501
  var root_27 = from_html(`<button> </button>`);
20512
- var root_43 = from_html(`<button> </button>`);
20502
+ var root_42 = from_html(`<button> </button>`);
20513
20503
  var root_34 = from_html(`<div class="flex gap-1 flex-wrap justify-center mt-1"></div>`);
20514
20504
  var root_52 = from_html(`<div class="flex-1 flex items-center justify-center text-fg-muted text-base">No image to display</div>`);
20515
20505
  var root_62 = from_html(`<div class="max-w-xl w-full rounded-md border border-edge bg-surface-panel px-5 py-6 text-center"><h3 class="m-0 text-sm font-semibold text-fg-bright uppercase tracking-wide">Passed Visual Assertion</h3> <p class="mt-3 text-sm leading-6 text-fg-muted">Playwright reported this screenshot assertion, but did not emit an actual, expected, or diff artifact for the passing comparison.</p></div>`);
20516
- var root_82 = from_html(`<div class="mx-auto max-w-2xl w-full rounded-md border border-info/40 bg-info/10 px-4 py-3 text-sm text-fg">Baseline copied from the stored snapshot. Playwright did not emit a passed actual image for this comparison.</div>`);
20517
- var root_7 = from_html(`<div class="w-full flex flex-col gap-3"><!> <!></div>`);
20518
- var root_112 = from_html(`<div class="mx-auto max-w-2xl w-full rounded-md border border-info/40 bg-info/10 px-4 py-3 text-sm text-fg">Baseline copied from the stored snapshot. Playwright did not emit a passed actual image for this comparison.</div>`);
20519
- var root_132 = from_html(`<div class="flex flex-col bg-surface-panel rounded-md overflow-hidden min-w-0 border-2 border-red-500/60"><h3 class="m-0 px-3 py-2 text-xs font-bold bg-red-500/25 text-red-800 dark:text-red-200 uppercase tracking-wider">Actual</h3> <div class="flex items-center justify-center p-2"><img alt="Actual" class="w-auto max-w-full object-contain mx-auto" loading="lazy"/></div></div>`);
20520
- var root_102 = from_html(`<div class="flex flex-col gap-3"><!> <!></div>`);
20521
- var root_152 = from_html(`<div class="mx-auto max-w-2xl w-full rounded-md border border-info/40 bg-info/10 px-4 py-3 text-sm text-fg">Baseline copied from the stored snapshot. Playwright did not emit a passed actual image for this comparison.</div>`);
20522
- var root_142 = from_html(`<div class="w-full flex flex-col gap-3"><!> <!></div>`);
20523
- var root_18 = from_html(`<button> </button>`);
20524
- var root_19 = from_html(`<span class="px-1 text-fg-muted text-xs"></span>`);
20525
- var root_162 = from_html(`<div class="py-2 px-5 bg-surface-alt border-t border-edge flex items-center justify-center gap-1 shrink-0"><button aria-label="Previous retry">&#8249;</button> <div class="flex gap-0.5 items-center"></div> <button aria-label="Next retry">&#8250;</button></div>`);
20506
+ var root_7 = from_html(`<div class="w-full flex flex-col gap-3"><!></div>`);
20507
+ var root_112 = from_html(`<div class="flex flex-col bg-surface-panel rounded-md overflow-hidden min-w-0 border-2 border-red-500/60"><h3 class="m-0 px-3 py-2 text-xs font-bold bg-red-500/25 text-red-800 dark:text-red-200 uppercase tracking-wider">Actual</h3> <div class="flex items-center justify-center p-2"><img alt="Actual" class="w-auto max-w-full object-contain mx-auto" loading="lazy"/></div></div>`);
20508
+ var root_92 = from_html(`<div class="flex flex-col gap-3"><!></div>`);
20509
+ var root_122 = from_html(`<div class="w-full flex flex-col gap-3"><!></div>`);
20510
+ var root_152 = from_html(`<button> </button>`);
20511
+ var root_162 = from_html(`<span class="px-1 text-fg-muted text-xs"></span>`);
20512
+ var root_132 = from_html(`<div class="py-2 px-5 bg-surface-alt border-t border-edge flex items-center justify-center gap-1 shrink-0"><button aria-label="Previous retry">&#8249;</button> <div class="flex gap-0.5 items-center"></div> <button aria-label="Next retry">&#8250;</button></div>`);
20526
20513
  var root6 = from_html(`<div class="flex flex-col h-full"><div class="py-3 px-5 max-md:px-3 bg-surface-alt border-b border-edge flex items-center gap-2 shrink-0"><div class="flex shrink-0 mr-3"><!></div> <div class="flex-1 flex flex-col items-center min-w-0 pr-10"><h2 class="text-base text-fg-bright m-0 font-medium whitespace-nowrap overflow-hidden text-ellipsis text-pretty max-w-full"> </h2> <!></div></div> <div class="flex-1 overflow-auto min-h-0"><div class="min-h-full p-4 max-md:p-2 flex justify-center items-center"><!></div></div> <!></div>`);
20527
20514
  function ResultsPage($$anchor, $$props) {
20528
20515
  push($$props, true);
@@ -20531,7 +20518,6 @@ function ResultsPage($$anchor, $$props) {
20531
20518
  let imageNames = user_derived(() => get2(result)?.images ? Object.keys(get2(result).images) : []);
20532
20519
  let totalRetries = user_derived(() => $$props.test.results?.length ?? 0);
20533
20520
  let hasDiffAndExpect = user_derived(() => Boolean(get2(image)?.diff && get2(image)?.expect));
20534
- let isBaselineOnly = user_derived(() => get2(image)?.source === "baseline-only");
20535
20521
  let isDeclaredOnly = user_derived(() => get2(image)?.source === "declared-only");
20536
20522
  let imagesWithError = user_derived(() => get2(result)?.images ? Object.keys(get2(result).images).filter((name) => get2(result).status !== "success" && $$props.test.approved?.[name] !== $$props.retry - 1 && get2(result).images?.[name]?.diff !== null) : []);
20537
20523
  let imagesApproved = user_derived(() => get2(result)?.images ? Object.keys(get2(result).images).filter((name) => $$props.test.approved?.[name] === $$props.retry - 1) : []);
@@ -20593,7 +20579,7 @@ function ResultsPage($$anchor, $$props) {
20593
20579
  var consequent_1 = ($$anchor2) => {
20594
20580
  var div_4 = root_34();
20595
20581
  each(div_4, 21, () => get2(imageNames), index, ($$anchor3, name) => {
20596
- var button_1 = root_43();
20582
+ var button_1 = root_42();
20597
20583
  var text_2 = child(button_1, true);
20598
20584
  reset(button_1);
20599
20585
  template_effect(
@@ -20629,20 +20615,10 @@ function ResultsPage($$anchor, $$props) {
20629
20615
  var div_8 = root_62();
20630
20616
  append($$anchor2, div_8);
20631
20617
  };
20632
- var consequent_5 = ($$anchor2) => {
20618
+ var consequent_4 = ($$anchor2) => {
20633
20619
  var div_9 = root_7();
20634
20620
  var node_4 = child(div_9);
20635
- {
20636
- var consequent_4 = ($$anchor3) => {
20637
- var div_10 = root_82();
20638
- append($$anchor3, div_10);
20639
- };
20640
- if_block(node_4, ($$render) => {
20641
- if (get2(isBaselineOnly)) $$render(consequent_4);
20642
- });
20643
- }
20644
- var node_5 = sibling(node_4, 2);
20645
- SideBySideView(node_5, {
20621
+ SideBySideView(node_4, {
20646
20622
  get image() {
20647
20623
  return get2(image);
20648
20624
  }
@@ -20650,28 +20626,18 @@ function ResultsPage($$anchor, $$props) {
20650
20626
  reset(div_9);
20651
20627
  append($$anchor2, div_9);
20652
20628
  };
20653
- var consequent_6 = ($$anchor2) => {
20629
+ var consequent_5 = ($$anchor2) => {
20654
20630
  SwapView($$anchor2, {
20655
20631
  get image() {
20656
20632
  return get2(image);
20657
20633
  }
20658
20634
  });
20659
20635
  };
20660
- var consequent_10 = ($$anchor2) => {
20661
- var div_11 = root_102();
20662
- var node_6 = child(div_11);
20663
- {
20664
- var consequent_7 = ($$anchor3) => {
20665
- var div_12 = root_112();
20666
- append($$anchor3, div_12);
20667
- };
20668
- if_block(node_6, ($$render) => {
20669
- if (get2(isBaselineOnly)) $$render(consequent_7);
20670
- });
20671
- }
20672
- var node_7 = sibling(node_6, 2);
20636
+ var consequent_8 = ($$anchor2) => {
20637
+ var div_10 = root_92();
20638
+ var node_5 = child(div_10);
20673
20639
  {
20674
- var consequent_8 = ($$anchor3) => {
20640
+ var consequent_6 = ($$anchor3) => {
20675
20641
  SlideView($$anchor3, {
20676
20642
  get actual() {
20677
20643
  return get2(image).actual;
@@ -20684,67 +20650,57 @@ function ResultsPage($$anchor, $$props) {
20684
20650
  }
20685
20651
  });
20686
20652
  };
20687
- var consequent_9 = ($$anchor3) => {
20688
- var div_13 = root_132();
20689
- var div_14 = sibling(child(div_13), 2);
20690
- var img = child(div_14);
20691
- reset(div_14);
20692
- reset(div_13);
20653
+ var consequent_7 = ($$anchor3) => {
20654
+ var div_11 = root_112();
20655
+ var div_12 = sibling(child(div_11), 2);
20656
+ var img = child(div_12);
20657
+ reset(div_12);
20658
+ reset(div_11);
20693
20659
  template_effect(() => set_attribute2(img, "src", get2(image).actual));
20694
- append($$anchor3, div_13);
20660
+ append($$anchor3, div_11);
20695
20661
  };
20696
- if_block(node_7, ($$render) => {
20697
- if (get2(image).actual && get2(image).expect && get2(image).diff) $$render(consequent_8);
20698
- else if (get2(image).actual) $$render(consequent_9, 1);
20662
+ if_block(node_5, ($$render) => {
20663
+ if (get2(image).actual && get2(image).expect && get2(image).diff) $$render(consequent_6);
20664
+ else if (get2(image).actual) $$render(consequent_7, 1);
20699
20665
  });
20700
20666
  }
20701
- reset(div_11);
20702
- append($$anchor2, div_11);
20667
+ reset(div_10);
20668
+ append($$anchor2, div_10);
20703
20669
  };
20704
- var consequent_12 = ($$anchor2) => {
20705
- var div_15 = root_142();
20706
- var node_8 = child(div_15);
20707
- {
20708
- var consequent_11 = ($$anchor3) => {
20709
- var div_16 = root_152();
20710
- append($$anchor3, div_16);
20711
- };
20712
- if_block(node_8, ($$render) => {
20713
- if (get2(isBaselineOnly)) $$render(consequent_11);
20714
- });
20715
- }
20716
- var node_9 = sibling(node_8, 2);
20717
- BlendView(node_9, {
20670
+ var consequent_9 = ($$anchor2) => {
20671
+ var div_13 = root_122();
20672
+ var node_6 = child(div_13);
20673
+ BlendView(node_6, {
20718
20674
  get image() {
20719
20675
  return get2(image);
20720
20676
  }
20721
20677
  });
20722
- reset(div_15);
20723
- append($$anchor2, div_15);
20678
+ reset(div_13);
20679
+ append($$anchor2, div_13);
20724
20680
  };
20725
20681
  if_block(node_3, ($$render) => {
20726
20682
  if (!get2(image)) $$render(consequent_2);
20727
20683
  else if (get2(isDeclaredOnly)) $$render(consequent_3, 1);
20728
- else if ($$props.viewMode === "side-by-side" || !get2(hasDiffAndExpect)) $$render(consequent_5, 2);
20729
- else if ($$props.viewMode === "swap") $$render(consequent_6, 3);
20730
- else if ($$props.viewMode === "slide") $$render(consequent_10, 4);
20731
- else if ($$props.viewMode === "blend") $$render(consequent_12, 5);
20684
+ else if ($$props.viewMode === "side-by-side" || !get2(hasDiffAndExpect)) $$render(consequent_4, 2);
20685
+ else if ($$props.viewMode === "swap") $$render(consequent_5, 3);
20686
+ else if ($$props.viewMode === "slide") $$render(consequent_8, 4);
20687
+ else if ($$props.viewMode === "blend") $$render(consequent_9, 5);
20732
20688
  });
20733
20689
  }
20734
20690
  reset(div_6);
20735
20691
  reset(div_5);
20736
- var node_10 = sibling(div_5, 2);
20692
+ var node_7 = sibling(div_5, 2);
20737
20693
  {
20738
- var consequent_15 = ($$anchor2) => {
20739
- var div_17 = root_162();
20740
- var button_2 = child(div_17);
20741
- var div_18 = sibling(button_2, 2);
20742
- each(div_18, 21, () => Array.from({ length: get2(totalRetries) }, (_, i) => i + 1), index, ($$anchor3, page) => {
20694
+ var consequent_12 = ($$anchor2) => {
20695
+ var div_14 = root_132();
20696
+ var button_2 = child(div_14);
20697
+ var div_15 = sibling(button_2, 2);
20698
+ each(div_15, 21, () => Array.from({ length: get2(totalRetries) }, (_, i) => i + 1), index, ($$anchor3, page) => {
20743
20699
  var fragment_3 = comment();
20744
- var node_11 = first_child(fragment_3);
20700
+ var node_8 = first_child(fragment_3);
20745
20701
  {
20746
- var consequent_13 = ($$anchor4) => {
20747
- var button_3 = root_18();
20702
+ var consequent_10 = ($$anchor4) => {
20703
+ var button_3 = root_152();
20748
20704
  var text_3 = child(button_3, true);
20749
20705
  reset(button_3);
20750
20706
  template_effect(
@@ -20760,21 +20716,21 @@ function ResultsPage($$anchor, $$props) {
20760
20716
  append($$anchor4, button_3);
20761
20717
  };
20762
20718
  var d = user_derived(() => get2(totalRetries) <= 7 || get2(page) === 1 || get2(page) === get2(totalRetries) || Math.abs(get2(page) - $$props.retry) <= 1);
20763
- var consequent_14 = ($$anchor4) => {
20764
- var span = root_19();
20719
+ var consequent_11 = ($$anchor4) => {
20720
+ var span = root_162();
20765
20721
  span.textContent = "\u2026";
20766
20722
  append($$anchor4, span);
20767
20723
  };
20768
- if_block(node_11, ($$render) => {
20769
- if (get2(d)) $$render(consequent_13);
20770
- else if (get2(page) === 2 || get2(page) === get2(totalRetries) - 1) $$render(consequent_14, 1);
20724
+ if_block(node_8, ($$render) => {
20725
+ if (get2(d)) $$render(consequent_10);
20726
+ else if (get2(page) === 2 || get2(page) === get2(totalRetries) - 1) $$render(consequent_11, 1);
20771
20727
  });
20772
20728
  }
20773
20729
  append($$anchor3, fragment_3);
20774
20730
  });
20775
- reset(div_18);
20776
- var button_4 = sibling(div_18, 2);
20777
- reset(div_17);
20731
+ reset(div_15);
20732
+ var button_4 = sibling(div_15, 2);
20733
+ reset(div_14);
20778
20734
  template_effect(
20779
20735
  ($0, $1) => {
20780
20736
  set_class(button_2, 1, $0);
@@ -20789,10 +20745,10 @@ function ResultsPage($$anchor, $$props) {
20789
20745
  );
20790
20746
  delegated("click", button_2, () => $$props.onRetryChange($$props.retry - 1));
20791
20747
  delegated("click", button_4, () => $$props.onRetryChange($$props.retry + 1));
20792
- append($$anchor2, div_17);
20748
+ append($$anchor2, div_14);
20793
20749
  };
20794
- if_block(node_10, ($$render) => {
20795
- if (get2(totalRetries) > 1) $$render(consequent_15);
20750
+ if_block(node_7, ($$render) => {
20751
+ if (get2(totalRetries) > 1) $$render(consequent_12);
20796
20752
  });
20797
20753
  }
20798
20754
  reset(div);
@@ -0,0 +1,22 @@
1
+ import type { AttachmentData } from './reporter-utils.ts';
2
+ import { resolveBaselineTargets } from './snapshot-path-resolver.ts';
3
+ export type RunEvent = {
4
+ type: 'test-begin' | 'test-end' | 'run-end';
5
+ data: unknown;
6
+ };
7
+ export type BaselineResolverInput = Parameters<typeof resolveBaselineTargets>[0];
8
+ export type ResolvedBaselineTarget = ReturnType<typeof resolveBaselineTargets>[number];
9
+ export declare function encodeArtifactPathSegment(segment: string): string;
10
+ export declare function safeArtifactPath(name: string): string;
11
+ export declare function sanitizeId(id: string): string;
12
+ export declare function copyResolvedBaseline(safeTestId: string, testScreenshotDir: string, target: ResolvedBaselineTarget, savedAttachments: AttachmentData[]): Promise<void>;
13
+ export declare function saveAttachments(screenshotDir: string, testId: string, result: {
14
+ attachments: {
15
+ contentType?: string;
16
+ path?: string;
17
+ name: string;
18
+ }[];
19
+ }): Promise<AttachmentData[]>;
20
+ export declare function writeOfflineReport(runEvents: RunEvent[], offlineReportPath: string, workerIndex: number): Promise<void>;
21
+ export declare function writeStaticArtifact(runEvents: RunEvent[], screenshotDir: string, reportHtmlPath: string): Promise<void>;
22
+ //# sourceMappingURL=reporter-artifact-ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter-artifact-ops.d.ts","sourceRoot":"","sources":["../src/reporter-artifact-ops.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAOpE,MAAM,MAAM,QAAQ,GAAG;IAAE,IAAI,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAA;AACrF,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAA;AAChF,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEtF,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMjE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,sBAAsB,EAC9B,gBAAgB,EAAE,cAAc,EAAE,GACjC,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAsB,eAAe,CACnC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE;IAAE,WAAW,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,GAC/E,OAAO,CAAC,cAAc,EAAE,CAAC,CAoC3B;AAED,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,QAAQ,EAAE,EACrB,iBAAiB,EAAE,MAAM,EACzB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,QAAQ,EAAE,EACrB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAOf"}