@reportforge/playwright-pdf 0.14.0 → 0.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5
5
 
6
+ ## [0.14.1] - 2026-07-06
7
+
8
+ ### Fixed
9
+
10
+ - **Executive report's pass-rate doughnut centre text no longer overlaps the ring.** The `executive` template renders the doughnut at 150px (vs 186px on `detailed`/`minimal`), but the centre-text plugin drew a fixed 28px/9px label sized for the larger canvas. Text now scales off the doughnut's actual inner radius, so it fits cleanly at any canvas size.
11
+
12
+ ---
13
+
6
14
  ## [0.14.0] - 2026-07-06
7
15
 
8
16
  ### Added
package/README.md CHANGED
@@ -37,7 +37,7 @@ Three templates, one reporter. Every PDF is fully offline: fonts, charts, and sc
37
37
  <tr>
38
38
  <td align="center"><sub>KPI dashboard · suite breakdown · failure stack traces · embedded screenshots</sub></td>
39
39
  <td align="center"><sub>Everything in minimal <strong>+ charts · requirements matrix · defect log · full environment</strong></sub></td>
40
- <td align="center"><sub>Cover page · KPI dashboard · charts · failure summary <em>(no stack traces)</em></sub></td>
40
+ <td align="center"><sub>Cover page · plain-language brief · hero pass-rate stat · trend chart · failure summary <em>(no stack traces)</em></sub></td>
41
41
  </tr>
42
42
  </table>
43
43
 
