@ia-qa/pal 0.4.0 β†’ 0.7.0

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.
@@ -0,0 +1,381 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.reportFile = void 0;
37
+ exports.renderHtmlReport = renderHtmlReport;
38
+ exports.writeHtmlReport = writeHtmlReport;
39
+ exports.openFile = openFile;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const child_process_1 = require("child_process");
43
+ const history_1 = require("./history");
44
+ const setup_1 = require("./setup");
45
+ const report_1 = require("./report");
46
+ const suite_1 = require("./suite");
47
+ /**
48
+ * The tour as one self-contained HTML file, for the person who does not live in a terminal.
49
+ *
50
+ * Rendered from the same `TourResult` the terminal prints, so the two cannot disagree. Three
51
+ * rules hold it: every string that came from the app under test is escaped (a button label is
52
+ * data, and a report must never run it); "Not seen" is never collapsed; counts are always
53
+ * "X of Y", never a percentage β€” a percentage reads as coverage, and this is not a coverage metric.
54
+ * No external resource, nothing sent anywhere: the file works offline and from a mail attachment.
55
+ */
56
+ const esc = (value) => String(value ?? '').replace(/[&<>"']/g, (c) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;' })[c]);
57
+ const plural = (n, one, many = `${one}s`) => `${n} ${n === 1 ? one : many}`;
58
+ const MOOD = {
59
+ baseline: { color: '#3b82f6', badge: 'πŸ“Œ', title: 'Baseline established' },
60
+ clean: { color: '#10b981', badge: 'βœ…', title: 'All clear' },
61
+ look: { color: '#f59e0b', badge: '⚠️', title: 'Worth a look' },
62
+ broken: { color: '#ef4444', badge: 'β›”', title: 'Something broke' },
63
+ 'no-answer': { color: '#8b5cf6', badge: '⏸', title: 'No answer this time' },
64
+ };
65
+ function palSays(r, mood, toLook) {
66
+ switch (mood) {
67
+ case 'baseline':
68
+ return r.mode === 'explore'
69
+ ? 'I opened more menus, tabs and dialogs and added what I found to the reference.'
70
+ : 'First look done. I wrote down how your app is today β€” next time, I will tell you what changed.';
71
+ case 'clean':
72
+ return 'Nothing moved since last time. Enjoy your day.';
73
+ case 'look':
74
+ return `Nothing broke, but I found ${plural(toLook, 'thing')} worth a look.`;
75
+ case 'broken':
76
+ return 'Something broke. Here is exactly what I saw.';
77
+ default:
78
+ return 'I could not give you an answer this time β€” here is why.';
79
+ }
80
+ }
81
+ const duration = (ms) => {
82
+ const s = Math.round(ms / 1000);
83
+ return s < 90 ? `${s} s` : s < 5400 ? `${Math.round(s / 60)} min` : `${Math.floor(s / 3600)} h ${String(Math.round((s % 3600) / 60)).padStart(2, '0')}`;
84
+ };
85
+ const cmd = (text) => `<span class="cmd"><code>${esc(text)}</code><button type="button" class="copy" data-copy="${esc(text)}" aria-label="Copy command">copy</button></span>`;
86
+ function gauge(label, have, of, note = '') {
87
+ const width = of > 0 ? Math.min(100, Math.round((have / of) * 100)) : 0;
88
+ return `<div class="gauge">
89
+ <div class="gauge-label"><span>${esc(label)}</span><strong>${have} of ${of}</strong></div>
90
+ <div class="bar" role="img" aria-label="${have} of ${of}"><span style="width:${width}%"></span></div>
91
+ ${note ? `<div class="gauge-note">${esc(note)}</div>` : ''}
92
+ </div>`;
93
+ }
94
+ function card(id, icon, title, count, body, opts = {}) {
95
+ if (opts.alwaysOpen) {
96
+ return `<section class="card" id="${id}"><h2>${icon} ${esc(title)} <span class="count">${count}</span></h2>${body}</section>`;
97
+ }
98
+ return `<details class="card" id="${id}"${opts.open === false ? '' : ' open'}><summary><h2>${icon} ${esc(title)} <span class="count">${count}</span></h2></summary>${body}</details>`;
99
+ }
100
+ const item = (html, tone = '') => `<li class="${tone}">${html}</li>`;
101
+ function renderHtmlReport(r, history = [], meta = {}) {
102
+ const mood = (0, history_1.moodOf)(r);
103
+ const m = MOOD[mood];
104
+ const generatedAt = meta.generatedAt ?? new Date().toISOString();
105
+ const d = r.drift;
106
+ const s = r.suite;
107
+ const p = r.pages;
108
+ let host = r.baseUrl;
109
+ try {
110
+ host = new URL(r.baseUrl).host;
111
+ }
112
+ catch {
113
+ /* keep the raw value */
114
+ }
115
+ const broken = [];
116
+ for (const link of r.check?.deadLinks ?? []) {
117
+ const from = link.from[0] ? ` <span class="muted">linked from ${esc(link.from[0].page)}${link.from[0].name ? ` (β€œ${esc(link.from[0].name)}”)` : ''}${link.from.length > 1 ? `, +${link.from.length - 1} more` : ''}</span>` : '';
118
+ broken.push(item(`<span class="tag red">${esc(link.status ?? link.error ?? 'no answer')}</span> <code>${esc(link.url)}</code>${from}`));
119
+ }
120
+ if (r.check && r.check.knownDeadLinks > 0)
121
+ broken.push(item(`${plural(r.check.knownDeadLinks, 'dead link')} of these ${r.check.knownDeadLinks === 1 ? 'was' : 'were'} already reported by a previous tour.`, 'hint'));
122
+ if (s?.ranThisTour && s.run && s.run.exitCode !== 0) {
123
+ broken.push(item(`<span class="tag red">suite</span> your test command exited ${s.run.exitCode}: <code>${esc(s.run.command)}</code>`));
124
+ }
125
+ const decide = [];
126
+ if (d) {
127
+ for (const f of d.onLoad)
128
+ decide.push(item(`<span class="tag red">${esc(f.status)}</span> <strong>${esc(f.page)}</strong> Β· ${esc(f.role)} β€œ${esc(f.name)}” <span class="muted">visible on load β€” fails the tour</span>`));
129
+ for (const page of d.suitePages)
130
+ decide.push(item(`<span class="tag red">tests</span> <strong>${esc(page)}</strong> Β· your tests would act on the wrong element ${cmd('npx -p @ia-qa/self-healing ia-qa-heal diff')}`));
131
+ for (const f of d.behindInteraction) {
132
+ decide.push(item(`<span class="tag amber">${esc(f.status)}</span> <strong>${esc(f.page)}</strong> Β· ${esc(f.role)} β€œ${esc(f.name)}” <span class="path">after ${f.via.map((v) => `<span class="step">${esc(v)}</span>`).join('<span class="arrow">β†’</span>')}</span> <span class="muted">reached only by clicking β€” may depend on the data${d.gating ? '' : ', not failing the tour'}</span>`, 'soft'));
133
+ }
134
+ const pages = [...new Set([...d.onLoad, ...d.behindInteraction].map((f) => f.page).concat(d.suitePages))];
135
+ if (pages.length > 0)
136
+ decide.push(item(`If these changes are intended, make them the reference for those pages only: ${cmd(`npx -p @ia-qa/pal ia-qa-pal accept ${pages.join(' ')}`)}`, 'hint'));
137
+ }
138
+ const sf = d?.suiteFindings;
139
+ if (sf && sf.names + sf.bindings > 0) {
140
+ decide.push(item(`<span class="tag red">tests</span> ${[sf.names > 0 ? `${plural(sf.names, 'renamed label')} your tests locate by name` : '', sf.bindings > 0 ? `${plural(sf.bindings, 'selector')} your tests write changed what they reach` : ''].filter(Boolean).join(' Β· ')} ${cmd('npx -p @ia-qa/self-healing ia-qa-heal diff')}`));
141
+ }
142
+ if (r.check) {
143
+ const c = r.check;
144
+ if (c.newUnnamed.length > 0)
145
+ decide.push(item(`<span class="tag purple">new</span> ${plural(c.newUnnamed.length, 'element')} without an accessible name β€” e.g. ${esc(c.newUnnamed[0].role)} <code>${esc(c.newUnnamed[0].selector)}</code> on ${esc(c.newUnnamed[0].pages[0])}`));
146
+ if (c.newAmbiguous.length > 0)
147
+ decide.push(item(`<span class="tag purple">new</span> ${plural(c.newAmbiguous.length, 'name')} shared by several elements β€” e.g. ${esc(c.newAmbiguous[0].role)} β€œ${esc(c.newAmbiguous[0].name)}” Γ—${c.newAmbiguous[0].count} on ${esc(c.newAmbiguous[0].pages[0])}`));
148
+ if (c.newOrphans.length > 0)
149
+ decide.push(item(`<span class="tag purple">new</span> ${plural(c.newOrphans.length, 'page')} nothing links to β€” ${c.newOrphans.slice(0, 5).map((o) => esc(o.page)).join(', ')}${c.newOrphans.length > 5 ? ', …' : ''}`));
150
+ }
151
+ for (const dead of s?.newDeadNames ?? []) {
152
+ const site = dead.sites[0] ? ` at <code>${esc(dead.sites[0].file)}:${dead.sites[0].line}</code>` : '';
153
+ decide.push(item(`<span class="tag purple">tests</span> locator name β€œ${esc(dead.name)}”${site} matches nothing on the mapped pages <span class="muted">(it may live on a page or a state not mapped)</span>`));
154
+ }
155
+ const masks = (d?.maskSuggestions ?? []).filter((x) => x.pattern);
156
+ if (masks.length > 0) {
157
+ decide.push(item(`πŸ’‘ A label differs only by a number (β€œ${esc(masks[0].example.from)}” β†’ β€œ${esc(masks[0].example.to)}”) β€” a counter or a clock. Stop comparing it; the element stays under contract. Add to <code>.ia-qa/config.json</code>: ${cmd(`"nameMask": ${JSON.stringify(masks.map((x) => x.pattern))}`)}`, 'hint'));
158
+ }
159
+ const known = (r.check?.knownWarnings ?? 0) + (s?.knownDeadNames ?? 0);
160
+ const repair = [];
161
+ if (s?.repairs && s.repairs.total > 0) {
162
+ for (const f of s.repairs.files) {
163
+ for (const rep of f.replacements) {
164
+ repair.push(item(`<code>${esc(f.file)}${rep.lines.length ? `:${rep.lines.join(',')}` : ''}</code> <span class="diff"><del>${esc(rep.from)}</del><span class="arrow">β†’</span><ins>${esc(rep.to)}</ins></span>`));
165
+ }
166
+ }
167
+ if (s.repairs.leftAlone > 0)
168
+ repair.push(item(`${plural(s.repairs.leftAlone, 'occurrence')} deliberately left alone β€” the command below says why.`, 'hint'));
169
+ repair.push(item(`Review, then apply β€” pal never edits your tests: ${cmd(s.repairs.command)}`, 'hint'));
170
+ }
171
+ const unseen = [];
172
+ if (p.notExplored.length > 0) {
173
+ const e = r.estimate;
174
+ unseen.push(item(`${plural(p.notExplored.length, 'page')} with closed menus, tabs or dialogs not explored yet${e ? ` β€” about ${duration(e.seconds * 1000)} <span class="muted">(${e.clicks} controls Γ— ${e.secondsPerClick} s, pace measured on ${e.measuredClicks} clicks)</span>` : ''} ${cmd('npx -p @ia-qa/pal ia-qa-pal tour --more')}`));
175
+ }
176
+ const walled = p.notMapped.filter((x) => x.loginWall);
177
+ if (walled.length > 0)
178
+ unseen.push(item(`${plural(walled.length, 'page')} landed on a login page β€” the session expired or never took: ${walled.map((x) => esc(x.page)).join(', ')}. A person logs in again: ${cmd(setup_1.LOGIN_COMMAND)}`, 'warn'));
179
+ for (const x of p.notMapped.filter((y) => !y.loginWall))
180
+ unseen.push(item(`<strong>${esc(x.page)}</strong> not mapped β€” <span class="muted">${esc(x.reason)}</span>`));
181
+ for (const u of p.unreadable ?? [])
182
+ unseen.push(item(`<strong>${esc(u.page)}</strong> not compared β€” its contract file cannot be read <span class="muted">${esc(u.reason.replace(/^❌\s*/, ''))}</span>`, 'warn'));
183
+ if (d && d.olderCapture.length > 0)
184
+ unseen.push(item(`Drift on ${[...new Set(d.olderCapture.map((f) => esc(f.page)))].join(', ')} is from an older capture and not counted.`));
185
+ if (p.partlyExplored.length > 0)
186
+ unseen.push(item(`Only partly explored (click budget reached): ${p.partlyExplored.map(esc).join(', ')}`));
187
+ if (p.notInBaseline.length > 0)
188
+ unseen.push(item(`Not in the baseline yet: ${p.notInBaseline.map(esc).join(', ')}`));
189
+ if ((p.outOfScope ?? []).length > 0) {
190
+ unseen.push(item(`${plural(p.outOfScope.length, 'contract')} in <code>.ia-qa/mapping/</code> your config does not declare β€” not measured: ${p.outOfScope.slice(0, 8).map(esc).join(', ')}${p.outOfScope.length > 8 ? ', …' : ''} ${cmd('npx -p @ia-qa/pal ia-qa-pal tour --all-contracts')}`));
191
+ }
192
+ for (const x of d?.staleExcluded ?? [])
193
+ unseen.push(item(`<strong>${esc(x)}</strong> not compared β€” same capture on both sides`));
194
+ if (d?.depthMismatch)
195
+ unseen.push(item(esc(d.depthMismatch)));
196
+ if (r.check && r.check.unverified > 0)
197
+ unseen.push(item(`${plural(r.check.unverified, 'link')} could not be verified (rate-limited or no answer)`));
198
+ for (const k of r.check?.skipped ?? [])
199
+ unseen.push(item(`Check skipped β€” ${esc(k.check)}: ${esc(k.why)}`));
200
+ if (s) {
201
+ if (s.inventory.missingPaths.length > 0)
202
+ unseen.push(item(`Test paths not found: ${s.inventory.missingPaths.map(esc).join(', ')}`, 'warn'));
203
+ if (s.inventory.filesScanned === 0)
204
+ unseen.push(item('No test file found under your test paths β€” nothing of your suite was read.', 'warn'));
205
+ if (!s.run)
206
+ unseen.push(item(`Which pages your suite visits is not measured yet. ${cmd('npx -p @ia-qa/pal ia-qa-pal tour --suite')}`));
207
+ else if (s.notVisited === null) {
208
+ const hints = s.captureHints ?? [suite_1.CAPTURE_IMPORT];
209
+ unseen.push(item(`Your suite ran (${esc(s.run.at.slice(0, 10))}, exit ${s.run.exitCode}) but recorded no page β€” it does not arm the capture hook. ${hints.map((h) => cmd(h)).join(' ')}`, 'warn'));
210
+ }
211
+ else if (s.notVisited.length > 0) {
212
+ unseen.push(item(`${s.run.dedicated ? `The command pal runs (<code>${esc(s.run.command)}</code>)` : 'Your suite'} never visits ${s.notVisited.length} of ${p.configured} pages (run of ${esc(s.run.at.slice(0, 10))}): ${s.notVisited.map(esc).join(', ')}` +
213
+ (s.run.dedicated ? ' <span class="muted">β€” a shorter command, not the whole suite: the rest of your tests may well visit them</span>' : '')));
214
+ }
215
+ }
216
+ const toLook = decide.filter((x) => !x.includes('class="hint"')).length + repair.filter((x) => !x.includes('class="hint"')).length;
217
+ const t = d?.totals;
218
+ const chips = t
219
+ ? [
220
+ ['ok', t.ok, 'green'],
221
+ ['renamed', t.renamed, 'blue'],
222
+ ['lost', t.lost, t.lost ? 'red' : 'grey'],
223
+ ['ambiguous', t.ambiguous, t.ambiguous ? 'red' : 'grey'],
224
+ ['rebound', t.rebound, t.rebound ? 'red' : 'grey'],
225
+ ]
226
+ .map(([k, v, tone]) => `<span class="chip ${tone}"><strong>${v}</strong> ${k}</span>`)
227
+ .join('')
228
+ : '';
229
+ const headline = r.refused
230
+ ? esc(r.refused)
231
+ : mood === 'baseline'
232
+ ? r.mode === 'explore'
233
+ ? {
234
+ explored: `${plural(p.exploredThisTour.length, 'page')} explored in depth and added to the reference`,
235
+ 'nothing-mapped': 'Nothing was explored β€” no page is under contract yet',
236
+ 'nothing-openable': 'Nothing to explore β€” no page under contract has a closed menu, tab or dialog',
237
+ 'all-explored': 'Nothing left to explore β€” every page with closed controls is already explored in depth',
238
+ }[(0, report_1.exploreOutcome)(r)]
239
+ : 'Nothing to compare yet β€” this tour is the reference the next one measures against'
240
+ : d && d.verdict === 'BLOCK' && !d.gating
241
+ ? 'Drift only behind interaction β€” not failing the tour'
242
+ : d
243
+ ? `Compared with the baseline: ${d.verdict}`
244
+ : 'No page could be compared this tour';
245
+ const needing = p.explored + p.notExplored.length;
246
+ const gauges = [
247
+ gauge('Pages under contract', p.underContract, p.configured),
248
+ gauge('Explored in depth', p.explored, needing, 'pages with closed menus, tabs or dialogs'),
249
+ ...(s?.notVisited ? [gauge('Visited by your suite', p.configured - s.notVisited.length, p.configured, `run of ${s.run.at.slice(0, 10)}`)] : []),
250
+ ].join('');
251
+ const timeline = history.length
252
+ ? `<section class="timeline" aria-label="Recent tours"><h3>Recent tours</h3><div class="dots">${history
253
+ .slice(-30)
254
+ .map((h) => `<span class="dot" style="background:${MOOD[h.mood].color}" title="${esc(new Date(h.at).toLocaleString('en-GB'))} Β· ${esc(MOOD[h.mood].title)} Β· ${esc(h.mode)} Β· ${esc(duration(h.durationMs))} Β· ${h.underContract} of ${h.configured} pages"></span>`)
255
+ .join('')}</div><div class="legend">${['clean', 'look', 'broken', 'baseline', 'no-answer']
256
+ .map((k) => `<span><i style="background:${MOOD[k].color}"></i>${esc(MOOD[k].title)}</span>`)
257
+ .join('')}</div></section>`
258
+ : '';
259
+ const setup = r.setupRequired ? `<p class="setup">Set it up: ${cmd(`npx -p @ia-qa/pal ${r.setupRequired.command}`)}</p>` : '';
260
+ return `<!doctype html>
261
+ <html lang="en">
262
+ <head>
263
+ <meta charset="utf-8">
264
+ <meta name="viewport" content="width=device-width, initial-scale=1">
265
+ <title>ia-qa-pal Β· ${esc(host || 'tour')} Β· ${esc(generatedAt.slice(0, 10))}</title>
266
+ <style>
267
+ :root{--bg:#f8fafc;--card:#fff;--ink:#18181b;--muted:#71717a;--line:#e4e4e7;--code:#f4f4f5;--mood:${m.color}}
268
+ @media (prefers-color-scheme:dark){:root{--bg:#09090b;--card:#18181b;--ink:#fafafa;--muted:#a1a1aa;--line:#27272a;--code:#27272a}}
269
+ *{box-sizing:border-box}
270
+ body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
271
+ main{max-width:920px;margin:0 auto;padding:24px 16px 64px}
272
+ .hero{background:var(--card);border:1px solid var(--line);border-top:6px solid var(--mood);border-radius:16px;padding:24px;display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center}
273
+ .mascot{font-size:56px;line-height:1;filter:drop-shadow(0 4px 10px rgba(0,0,0,.15));animation:bob 3.2s ease-in-out infinite}
274
+ @keyframes bob{50%{transform:translateY(-4px) rotate(-3deg)}}
275
+ @media (prefers-reduced-motion:reduce){.mascot{animation:none}}
276
+ .bubble{background:color-mix(in srgb,var(--mood) 12%,transparent);border-radius:14px;padding:10px 14px;font-weight:600;margin:0 0 10px;display:inline-block}
277
+ .verdict{margin:0;font-size:clamp(22px,4vw,30px);line-height:1.2}
278
+ .verdict .badge{margin-right:8px}
279
+ .sub{color:var(--muted);margin:8px 0 0;font-size:14px}
280
+ .sub a{color:inherit}
281
+ .chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
282
+ .chip{border-radius:999px;padding:3px 10px;font-size:13px;background:var(--code)}
283
+ .chip.green{background:#10b98122;color:#059669}.chip.red{background:#ef444422;color:#dc2626}.chip.blue{background:#3b82f622;color:#2563eb}.chip.grey{opacity:.7}
284
+ .gauges{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:16px 0}
285
+ .gauge{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px}
286
+ .gauge-label{display:flex;justify-content:space-between;gap:8px;font-size:14px}
287
+ .bar{height:10px;background:var(--code);border-radius:999px;margin-top:8px;overflow:hidden}
288
+ .bar span{display:block;height:100%;background:linear-gradient(90deg,#f97316,#fb923c);border-radius:999px}
289
+ .gauge-note{color:var(--muted);font-size:12px;margin-top:6px}
290
+ .card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:4px 20px;margin:12px 0}
291
+ .card summary{list-style:none;cursor:pointer}.card summary::-webkit-details-marker{display:none}
292
+ .card h2{font-size:17px;margin:14px 0;display:flex;align-items:center;gap:8px}
293
+ .card:not(details) h2{margin-top:14px}
294
+ .count{margin-left:auto;background:var(--code);border-radius:999px;padding:1px 10px;font-size:13px;font-weight:600}
295
+ #broken{border-left:5px solid #ef4444}#decide{border-left:5px solid #f59e0b}#repair{border-left:5px solid #10b981}#unseen{border-left:5px solid #8b5cf6}
296
+ ul{list-style:none;margin:0 0 14px;padding:0}
297
+ li{padding:9px 0;border-top:1px dashed var(--line);overflow-wrap:anywhere}
298
+ li.hint{color:var(--muted)}li.warn{background:#f59e0b14;border-radius:8px;padding:9px 10px}li.soft{opacity:.92}
299
+ .empty{color:var(--muted);margin:0 0 14px}
300
+ .tag{display:inline-block;border-radius:6px;padding:0 7px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.03em}
301
+ .tag.red{background:#ef444422;color:#dc2626}.tag.amber{background:#f59e0b22;color:#b45309}.tag.purple{background:#8b5cf622;color:#7c3aed}
302
+ .muted{color:var(--muted)}
303
+ code{background:var(--code);border-radius:6px;padding:1px 6px;font:13px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
304
+ .cmd{display:inline-flex;align-items:center;gap:4px;max-width:100%}
305
+ .cmd code{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
306
+ .copy{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:6px;font-size:12px;padding:1px 8px;cursor:pointer}
307
+ .copy.done{background:#10b981;color:#fff;border-color:#10b981}
308
+ .path .step{white-space:nowrap;background:#f9731618;color:#c2410c;border-radius:6px;padding:0 6px;font-size:13px}
309
+ .arrow{margin:0 4px;color:var(--muted)}
310
+ .diff del{background:#ef444422;text-decoration:line-through;border-radius:4px;padding:0 4px}
311
+ .diff ins{background:#10b98122;text-decoration:none;border-radius:4px;padding:0 4px}
312
+ .timeline{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 20px;margin:12px 0}
313
+ .timeline h3{margin:0 0 10px;font-size:15px}
314
+ .dots{display:flex;flex-wrap:wrap;gap:6px}.dot{width:16px;height:16px;border-radius:50%;display:inline-block}
315
+ .legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:10px;font-size:12px;color:var(--muted)}.legend i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:4px}
316
+ .setup{margin:12px 0}
317
+ footer{color:var(--muted);font-size:13px;margin-top:28px;text-align:center}
318
+ footer details{text-align:left;margin-top:12px}footer pre{background:var(--code);border-radius:10px;padding:12px;overflow:auto;max-height:420px;font-size:12px}
319
+ @media (max-width:560px){.hero{grid-template-columns:1fr;text-align:left}.mascot{font-size:44px}}
320
+ </style>
321
+ </head>
322
+ <body>
323
+ <main>
324
+ <header class="hero">
325
+ <div class="mascot" aria-hidden="true">πŸ§‘β€πŸ”¬</div>
326
+ <div>
327
+ <p class="bubble">${esc(palSays(r, mood, toLook))}</p>
328
+ <h1 class="verdict"><span class="badge">${m.badge}</span>${esc(m.title)}</h1>
329
+ <p class="sub">${headline}</p>
330
+ <p class="sub">${r.baseUrl ? `<a href="${esc(r.baseUrl)}" rel="noreferrer">${esc(host)}</a> Β· ` : ''}level ${r.level}${['', ' Β· with a login', ' Β· with your test suite'][r.level]} Β· ${esc(new Date(generatedAt).toLocaleString('en-GB'))} Β· took ${esc(duration(r.durationMs))} Β· exit ${r.exitCode}</p>
331
+ ${chips ? `<div class="chips">${chips}</div>` : ''}
332
+ </div>
333
+ </header>
334
+ ${setup}
335
+ ${r.refused ? '' : `<div class="gauges">${gauges}</div>`}
336
+ ${broken.length ? card('broken', 'πŸ”΄', 'Broken', broken.length, `<ul>${broken.join('')}</ul>`) : ''}
337
+ ${decide.length ? card('decide', 'β›”', 'To decide', decide.filter((x) => !x.includes('class="hint"')).length, `<ul>${decide.join('')}</ul>${known ? `<p class="empty">${plural(known, 'warning')} already reported β€” not listed again.</p>` : ''}`) : ''}
338
+ ${repair.length ? card('repair', 'πŸ”§', 'Ready to repair', s.repairs.total, `<ul>${repair.join('')}</ul>`) : ''}
339
+ ${r.refused ? '' : card('unseen', 'πŸ”', 'Not seen', unseen.length, unseen.length ? `<ul>${unseen.join('')}</ul>` : '<p class="empty">Everything this tour set out to measure was measured.</p>', { alwaysOpen: true })}
340
+ ${timeline}
341
+ <footer>
342
+ Made on this machine by ia-qa-pal${meta.version ? ` ${esc(meta.version)}` : ''} Β· deterministic, no LLM Β· nothing in this file was sent anywhere.
343
+ <details><summary>Raw report (JSON)</summary><pre>${esc(JSON.stringify(r, null, 2))}</pre></details>
344
+ </footer>
345
+ </main>
346
+ <script>
347
+ document.addEventListener('click', function (e) {
348
+ var b = e.target.closest && e.target.closest('.copy');
349
+ if (!b) return;
350
+ var text = b.getAttribute('data-copy');
351
+ var done = function () { b.textContent = 'copied'; b.classList.add('done'); setTimeout(function () { b.textContent = 'copy'; b.classList.remove('done'); }, 1600); };
352
+ if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(text).then(done, fallback); } else { fallback(); }
353
+ function fallback() { var t = document.createElement('textarea'); t.value = text; document.body.appendChild(t); t.select(); try { document.execCommand('copy'); done(); } catch (x) {} document.body.removeChild(t); }
354
+ });
355
+ </script>
356
+ </body>
357
+ </html>
358
+ `;
359
+ }
360
+ const reportFile = (dir) => path.join(dir, '.ia-qa', 'pal', 'report.html');
361
+ exports.reportFile = reportFile;
362
+ /** Writes the report next to the project's pal state (or where asked) and returns the absolute path. */
363
+ function writeHtmlReport(dir, r, opts = {}) {
364
+ const file = path.resolve(dir, opts.file ?? (0, exports.reportFile)(dir));
365
+ fs.mkdirSync(path.dirname(file), { recursive: true });
366
+ fs.writeFileSync(file, renderHtmlReport(r, (0, history_1.readHistory)(dir), { version: opts.version, generatedAt: opts.at }));
367
+ return file;
368
+ }
369
+ /** Best effort: a report that cannot be opened is still written, and its path was printed. */
370
+ function openFile(file) {
371
+ try {
372
+ const [cmd, args] = process.platform === 'win32' ? ['cmd', ['/c', 'start', '""', file]] : process.platform === 'darwin' ? ['open', [file]] : ['xdg-open', [file]];
373
+ const child = (0, child_process_1.spawn)(cmd, args, { detached: true, stdio: 'ignore', windowsHide: true });
374
+ child.on('error', () => undefined);
375
+ child.unref();
376
+ }
377
+ catch {
378
+ /* the path is on screen */
379
+ }
380
+ }
381
+ //# sourceMappingURL=htmlReport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"htmlReport.js","sourceRoot":"","sources":["../src/htmlReport.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,7 +4,15 @@ export { trackedTour, startBackground, readRun, activeRun, TourAlreadyRunning }
4
4
  export type { RunRecord, RunView, BackgroundStart } from './run';
5
5
  export type { SuiteInventory, RepairPlan, SuiteAudit, SuiteRun } from './suite';
6
6
  export { renderReport } from './report';
7
+ export { renderHtmlReport, writeHtmlReport, reportFile } from './htmlReport';
8
+ export { appendHistory, readHistory, moodOf } from './history';
9
+ export type { HistoryEntry, Mood } from './history';
7
10
  export { runSetup, LOGIN_COMMAND } from './setup';
8
11
  export type { SetupOptions, SetupOutcome, PalLogin } from './setup';
9
12
  export { selectBatch, needingDepth, estimate, splitFindings, exitCodeFor, DEFAULT_BATCH } from './plan';
10
13
  export type { Estimate, Pace, CheckSplit } from './plan';
14
+ export { rebaselinePlan, applyRebaseline, renderRebaseline, reasonText } from './rebaseline';
15
+ export type { RebaselinePlan, RebaselinePage, RebaselineReason } from './rebaseline';
16
+ export { suiteCommand } from './suite';
17
+ export { detectFrameworks, captureHints, CAPTURE_IMPORT } from './suite';
18
+ export type { Framework } from './suite';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_BATCH = exports.exitCodeFor = exports.splitFindings = exports.estimate = exports.needingDepth = exports.selectBatch = exports.LOGIN_COMMAND = exports.runSetup = exports.renderReport = exports.TourAlreadyRunning = exports.activeRun = exports.readRun = exports.startBackground = exports.trackedTour = exports.runTour = void 0;
3
+ exports.CAPTURE_IMPORT = exports.captureHints = exports.detectFrameworks = exports.suiteCommand = exports.reasonText = exports.renderRebaseline = exports.applyRebaseline = exports.rebaselinePlan = exports.DEFAULT_BATCH = exports.exitCodeFor = exports.splitFindings = exports.estimate = exports.needingDepth = exports.selectBatch = exports.LOGIN_COMMAND = exports.runSetup = exports.moodOf = exports.readHistory = exports.appendHistory = exports.reportFile = exports.writeHtmlReport = exports.renderHtmlReport = exports.renderReport = exports.TourAlreadyRunning = exports.activeRun = exports.readRun = exports.startBackground = exports.trackedTour = exports.runTour = void 0;
4
4
  var tour_1 = require("./tour");
5
5
  Object.defineProperty(exports, "runTour", { enumerable: true, get: function () { return tour_1.runTour; } });
6
6
  var run_1 = require("./run");
@@ -11,6 +11,14 @@ Object.defineProperty(exports, "activeRun", { enumerable: true, get: function ()
11
11
  Object.defineProperty(exports, "TourAlreadyRunning", { enumerable: true, get: function () { return run_1.TourAlreadyRunning; } });
12
12
  var report_1 = require("./report");
13
13
  Object.defineProperty(exports, "renderReport", { enumerable: true, get: function () { return report_1.renderReport; } });
14
+ var htmlReport_1 = require("./htmlReport");
15
+ Object.defineProperty(exports, "renderHtmlReport", { enumerable: true, get: function () { return htmlReport_1.renderHtmlReport; } });
16
+ Object.defineProperty(exports, "writeHtmlReport", { enumerable: true, get: function () { return htmlReport_1.writeHtmlReport; } });
17
+ Object.defineProperty(exports, "reportFile", { enumerable: true, get: function () { return htmlReport_1.reportFile; } });
18
+ var history_1 = require("./history");
19
+ Object.defineProperty(exports, "appendHistory", { enumerable: true, get: function () { return history_1.appendHistory; } });
20
+ Object.defineProperty(exports, "readHistory", { enumerable: true, get: function () { return history_1.readHistory; } });
21
+ Object.defineProperty(exports, "moodOf", { enumerable: true, get: function () { return history_1.moodOf; } });
14
22
  var setup_1 = require("./setup");
15
23
  Object.defineProperty(exports, "runSetup", { enumerable: true, get: function () { return setup_1.runSetup; } });
16
24
  Object.defineProperty(exports, "LOGIN_COMMAND", { enumerable: true, get: function () { return setup_1.LOGIN_COMMAND; } });
@@ -21,4 +29,15 @@ Object.defineProperty(exports, "estimate", { enumerable: true, get: function ()
21
29
  Object.defineProperty(exports, "splitFindings", { enumerable: true, get: function () { return plan_1.splitFindings; } });
22
30
  Object.defineProperty(exports, "exitCodeFor", { enumerable: true, get: function () { return plan_1.exitCodeFor; } });
23
31
  Object.defineProperty(exports, "DEFAULT_BATCH", { enumerable: true, get: function () { return plan_1.DEFAULT_BATCH; } });
32
+ var rebaseline_1 = require("./rebaseline");
33
+ Object.defineProperty(exports, "rebaselinePlan", { enumerable: true, get: function () { return rebaseline_1.rebaselinePlan; } });
34
+ Object.defineProperty(exports, "applyRebaseline", { enumerable: true, get: function () { return rebaseline_1.applyRebaseline; } });
35
+ Object.defineProperty(exports, "renderRebaseline", { enumerable: true, get: function () { return rebaseline_1.renderRebaseline; } });
36
+ Object.defineProperty(exports, "reasonText", { enumerable: true, get: function () { return rebaseline_1.reasonText; } });
37
+ var suite_1 = require("./suite");
38
+ Object.defineProperty(exports, "suiteCommand", { enumerable: true, get: function () { return suite_1.suiteCommand; } });
39
+ var suite_2 = require("./suite");
40
+ Object.defineProperty(exports, "detectFrameworks", { enumerable: true, get: function () { return suite_2.detectFrameworks; } });
41
+ Object.defineProperty(exports, "captureHints", { enumerable: true, get: function () { return suite_2.captureHints; } });
42
+ Object.defineProperty(exports, "CAPTURE_IMPORT", { enumerable: true, get: function () { return suite_2.CAPTURE_IMPORT; } });
24
43
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+BAAiC;AAAxB,+FAAA,OAAO,OAAA;AAEhB,6BAA6F;AAApF,kGAAA,WAAW,OAAA;AAAE,sGAAA,eAAe,OAAA;AAAE,8FAAA,OAAO,OAAA;AAAE,gGAAA,SAAS,OAAA;AAAE,yGAAA,kBAAkB,OAAA;AAG7E,mCAAwC;AAA/B,sGAAA,YAAY,OAAA;AACrB,iCAAkD;AAAzC,iGAAA,QAAQ,OAAA;AAAE,sGAAA,aAAa,OAAA;AAEhC,+BAAwG;AAA/F,mGAAA,WAAW,OAAA;AAAE,oGAAA,YAAY,OAAA;AAAE,gGAAA,QAAQ,OAAA;AAAE,qGAAA,aAAa,OAAA;AAAE,mGAAA,WAAW,OAAA;AAAE,qGAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+BAAiC;AAAxB,+FAAA,OAAO,OAAA;AAEhB,6BAA6F;AAApF,kGAAA,WAAW,OAAA;AAAE,sGAAA,eAAe,OAAA;AAAE,8FAAA,OAAO,OAAA;AAAE,gGAAA,SAAS,OAAA;AAAE,yGAAA,kBAAkB,OAAA;AAG7E,mCAAwC;AAA/B,sGAAA,YAAY,OAAA;AACrB,2CAA6E;AAApE,8GAAA,gBAAgB,OAAA;AAAE,6GAAA,eAAe,OAAA;AAAE,wGAAA,UAAU,OAAA;AACtD,qCAA+D;AAAtD,wGAAA,aAAa,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,iGAAA,MAAM,OAAA;AAE3C,iCAAkD;AAAzC,iGAAA,QAAQ,OAAA;AAAE,sGAAA,aAAa,OAAA;AAEhC,+BAAwG;AAA/F,mGAAA,WAAW,OAAA;AAAE,oGAAA,YAAY,OAAA;AAAE,gGAAA,QAAQ,OAAA;AAAE,qGAAA,aAAa,OAAA;AAAE,mGAAA,WAAW,OAAA;AAAE,qGAAA,aAAa,OAAA;AAEvF,2CAA6F;AAApF,4GAAA,cAAc,OAAA;AAAE,6GAAA,eAAe,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AAAE,wGAAA,UAAU,OAAA;AAEtE,iCAAuC;AAA9B,qGAAA,YAAY,OAAA;AACrB,iCAAyE;AAAhE,yGAAA,gBAAgB,OAAA;AAAE,qGAAA,YAAY,OAAA;AAAE,uGAAA,cAAc,OAAA"}
@@ -16,6 +16,7 @@ export declare const TOOLS: ({
16
16
  more?: undefined;
17
17
  suite?: undefined;
18
18
  strict?: undefined;
19
+ all_contracts?: undefined;
19
20
  batch?: undefined;
20
21
  };
21
22
  required?: undefined;
@@ -53,6 +54,7 @@ export declare const TOOLS: ({
53
54
  more?: undefined;
54
55
  suite?: undefined;
55
56
  strict?: undefined;
57
+ all_contracts?: undefined;
56
58
  batch?: undefined;
57
59
  };
58
60
  required: string[];
@@ -75,6 +77,10 @@ export declare const TOOLS: ({
75
77
  type: string;
76
78
  description: string;
77
79
  };
80
+ all_contracts: {
81
+ type: string;
82
+ description: string;
83
+ };
78
84
  batch: {
79
85
  type: string;
80
86
  description: string;
@@ -97,6 +97,7 @@ exports.TOOLS = [
97
97
  more: { type: 'boolean', description: 'Explore the next batch in depth instead of a regression tour. Refused after a BLOCK.' },
98
98
  suite: { type: 'boolean', description: 'Also run the test command from config.json once, with the capture hook, to learn which pages the suite never visits. It runs the human’s own suite on this machine β€” ask before setting it.' },
99
99
  strict: { type: 'boolean', description: 'Also fail on drift behind interaction β€” elements reached only by clicking, which may depend on the data the click lands on.' },
100
+ all_contracts: { type: 'boolean', description: 'Judge every contract in .ia-qa/mapping/, not only the pages the config declares. Default false: contracts left by other applications are reported as not measured, never folded into the verdict.' },
100
101
  batch: { type: 'integer', description: 'Pages per depth batch (default 10).' },
101
102
  project_dir: PROJECT_DIR,
102
103
  },
@@ -158,7 +159,7 @@ async function callTool(name, args, root = process.cwd()) {
158
159
  }
159
160
  if (name === 'pal_tour') {
160
161
  const batch = Number.isInteger(args.batch) && args.batch > 0 ? args.batch : undefined;
161
- const started = (0, run_1.startBackground)(dir, { more: !!args.more, suite: !!args.suite, strict: !!args.strict, batch }, CLI_ENTRY);
162
+ const started = (0, run_1.startBackground)(dir, { more: !!args.more, suite: !!args.suite, strict: !!args.strict, allContracts: !!args.all_contracts, batch }, CLI_ENTRY);
162
163
  return started.started
163
164
  ? { ...started, next: 'Call pal_status to follow it. A tour takes minutes.' }
164
165
  : { ...started, ...(!config ? { next: 'Not set up: ask the human where the app lives and how it logs in, then call pal_setup.' } : {}) };
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}