@reportforge/playwright-pdf 0.14.0 → 0.14.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/CHANGELOG.md +16 -0
- package/README.md +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/templates/partials/charts.hbs +12 -4
- package/dist/templates/styles/base.css +3 -0
- package/dist/templates/styles/executive.css +0 -47
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
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.2] - 2026-07-06
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
|
|
10
|
+
- **Pass-rate doughnut and suite-results bar charts no longer render flush-left inside their card.** `canvas` computes to `display: block` in Chromium, so `.chart-card`'s `text-align: center` (which only centers inline-level boxes) never centered it — most visible on the executive template's wide secondary chart row. `.chart-card canvas` now centers with explicit `margin: 0 auto`.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## [0.14.1] - 2026-07-06
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- **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.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
6
22
|
## [0.14.0] - 2026-07-06
|
|
7
23
|
|
|
8
24
|
### 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 ·
|
|
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,
|
|
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,
|
|
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.
|
|
14059
|
+
const version = true ? "0.14.2" : "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.
|
|
14060
|
+
const version = true ? "0.14.2" : "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
|
|
80
|
+
ctx.font = '700 ' + mainSize + 'px "Source Serif Pro", Georgia, serif';
|
|
73
81
|
ctx.fillStyle = '#1F1F1C';
|
|
74
|
-
ctx.fillText(passRate + '%', cx, cy -
|
|
82
|
+
ctx.fillText(passRate + '%', cx, cy - mainSize * 0.24);
|
|
75
83
|
/* label below */
|
|
76
|
-
ctx.font = '600
|
|
84
|
+
ctx.font = '600 ' + subSize + 'px Inter, sans-serif';
|
|
77
85
|
ctx.fillStyle = '#8C8B82';
|
|
78
|
-
ctx.fillText('PASS RATE', cx, cy +
|
|
86
|
+
ctx.fillText('PASS RATE', cx, cy + mainSize * 0.46);
|
|
79
87
|
ctx.restore();
|
|
80
88
|
}
|
|
81
89
|
};
|
|
@@ -667,6 +667,9 @@ code {
|
|
|
667
667
|
border: 1px solid var(--border-2);
|
|
668
668
|
border-radius: 6px; padding: 16px 14px; text-align: center;
|
|
669
669
|
}
|
|
670
|
+
/* canvas computes to display:block in Chromium, so text-align:center above
|
|
671
|
+
never centers it (that only affects inline-level boxes) — margin:auto does. */
|
|
672
|
+
.chart-card canvas { display: block; margin: 0 auto; }
|
|
670
673
|
.chart-card h3 {
|
|
671
674
|
margin: 0 0 12px;
|
|
672
675
|
font-family: 'Inter', system-ui, sans-serif; font-size: 9px;
|
|
@@ -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.
|
|
3
|
+
"version": "0.14.2",
|
|
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",
|