package/dist/index.d.mts CHANGED
@@ -41,7 +41,7 @@ interface ReporterOptions {
41
41
  *
42
42
  * - minimal: clean white layout, developer-focused, fast
43
43
  * - detailed: full QA report with defect log and requirements traceability
44
- * - executive: cover page, KPI dashboard, charts for stakeholders
44
+ * - executive: cover page, plain-language brief, hero pass-rate stat, charts for stakeholders
45
45
  * @default 'minimal'
46
46
  */
47
47
  template?: TemplateId | TemplateId[];
package/dist/index.d.ts CHANGED
@@ -41,7 +41,7 @@ interface ReporterOptions {
41
41
  *
42
42
  * - minimal: clean white layout, developer-focused, fast
43
43
  * - detailed: full QA report with defect log and requirements traceability
44
- * - executive: cover page, KPI dashboard, charts for stakeholders
44
+ * - executive: cover page, plain-language brief, hero pass-rate stat, charts for stakeholders
45
45
  * @default 'minimal'
46
46
  */
47
47
  template?: TemplateId | TemplateId[];
package/dist/index.js CHANGED
@@ -14056,7 +14056,7 @@ var PdfReporter = class {
14056
14056
  this.liveConsole = false;
14057
14057
  this.options = parseOptions(rawOptions);
14058
14058
  this.dataCollector = new DataCollector(this.options.capture);
14059
- const version = true ? "0.14.0" : "0.x";
14059
+ const version = true ? "0.14.1" : "0.x";
14060
14060
  logger.info(`@reportforge/playwright-pdf v${version} initialised`);
14061
14061
  this.licenseClient = new LicenseClient({
14062
14062
  licenseKey: this.options.licenseKey,
package/dist/index.mjs CHANGED
@@ -14057,7 +14057,7 @@ var PdfReporter = class {
14057
14057
  this.liveConsole = false;
14058
14058
  this.options = parseOptions(rawOptions);
14059
14059
  this.dataCollector = new DataCollector(this.options.capture);
14060
- const version = true ? "0.14.0" : "0.x";
14060
+ const version = true ? "0.14.1" : "0.x";
14061
14061
  logger.info(`@reportforge/playwright-pdf v${version} initialised`);
14062
14062
  this.licenseClient = new LicenseClient({
14063
14063
  licenseKey: this.options.licenseKey,
@@ -65,17 +65,25 @@
65
65
  var ctx = chart.ctx;
66
66
  var cx = (chart.chartArea.left + chart.chartArea.right) / 2;
67
67
  var cy = (chart.chartArea.top + chart.chartArea.bottom) / 2;
68
+ /* Size the centre text off the doughnut's actual hole, not a fixed px
69
+ value — the executive template's 150px canvas has a smaller inner
70
+ radius than the 186px canvas used elsewhere, and fixed 28px/9px text
71
+ overran the hole into the ring on the smaller size. */
72
+ var arc = chart.getDatasetMeta(0).data[0];
73
+ var innerRadius = (arc && arc.innerRadius) ? arc.innerRadius : 50;
74
+ var mainSize = Math.max(15, Math.round(innerRadius * 0.56));
75
+ var subSize = Math.max(7, Math.round(innerRadius * 0.175));
68
76
  ctx.save();
69
77
  ctx.textAlign = 'center';
70
78
  ctx.textBaseline = 'middle';
71
79
  /* large percentage */
72
- ctx.font = '700 28px "Source Serif Pro", Georgia, serif';
80
+ ctx.font = '700 ' + mainSize + 'px "Source Serif Pro", Georgia, serif';
73
81
  ctx.fillStyle = '#1F1F1C';
74
- ctx.fillText(passRate + '%', cx, cy - 7);
82
+ ctx.fillText(passRate + '%', cx, cy - mainSize * 0.24);
75
83
  /* label below */
76
- ctx.font = '600 9px Inter, sans-serif';
84
+ ctx.font = '600 ' + subSize + 'px Inter, sans-serif';
77
85
  ctx.fillStyle = '#8C8B82';
78
- ctx.fillText('PASS RATE', cx, cy + 13);
86
+ ctx.fillText('PASS RATE', cx, cy + mainSize * 0.46);
79
87
  ctx.restore();
80
88
  }
81
89
  };
@@ -28,53 +28,6 @@
28
28
  font-weight: 500; letter-spacing: 0.4px;
29
29
  }
30
30
 
31
- /* ── KPI dashboard ─────────────────────────────────────────────────────── */
32
- .kpi-strip {
33
- display: grid; grid-template-columns: repeat(6, 1fr);
34
- gap: 10px; margin-bottom: 22px;
35
- }
36
- .kpi-card {
37
- background: var(--surface);
38
- border: 1px solid var(--border-2);
39
- border-radius: 6px; padding: 18px 12px; text-align: center;
40
- position: relative; overflow: hidden;
41
- }
42
- .kpi-card::before {
43
- content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px;
44
- -webkit-print-color-adjust: exact;
45
- print-color-adjust: exact;
46
- }
47
- .kpi-card--total::before { background: var(--accent); }
48
- .kpi-card--pass::before { background: var(--pass); }
49
- .kpi-card--fail::before { background: var(--fail); }
50
- .kpi-card--timedout::before { background: var(--timeout); }
51
- .kpi-card--skip::before { background: var(--skip); }
52
- .kpi-card--flaky::before { background: var(--flaky); }
53
-
54
- .kpi-card__value {
55
- font-family: 'Source Serif Pro', Georgia, serif;
56
- font-size: 32px; font-weight: 700; line-height: 1;
57
- margin-top: 6px;
58
- letter-spacing: -0.5px;
59
- color: var(--text-1);
60
- }
61
- .kpi-card--total .kpi-card__value { color: var(--info); }
62
- .kpi-card--pass .kpi-card__value { color: var(--pass); }
63
- .kpi-card--fail .kpi-card__value { color: var(--fail); }
64
- .kpi-card--timedout .kpi-card__value { color: var(--timeout); }
65
- .kpi-card--skip .kpi-card__value { color: var(--skip); }
66
- .kpi-card--flaky .kpi-card__value { color: var(--flaky); }
67
- .kpi-card__label {
68
- font-family: 'Inter', system-ui, sans-serif; font-size: 8px;
69
- font-weight: 600; letter-spacing: 1.2px; text-transform: uppercase;
70
- color: var(--text-3); margin-top: 8px;
71
- }
72
- .kpi-card__rate {
73
- font-size: 12px; font-weight: 600; color: var(--pass);
74
- margin-top: 5px;
75
- font-family: 'Inter', system-ui, sans-serif;
76
- }
77
-
78
31
  /* ── Verdict badge ───────────────────────────────────────────────────────── */
79
32
  .verdict {
80
33
  display: inline-flex; align-items: center; gap: 8px;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reportforge/playwright-pdf",
3
- "version": "0.14.0",
3
+ "version": "0.14.1",
4
4
  "description": "Playwright Test reporter that generates designed PDF reports: minimal, detailed, and executive templates with CI/CD integrations",
5
5
  "license": "MIT",
6
6
  "author": "ReportForge",