@reportforge/playwright-pdf 0.7.1 → 0.7.2

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/dist/index.js CHANGED
@@ -13295,7 +13295,7 @@ var PdfReporter = class {
13295
13295
  this.dataCollector = new DataCollector();
13296
13296
  this.pdfGenerator = new PdfGenerator();
13297
13297
  this.options = parseOptions(rawOptions);
13298
- const version = true ? "0.7.1" : "0.x";
13298
+ const version = true ? "0.7.2" : "0.x";
13299
13299
  logger.info(`@reportforge/playwright-pdf v${version} initialised`);
13300
13300
  this.licenseClient = new LicenseClient({
13301
13301
  licenseKey: this.options.licenseKey,
package/dist/index.mjs CHANGED
@@ -13296,7 +13296,7 @@ var PdfReporter = class {
13296
13296
  this.dataCollector = new DataCollector();
13297
13297
  this.pdfGenerator = new PdfGenerator();
13298
13298
  this.options = parseOptions(rawOptions);
13299
- const version = true ? "0.7.1" : "0.x";
13299
+ const version = true ? "0.7.2" : "0.x";
13300
13300
  logger.info(`@reportforge/playwright-pdf v${version} initialised`);
13301
13301
  this.licenseClient = new LicenseClient({
13302
13302
  licenseKey: this.options.licenseKey,
@@ -56,9 +56,13 @@
56
56
  {{#if @root.options.showRetries}}<td style="color:var(--text-3);text-align:center;">{{retryCount}}</td>{{/if}}
57
57
  </tr>
58
58
  {{#if failure}}
59
- <tr class="failure-row no-break">
59
+ <tr class="failure-row">
60
60
  <td colspan="{{#if @root.options.showRetries}}4{{else}}3{{/if}}">
61
61
  <div class="failure-detail failure-detail--{{failure.severity}}">
62
+ <div class="failure-detail__head">
63
+ <span class="failure-detail__dot"></span>
64
+ <span class="failure-detail__sev">{{failure.severity}} severity</span>
65
+ </div>
62
66
  {{> failure-card failure=failure showFull=@root.options.showFullFailures showStack=@root.options.showStackTraces}}
63
67
  {{#if chip}}
64
68
  <div class="root-cause-chip root-cause-chip--{{chip.category}}">
@@ -77,7 +81,7 @@
77
81
  </table>
78
82
  {{/if}}
79
83
  {{#each suites}}
80
- <div style="padding-left:14px;border-left:2px solid var(--border);margin:4px 8px;">
84
+ <div style="padding-left:14px;border-left:1px solid var(--border);margin:4px 8px;">
81
85
  {{> suite-node this}}
82
86
  </div>
83
87
  {{/each}}
@@ -153,9 +153,10 @@ tr:last-child td { border-bottom: none; }
153
153
 
154
154
  /* ── Page breaks ────────────────────────────────────────────────────────── */
155
155
  .no-break { page-break-inside: avoid; }
156
- /* Keep a failed test row glued to its inline failure detail: the detail block is
157
- page-break-inside:avoid, so when it can't fit the remaining space it moves to the
158
- next page these pull the test row along so the title never orphans above it. */
156
+ /* Keep a failed test row glued to the START of its inline failure detail so the
157
+ title never orphans above it. The detail card itself may break internally (its
158
+ small pieces are individually break-protected), so a tall screenshot flows to the
159
+ next page rather than pushing the whole block down and stranding a blank page. */
159
160
  .test-row--has-detail { page-break-after: avoid; break-after: avoid; }
160
161
  .test-row--has-detail > td { border-bottom: none; }
161
162
  .failure-row { page-break-before: avoid; break-before: avoid; }
@@ -181,7 +182,6 @@ pre {
181
182
  background: var(--surface-2);
182
183
  color: var(--text-1);
183
184
  border: 1px solid var(--border);
184
- border-left: 3px solid var(--fail);
185
185
  padding: 10px 14px;
186
186
  border-radius: 4px;
187
187
  overflow-x: auto; white-space: pre-wrap; word-break: break-word;
@@ -196,7 +196,7 @@ code {
196
196
 
197
197
  /* ── Screenshot ─────────────────────────────────────────────────────────── */
198
198
  .screenshot {
199
- max-width: 100%; max-height: 260px;
199
+ max-width: 100%; max-height: 210px; width: auto;
200
200
  border: 1px solid var(--border-2); border-radius: 4px;
201
201
  display: block; margin-top: 10px;
202
202
  }
@@ -303,18 +303,37 @@ code {
303
303
  retry history, and root cause together as the failed test's detail (not
304
304
  three separate boxes). Lives here so every template's breakdown can use it. */
305
305
  .failure-row > td { padding: 0; border: none; background: transparent; }
306
+ /* A failed test's detail: a full-bordered card led by a severity dot — NOT a
307
+ coloured left rail. The design system forbids side-stripe borders, so the dot +
308
+ label now carry the severity the rail used to encode by colour alone. The card
309
+ may break across a page; only the small atomic pieces below stay intact, so a
310
+ tall screenshot flows to the next page instead of stranding a blank one. */
306
311
  .failure-detail {
307
- border-left: 3px solid var(--fail);
308
- margin: 2px 10px 10px 12px; /* slight indent under the test row + gap before next row */
309
- padding: 11px 0 11px 16px;
310
- page-break-inside: avoid;
312
+ border: 1px solid var(--border-2);
313
+ border-radius: 6px;
314
+ margin: 2px 10px 10px 12px;
315
+ padding: 12px 14px;
316
+ }
317
+ .failure-detail__head {
318
+ display: flex; align-items: center; gap: 7px; margin-bottom: 9px;
319
+ page-break-after: avoid; break-after: avoid;
320
+ }
321
+ .failure-detail__dot {
322
+ width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;
323
+ background: var(--fail);
324
+ -webkit-print-color-adjust: exact; print-color-adjust: exact;
311
325
  }
312
- .failure-detail--critical { border-left-color: var(--fail); }
313
- .failure-detail--high { border-left-color: #A35E1E; }
314
- .failure-detail--medium { border-left-color: var(--timeout); }
315
- .failure-detail--low { border-left-color: var(--text-3); }
326
+ .failure-detail__sev {
327
+ font-family: 'Inter', system-ui, sans-serif;
328
+ font-size: 8.5px; font-weight: 700; letter-spacing: 0.6px;
329
+ text-transform: uppercase; color: var(--text-3);
330
+ }
331
+ .failure-detail--critical .failure-detail__dot { background: var(--fail); }
332
+ .failure-detail--high .failure-detail__dot { background: #A35E1E; }
333
+ .failure-detail--medium .failure-detail__dot { background: var(--timeout); }
334
+ .failure-detail--low .failure-detail__dot { background: var(--text-3); }
316
335
 
317
- /* error — flat on the rail, no inner box (override the base pre panel) */
336
+ /* error — flat inside the card (override the base pre panel) */
318
337
  .failure-detail pre {
319
338
  margin: 0; padding: 0;
320
339
  background: transparent; border: none; border-radius: 0; max-height: none;
@@ -331,6 +350,7 @@ code {
331
350
  padding-top: 10px; border-top: 1px solid var(--border);
332
351
  font-family: 'Inter', system-ui, sans-serif; font-weight: 600;
333
352
  letter-spacing: 0.5px; text-transform: uppercase;
353
+ page-break-inside: avoid; break-inside: avoid;
334
354
  }
335
355
  .retry-attempt {
336
356
  display: inline-block; padding: 2px 7px;
@@ -358,6 +378,7 @@ code {
358
378
  margin-top: 11px; padding-top: 10px;
359
379
  border-top: 1px solid var(--border);
360
380
  font-family: 'Inter', system-ui, sans-serif; font-size: 9.5px;
381
+ page-break-inside: avoid; break-inside: avoid;
361
382
  }
362
383
  .root-cause-chip__tag {
363
384
  font-size: 8px; font-weight: 700; letter-spacing: 0.8px; text-transform: uppercase;
@@ -683,11 +704,11 @@ code {
683
704
  border: 1px solid var(--border-2);
684
705
  border-radius: 6px; margin-bottom: 10px; overflow: hidden;
685
706
  }
707
+ /* Full-width tinted header bar — no side-stripe (design system forbids them). */
686
708
  .suite-group__header {
687
709
  padding: 10px 14px;
688
710
  background: var(--surface-2);
689
- border-bottom: 1px solid var(--border);
690
- border-left: 3px solid var(--primary, #CC785C);
711
+ border-bottom: 1px solid var(--border-2);
691
712
  display: flex; justify-content: space-between; align-items: center;
692
713
  }
693
714
  .suite-title {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reportforge/playwright-pdf",
3
- "version": "0.7.1",
3
+ "version": "0.7.2",
4
4
  "description": "Enterprise-ready PDF reports for Playwright Test — minimal, detailed, and executive templates with CI/CD integrations",
5
5
  "license": "MIT",
6
6
  "author": "ReportForge",