@ia-qa/qa-discovery 0.1.1 → 0.2.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.
- package/README.md +76 -2
- package/TUTORIAL.md +433 -0
- package/dist/cli/args.js +1 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/coverage.d.ts +20 -0
- package/dist/cli/coverage.js +178 -0
- package/dist/cli/coverage.js.map +1 -0
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.js +23 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/scan.d.ts +3 -1
- package/dist/cli/scan.js +3 -2
- package/dist/cli/scan.js.map +1 -1
- package/dist/config.d.ts +13 -0
- package/dist/config.js.map +1 -1
- package/dist/coverage.d.ts +126 -0
- package/dist/coverage.js +243 -0
- package/dist/coverage.js.map +1 -0
- package/dist/coverageView.d.ts +28 -0
- package/dist/coverageView.js +154 -0
- package/dist/coverageView.js.map +1 -0
- package/dist/htmlReport.js +8 -1
- package/dist/htmlReport.js.map +1 -1
- package/dist/mcp/server.d.ts +28 -0
- package/dist/mcp/server.js +47 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/overview.d.ts +9 -0
- package/dist/overview.js +10 -1
- package/dist/overview.js.map +1 -1
- package/dist/overviewFile.js +23 -0
- package/dist/overviewFile.js.map +1 -1
- package/package.json +3 -2
package/dist/coverage.js
ADDED
|
@@ -0,0 +1,243 @@
|
|
|
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.HEALING_DIR = exports.COVERAGE_SCHEMA = void 0;
|
|
37
|
+
exports.rankFactors = rankFactors;
|
|
38
|
+
exports.matchesScope = matchesScope;
|
|
39
|
+
exports.buildCoverageMap = buildCoverageMap;
|
|
40
|
+
exports.refusal = refusal;
|
|
41
|
+
exports.loadSurface = loadSurface;
|
|
42
|
+
exports.computeCoverage = computeCoverage;
|
|
43
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
const self_healing_1 = require("@ia-qa/self-healing");
|
|
46
|
+
/**
|
|
47
|
+
* What the suite tests, what the app has, and the gap — the one thing neither package can
|
|
48
|
+
* state alone. See SPEC-coverage-map.md.
|
|
49
|
+
*
|
|
50
|
+
* The rule that shapes every line below: **a declaration must never be readable as an
|
|
51
|
+
* observation.** A contract in `.ia-qa/mapping/` exists because somebody configured a page.
|
|
52
|
+
* `usage.json` proves a suite mentions a string. Only capture-during-run proves a test went
|
|
53
|
+
* somewhere, and only a scan proves a page exists. So this module refuses rather than
|
|
54
|
+
* substitutes: with no exercised record there is no coverage map, and the refusal names the
|
|
55
|
+
* command that would produce one.
|
|
56
|
+
*
|
|
57
|
+
* Nothing here emits a verdict. An uncovered page may be deliberately out of scope, which
|
|
58
|
+
* is a QA decision with a human's name on it — hence the scope declaration below, and hence
|
|
59
|
+
* no exit code above 0 for a gap.
|
|
60
|
+
*/
|
|
61
|
+
exports.COVERAGE_SCHEMA = 'ia-qa-coverage@1';
|
|
62
|
+
/** Where the healing artifacts live: sibling of `.ia-qa-discovery/`, never nested. */
|
|
63
|
+
exports.HEALING_DIR = '.ia-qa';
|
|
64
|
+
/** Fields a page takes, whether or not the app wrapped them in a `<form>`. */
|
|
65
|
+
function allFields(page) {
|
|
66
|
+
return [...page.forms.flatMap((f) => f.fields), ...page.looseFields];
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Why this page would hurt, from facts the scan observed.
|
|
70
|
+
*
|
|
71
|
+
* Deliberately short. Two factors the specification listed are **not** here because nothing
|
|
72
|
+
* on disk observes them today: inbound-link count (no page-level link graph is persisted)
|
|
73
|
+
* and prior drift (history records a run's verdict, not which page moved). Ranking on a
|
|
74
|
+
* number nobody measured is the failure this package keeps meeting; an absent factor stays
|
|
75
|
+
* absent.
|
|
76
|
+
*/
|
|
77
|
+
function rankFactors(page) {
|
|
78
|
+
const fields = allFields(page);
|
|
79
|
+
const passwordFields = fields.filter((f) => f.type === 'password').length;
|
|
80
|
+
const writeCalls = page.apiCalls.filter((c) => c.method.toUpperCase() !== 'GET').length;
|
|
81
|
+
const factors = [];
|
|
82
|
+
if (passwordFields > 0)
|
|
83
|
+
factors.push('takes credentials');
|
|
84
|
+
if (writeCalls > 0)
|
|
85
|
+
factors.push('writes');
|
|
86
|
+
if (fields.some((f) => f.required))
|
|
87
|
+
factors.push('has required input');
|
|
88
|
+
if (fields.length > 0)
|
|
89
|
+
factors.push(`${fields.length} input${fields.length === 1 ? '' : 's'}`);
|
|
90
|
+
if (page.apiCalls.length > 0)
|
|
91
|
+
factors.push(`${page.apiCalls.length} API call${page.apiCalls.length === 1 ? '' : 's'}`);
|
|
92
|
+
return { factors, passwordFields, writeCalls };
|
|
93
|
+
}
|
|
94
|
+
/** Pages the human declared out of scope. One dialect: the same globs as `volatile`. */
|
|
95
|
+
function matchesScope(page, scope) {
|
|
96
|
+
if (!scope?.length)
|
|
97
|
+
return false;
|
|
98
|
+
return scope.some((glob) => (0, self_healing_1.globToRegex)(glob).test(page));
|
|
99
|
+
}
|
|
100
|
+
function buildCoverageMap(input) {
|
|
101
|
+
const visited = new Set(input.exercised.visited);
|
|
102
|
+
const scanned = new Map(input.pages.map((p) => [p.page, p]));
|
|
103
|
+
const outOfScope = [];
|
|
104
|
+
const uncovered = [];
|
|
105
|
+
for (const page of input.pages) {
|
|
106
|
+
if (visited.has(page.page))
|
|
107
|
+
continue;
|
|
108
|
+
if (matchesScope(page.page, input.scope)) {
|
|
109
|
+
outOfScope.push(page.page);
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
const { factors, passwordFields, writeCalls } = rankFactors(page);
|
|
113
|
+
uncovered.push({
|
|
114
|
+
page: page.page,
|
|
115
|
+
url: page.url,
|
|
116
|
+
factors,
|
|
117
|
+
fields: allFields(page).length,
|
|
118
|
+
passwordFields,
|
|
119
|
+
writeCalls,
|
|
120
|
+
apiCalls: page.apiCalls.length,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
// Ranked by how many factors a page carries. `takes credentials` and `writes` are the two
|
|
124
|
+
// that change what a break costs, so they break ties before the name does.
|
|
125
|
+
const weight = (u) => u.factors.length * 10 + (u.passwordFields > 0 ? 5 : 0) + (u.writeCalls > 0 ? 3 : 0);
|
|
126
|
+
uncovered.sort((a, b) => weight(b) - weight(a) || a.page.localeCompare(b.page));
|
|
127
|
+
return {
|
|
128
|
+
schema: exports.COVERAGE_SCHEMA,
|
|
129
|
+
computedAt: new Date().toISOString(),
|
|
130
|
+
baseUrl: input.baseUrl,
|
|
131
|
+
visited: [...visited].sort(),
|
|
132
|
+
uncovered,
|
|
133
|
+
outOfScope: outOfScope.sort(),
|
|
134
|
+
contractedNotFound: [...visited, ...input.exercised.notVisited].filter((p) => !scanned.has(p)).sort(),
|
|
135
|
+
notMeasured: input.manifest.coverage,
|
|
136
|
+
depth: input.depth,
|
|
137
|
+
suite: {
|
|
138
|
+
exitCode: input.exercised.suiteExitCode,
|
|
139
|
+
recordedAt: input.exercised.recordedAt,
|
|
140
|
+
...(input.exercised.commit ? { commit: input.exercised.commit } : {}),
|
|
141
|
+
...(input.exercised.testCommand ? { testCommand: input.exercised.testCommand } : {}),
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* The three refusals, each naming what remains true rather than calling the result
|
|
147
|
+
* "degraded". "Not computed" and "less accurate" are different claims, and only one of them
|
|
148
|
+
* is honest here.
|
|
149
|
+
*/
|
|
150
|
+
function refusal(reason) {
|
|
151
|
+
const surfaceOnly = [
|
|
152
|
+
'what pages exist and what each one takes as input (`ia-qa-discover scan`)',
|
|
153
|
+
'what each entry point is for, with a key (`ia-qa-discover-ai classify`)',
|
|
154
|
+
];
|
|
155
|
+
switch (reason) {
|
|
156
|
+
case 'no-surface':
|
|
157
|
+
return {
|
|
158
|
+
reason,
|
|
159
|
+
available: [],
|
|
160
|
+
message: `No capture to compare against — nothing has scanned this app yet.\n` +
|
|
161
|
+
` Run \`ia-qa-discover scan\` first: the coverage map needs to know what exists\n` +
|
|
162
|
+
` before it can say what your suite misses.`,
|
|
163
|
+
};
|
|
164
|
+
case 'no-healing':
|
|
165
|
+
return {
|
|
166
|
+
reason,
|
|
167
|
+
available: surfaceOnly,
|
|
168
|
+
message: `No test suite is being tracked here, so there is nothing to compare the app against.\n` +
|
|
169
|
+
` The coverage map answers "what does my suite NOT test", and that needs a suite\n` +
|
|
170
|
+
` watched while it runs. It comes from @ia-qa/self-healing:\n\n` +
|
|
171
|
+
` npm i -D @ia-qa/self-healing\n` +
|
|
172
|
+
` npx ia-qa-heal init # declare your pages and your test command\n` +
|
|
173
|
+
` npx ia-qa-heal map # capture the app's contracts\n` +
|
|
174
|
+
` npx ia-qa-heal run # run your suite; records where it actually went\n\n` +
|
|
175
|
+
` Without it, reach, depth and the gap are NOT computed — not approximated,\n` +
|
|
176
|
+
` not estimated: they do not exist. Everything else is unaffected.`,
|
|
177
|
+
};
|
|
178
|
+
case 'no-run':
|
|
179
|
+
return {
|
|
180
|
+
reason,
|
|
181
|
+
available: [...surfaceOnly, 'selector drift between two captures (`ia-qa-heal diff`)'],
|
|
182
|
+
message: `Nothing to show yet — your suite has never been watched running.\n` +
|
|
183
|
+
` Contracts exist, which says someone configured these pages; it does not say a\n` +
|
|
184
|
+
` test ever visited them. This map is built only from what a run observed:\n\n` +
|
|
185
|
+
` npx ia-qa-heal run # runs your suite with capture on\n\n` +
|
|
186
|
+
` This is "not measured", not "zero coverage" — no number is shown because none\n` +
|
|
187
|
+
` would be true.`,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/** Read the scan's own capture. `null` when this project has never been scanned. */
|
|
192
|
+
function loadSurface(captureDirPath) {
|
|
193
|
+
const manifestFile = path.join(captureDirPath, 'surface.json');
|
|
194
|
+
if (!fs.existsSync(manifestFile))
|
|
195
|
+
return null;
|
|
196
|
+
let manifest;
|
|
197
|
+
try {
|
|
198
|
+
manifest = JSON.parse(fs.readFileSync(manifestFile, 'utf8'));
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
const pages = [];
|
|
204
|
+
for (const entry of manifest.pages ?? []) {
|
|
205
|
+
try {
|
|
206
|
+
pages.push(JSON.parse(fs.readFileSync(path.join(captureDirPath, entry.file), 'utf8')));
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
// One unreadable page capture costs one page, never the whole map — the same
|
|
210
|
+
// restraint `map` applies per target.
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return { manifest, pages };
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Assemble the map from both packages' artifacts on this disk, or refuse.
|
|
217
|
+
*
|
|
218
|
+
* The order of the checks is the order of the user's own reasoning: is there an app capture,
|
|
219
|
+
* is a suite tracked at all, was it ever watched running.
|
|
220
|
+
*/
|
|
221
|
+
function computeCoverage(opts) {
|
|
222
|
+
const surface = loadSurface(opts.captureDirPath);
|
|
223
|
+
if (!surface)
|
|
224
|
+
return { ok: false, refusal: refusal('no-surface') };
|
|
225
|
+
const mappingPath = path.join(opts.healingDirPath, 'mapping');
|
|
226
|
+
if (!fs.existsSync(mappingPath))
|
|
227
|
+
return { ok: false, refusal: refusal('no-healing') };
|
|
228
|
+
const exercised = (0, self_healing_1.loadExercised)(mappingPath);
|
|
229
|
+
if (!exercised)
|
|
230
|
+
return { ok: false, refusal: refusal('no-run') };
|
|
231
|
+
return {
|
|
232
|
+
ok: true,
|
|
233
|
+
map: buildCoverageMap({
|
|
234
|
+
manifest: surface.manifest,
|
|
235
|
+
pages: surface.pages,
|
|
236
|
+
exercised,
|
|
237
|
+
depth: (0, self_healing_1.readTestDepth)(mappingPath, path.join(mappingPath, '_resolved')),
|
|
238
|
+
scope: opts.scope,
|
|
239
|
+
baseUrl: surface.manifest.baseUrl,
|
|
240
|
+
}),
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=coverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coverage.js","sourceRoot":"","sources":["../src/coverage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { CoverageMap } from './coverage';
|
|
2
|
+
/**
|
|
3
|
+
* The one renderer for a coverage map.
|
|
4
|
+
*
|
|
5
|
+
* The terminal, `_overview.md` and the HTML report all come through here, for the reason
|
|
6
|
+
* `classificationView.ts` exists and for the reason `checkHeadline` lives in `checks.ts`:
|
|
7
|
+
* two renderers eventually word the same facts differently, and the one nobody is reading
|
|
8
|
+
* that day is the one that goes wrong.
|
|
9
|
+
*
|
|
10
|
+
* **No percentage, anywhere.** A QA engineer reads `34%` as code coverage — a ratio over a
|
|
11
|
+
* denominator a compiler guarantees. Here the denominator is uncertain by construction: a
|
|
12
|
+
* login wall, an app that navigates without `<a href>`, the `--max` cap, states nothing
|
|
13
|
+
* opened. A percentage over that is the false-green machine this package exists to refuse,
|
|
14
|
+
* and it is the one number that would be quoted in a slide with none of its caveats.
|
|
15
|
+
* Counts and names only.
|
|
16
|
+
*/
|
|
17
|
+
export declare function coverageHeadline(map: CoverageMap): string;
|
|
18
|
+
/**
|
|
19
|
+
* The caveats that keep the headline honest, as sentences.
|
|
20
|
+
*
|
|
21
|
+
* Every one of these is a reason the numbers above are smaller than the truth, so they are
|
|
22
|
+
* never conditional on the result looking bad — the rule that every counter this package
|
|
23
|
+
* prints must be able to say what it does not measure.
|
|
24
|
+
*/
|
|
25
|
+
export declare function coverageCaveats(map: CoverageMap): string[];
|
|
26
|
+
export declare function renderCoverageTerminal(map: CoverageMap): string;
|
|
27
|
+
export declare function renderCoverageMarkdown(map: CoverageMap): string;
|
|
28
|
+
export declare function renderCoverageHtml(map: CoverageMap): string;
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.coverageHeadline = coverageHeadline;
|
|
4
|
+
exports.coverageCaveats = coverageCaveats;
|
|
5
|
+
exports.renderCoverageTerminal = renderCoverageTerminal;
|
|
6
|
+
exports.renderCoverageMarkdown = renderCoverageMarkdown;
|
|
7
|
+
exports.renderCoverageHtml = renderCoverageHtml;
|
|
8
|
+
/**
|
|
9
|
+
* The one renderer for a coverage map.
|
|
10
|
+
*
|
|
11
|
+
* The terminal, `_overview.md` and the HTML report all come through here, for the reason
|
|
12
|
+
* `classificationView.ts` exists and for the reason `checkHeadline` lives in `checks.ts`:
|
|
13
|
+
* two renderers eventually word the same facts differently, and the one nobody is reading
|
|
14
|
+
* that day is the one that goes wrong.
|
|
15
|
+
*
|
|
16
|
+
* **No percentage, anywhere.** A QA engineer reads `34%` as code coverage — a ratio over a
|
|
17
|
+
* denominator a compiler guarantees. Here the denominator is uncertain by construction: a
|
|
18
|
+
* login wall, an app that navigates without `<a href>`, the `--max` cap, states nothing
|
|
19
|
+
* opened. A percentage over that is the false-green machine this package exists to refuse,
|
|
20
|
+
* and it is the one number that would be quoted in a slide with none of its caveats.
|
|
21
|
+
* Counts and names only.
|
|
22
|
+
*/
|
|
23
|
+
function coverageHeadline(map) {
|
|
24
|
+
const visited = map.visited.length;
|
|
25
|
+
const found = visited + map.uncovered.length + map.outOfScope.length;
|
|
26
|
+
return (`Your suite visits ${visited} of the ${found} page${found === 1 ? '' : 's'} this scan found` +
|
|
27
|
+
(map.uncovered.length > 0 ? ` · ${map.uncovered.length} not tested` : '') +
|
|
28
|
+
(map.outOfScope.length > 0 ? ` · ${map.outOfScope.length} declared out of scope` : ''));
|
|
29
|
+
}
|
|
30
|
+
function factorsOf(u) {
|
|
31
|
+
return u.factors.length > 0 ? u.factors.join(' · ') : 'no input, no observed call';
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The caveats that keep the headline honest, as sentences.
|
|
35
|
+
*
|
|
36
|
+
* Every one of these is a reason the numbers above are smaller than the truth, so they are
|
|
37
|
+
* never conditional on the result looking bad — the rule that every counter this package
|
|
38
|
+
* prints must be able to say what it does not measure.
|
|
39
|
+
*/
|
|
40
|
+
function coverageCaveats(map) {
|
|
41
|
+
const out = [];
|
|
42
|
+
const nm = map.notMeasured;
|
|
43
|
+
if (nm.loginWall?.length > 0) {
|
|
44
|
+
out.push(`${nm.loginWall.length} page${nm.loginWall.length === 1 ? '' : 's'} still showed a login form — ` +
|
|
45
|
+
`what is behind the wall was never reached, so it is missing from both sides of this comparison.`);
|
|
46
|
+
}
|
|
47
|
+
if (nm.hrefBlind) {
|
|
48
|
+
out.push(`This app navigates without <a href>, so the crawl found almost nothing on its own. ` +
|
|
49
|
+
`Pages you did not declare do not appear here at all — absent, not covered.`);
|
|
50
|
+
}
|
|
51
|
+
if (nm.droppedByCap > 0) {
|
|
52
|
+
out.push(`${nm.droppedByCap} known page(s) were cut by the page cap (--max) and are not in these totals.`);
|
|
53
|
+
}
|
|
54
|
+
if (map.suite.exitCode !== 0 && map.suite.exitCode !== null) {
|
|
55
|
+
out.push(`The recorded run exited ${map.suite.exitCode}. A suite that died early visits fewer pages than it covers, ` +
|
|
56
|
+
`so "visited" may understate it.`);
|
|
57
|
+
}
|
|
58
|
+
if (map.contractedNotFound.length > 0) {
|
|
59
|
+
out.push(`${map.contractedNotFound.length} page(s) your suite knows were not reached by this scan — ` +
|
|
60
|
+
`a limit of the scan (--max, crawl reach, session), never evidence they are gone.`);
|
|
61
|
+
}
|
|
62
|
+
if (map.depth.measurable === false) {
|
|
63
|
+
out.push(`Depth is NOT measured: no locator inventory. Run \`ia-qa-heal ingest\` to see how much of each ` +
|
|
64
|
+
`visited page your tests actually name.`);
|
|
65
|
+
}
|
|
66
|
+
return out;
|
|
67
|
+
}
|
|
68
|
+
function renderCoverageTerminal(map) {
|
|
69
|
+
const lines = [`\n📊 ${coverageHeadline(map)}`];
|
|
70
|
+
if (map.uncovered.length > 0) {
|
|
71
|
+
lines.push(`\n Not tested — ranked by what the scan observed on each page:`);
|
|
72
|
+
for (const u of map.uncovered.slice(0, 15)) {
|
|
73
|
+
lines.push(` · ${u.page} — ${factorsOf(u)}`);
|
|
74
|
+
}
|
|
75
|
+
if (map.uncovered.length > 15)
|
|
76
|
+
lines.push(` … and ${map.uncovered.length - 15} more (see coverage-map.json)`);
|
|
77
|
+
lines.push(`\n This is not a verdict: a page nobody tests may be deliberately out of scope.\n` +
|
|
78
|
+
` Close a line by declaring it in "outOfScope" in .ia-qa-discovery/config.json.`);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
lines.push(`\n Every page this scan reached is visited by your suite.`);
|
|
82
|
+
}
|
|
83
|
+
if (map.outOfScope.length > 0) {
|
|
84
|
+
lines.push(`\n Declared out of scope (${map.outOfScope.length}): ${map.outOfScope.join(', ')}`);
|
|
85
|
+
}
|
|
86
|
+
if (map.depth.measurable && map.depth.totals.pages > 0) {
|
|
87
|
+
lines.push(`\n 📐 Depth — your suite names ${map.depth.totals.named} of ${map.depth.totals.elements} contracted ` +
|
|
88
|
+
`elements. Named, not asserted: a click names a button without checking anything.`);
|
|
89
|
+
}
|
|
90
|
+
const caveats = coverageCaveats(map);
|
|
91
|
+
if (caveats.length > 0) {
|
|
92
|
+
lines.push(`\n What this does NOT measure:`);
|
|
93
|
+
for (const c of caveats)
|
|
94
|
+
lines.push(` ⚠ ${c}`);
|
|
95
|
+
}
|
|
96
|
+
return lines.join('\n');
|
|
97
|
+
}
|
|
98
|
+
function renderCoverageMarkdown(map) {
|
|
99
|
+
const out = ['## Test coverage gap', '', coverageHeadline(map) + '.', ''];
|
|
100
|
+
if (map.uncovered.length > 0) {
|
|
101
|
+
out.push('| Page | Why it might matter |', '| --- | --- |');
|
|
102
|
+
for (const u of map.uncovered)
|
|
103
|
+
out.push(`| \`${u.page}\` | ${factorsOf(u)} |`);
|
|
104
|
+
out.push('', 'Not a verdict — a page nobody tests may be deliberately out of scope.', '');
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
out.push('Every page this scan reached is visited by the suite.', '');
|
|
108
|
+
}
|
|
109
|
+
if (map.outOfScope.length > 0) {
|
|
110
|
+
out.push(`Declared out of scope: ${map.outOfScope.map((p) => `\`${p}\``).join(', ')}`, '');
|
|
111
|
+
}
|
|
112
|
+
if (map.depth.measurable && map.depth.totals.pages > 0) {
|
|
113
|
+
out.push(`Depth: the suite names ${map.depth.totals.named} of ${map.depth.totals.elements} contracted elements. ` +
|
|
114
|
+
`Named, not asserted.`, '');
|
|
115
|
+
}
|
|
116
|
+
const caveats = coverageCaveats(map);
|
|
117
|
+
if (caveats.length > 0) {
|
|
118
|
+
out.push('**What this does not measure**', '');
|
|
119
|
+
for (const c of caveats)
|
|
120
|
+
out.push(`- ${c}`);
|
|
121
|
+
out.push('');
|
|
122
|
+
}
|
|
123
|
+
return out.join('\n');
|
|
124
|
+
}
|
|
125
|
+
const esc = (s) => s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
|
126
|
+
function renderCoverageHtml(map) {
|
|
127
|
+
const rows = map.uncovered
|
|
128
|
+
.map((u) => `<tr><td><code>${esc(u.page)}</code></td><td>${esc(factorsOf(u))}</td></tr>`)
|
|
129
|
+
.join('\n');
|
|
130
|
+
const caveats = coverageCaveats(map)
|
|
131
|
+
.map((c) => `<li>${esc(c)}</li>`)
|
|
132
|
+
.join('\n');
|
|
133
|
+
return [
|
|
134
|
+
'<section class="coverage">',
|
|
135
|
+
`<h2>Test coverage gap</h2>`,
|
|
136
|
+
`<p class="headline">${esc(coverageHeadline(map))}.</p>`,
|
|
137
|
+
map.uncovered.length > 0
|
|
138
|
+
? `<table><thead><tr><th>Page</th><th>Why it might matter</th></tr></thead><tbody>\n${rows}\n</tbody></table>` +
|
|
139
|
+
`<p class="note">Not a verdict — a page nobody tests may be deliberately out of scope.</p>`
|
|
140
|
+
: `<p class="note">Every page this scan reached is visited by the suite.</p>`,
|
|
141
|
+
map.outOfScope.length > 0
|
|
142
|
+
? `<p class="note">Declared out of scope: ${map.outOfScope.map((p) => `<code>${esc(p)}</code>`).join(', ')}</p>`
|
|
143
|
+
: '',
|
|
144
|
+
map.depth.measurable && map.depth.totals.pages > 0
|
|
145
|
+
? `<p class="note">Depth: the suite names ${map.depth.totals.named} of ${map.depth.totals.elements} ` +
|
|
146
|
+
`contracted elements. Named, not asserted.</p>`
|
|
147
|
+
: '',
|
|
148
|
+
caveats ? `<h3>What this does not measure</h3><ul>\n${caveats}\n</ul>` : '',
|
|
149
|
+
'</section>',
|
|
150
|
+
]
|
|
151
|
+
.filter(Boolean)
|
|
152
|
+
.join('\n');
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=coverageView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coverageView.js","sourceRoot":"","sources":["../src/coverageView.ts"],"names":[],"mappings":"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"}
|
package/dist/htmlReport.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.renderScanReport = renderScanReport;
|
|
4
4
|
const classificationView_1 = require("./classificationView");
|
|
5
|
+
const coverageView_1 = require("./coverageView");
|
|
5
6
|
/**
|
|
6
7
|
* A branded, self-contained HTML report for one discovery scan.
|
|
7
8
|
*
|
|
@@ -89,7 +90,7 @@ const REPORT_CSS = `
|
|
|
89
90
|
footer a{color:var(--orange2)}
|
|
90
91
|
`;
|
|
91
92
|
function renderScanReport(input) {
|
|
92
|
-
const { manifest, pages, shared, loginWall, session, hrefBlind, droppedByCap, sitemapDeclared, classification } = input;
|
|
93
|
+
const { manifest, pages, shared, loginWall, session, hrefBlind, droppedByCap, sitemapDeclared, classification, coverageMap } = input;
|
|
93
94
|
const formCount = pages.reduce((n, p) => n + p.forms.length, 0);
|
|
94
95
|
const fields = pages.flatMap((p) => [...p.forms.flatMap((f) => f.fields), ...p.looseFields]);
|
|
95
96
|
const unstable = fields.filter((f) => !f.stableSelector);
|
|
@@ -294,6 +295,12 @@ function renderScanReport(input) {
|
|
|
294
295
|
parts.push(`</tbody></table></div>`);
|
|
295
296
|
}
|
|
296
297
|
parts.push(`</section>`);
|
|
298
|
+
// ── The coverage gap ─────────────────────────────────────────────────────
|
|
299
|
+
// Rendered by the same module as the terminal and _overview.md: one wording, three
|
|
300
|
+
// renderings. Absent when no map has been computed — no empty section stands in for it.
|
|
301
|
+
if (coverageMap) {
|
|
302
|
+
parts.push((0, coverageView_1.renderCoverageHtml)(coverageMap));
|
|
303
|
+
}
|
|
297
304
|
// ── Model-classified entry points ────────────────────────────────────────
|
|
298
305
|
// Its own section, its own label, its own ink. Everything above is a literal
|
|
299
306
|
// observation; this is a reading of one, and a shared table would lend it a
|
package/dist/htmlReport.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"htmlReport.js","sourceRoot":"","sources":["../src/htmlReport.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"htmlReport.js","sourceRoot":"","sources":["../src/htmlReport.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.d.ts
CHANGED
|
@@ -89,6 +89,34 @@ declare const TOOLS: ({
|
|
|
89
89
|
limit?: undefined;
|
|
90
90
|
};
|
|
91
91
|
};
|
|
92
|
+
} | {
|
|
93
|
+
name: string;
|
|
94
|
+
description: string;
|
|
95
|
+
inputSchema: {
|
|
96
|
+
type: string;
|
|
97
|
+
properties: {
|
|
98
|
+
out_dir: {
|
|
99
|
+
type: string;
|
|
100
|
+
description: string;
|
|
101
|
+
};
|
|
102
|
+
write: {
|
|
103
|
+
type: string;
|
|
104
|
+
description: string;
|
|
105
|
+
};
|
|
106
|
+
url?: undefined;
|
|
107
|
+
max_depth?: undefined;
|
|
108
|
+
max_pages?: undefined;
|
|
109
|
+
reveal?: undefined;
|
|
110
|
+
session?: undefined;
|
|
111
|
+
network?: undefined;
|
|
112
|
+
network_threshold?: undefined;
|
|
113
|
+
page?: undefined;
|
|
114
|
+
provider?: undefined;
|
|
115
|
+
model?: undefined;
|
|
116
|
+
api_key_env?: undefined;
|
|
117
|
+
limit?: undefined;
|
|
118
|
+
};
|
|
119
|
+
};
|
|
92
120
|
} | {
|
|
93
121
|
name: string;
|
|
94
122
|
description: string;
|