@ia-qa/qa-discovery 0.2.2 → 0.3.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 +1 -1
- package/TUTORIAL.md +457 -433
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.js +3 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/coverage.js +5 -1
- package/dist/coverage.js.map +1 -1
- package/dist/mcp/server.js +1 -1
- package/dist/mcp/server.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -381,7 +381,7 @@ Comparable only because both packages resolve page names through the *same* `pag
|
|
|
381
381
|
## MCP server
|
|
382
382
|
|
|
383
383
|
```bash
|
|
384
|
-
npx ia-qa-discover-mcp
|
|
384
|
+
npx -y -p @ia-qa/qa-discovery ia-qa-discover-mcp
|
|
385
385
|
```
|
|
386
386
|
|
|
387
387
|
A dependency-free JSON-RPC 2.0 stdio server exposing the **same** operations the CLI runs — a human and an agent get an identical contract, never a simplified view for one of them.
|
package/TUTORIAL.md
CHANGED
|
@@ -1,433 +1,457 @@
|
|
|
1
|
-
# QA Discovery — the complete beginner's guide
|
|
2
|
-
|
|
3
|
-
You have been handed a web application. There is no documentation, no test plan, and possibly
|
|
4
|
-
nobody left who built it. Your job is to test it.
|
|
5
|
-
|
|
6
|
-
This guide walks the whole thing, with no jargon. By the end you will have a written record of
|
|
7
|
-
what the app contains, what it takes as input, what it calls — and, if you already have a test
|
|
8
|
-
suite, a ranked list of the pages nobody tests.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
**
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
.
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
**
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
**
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
```
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
**
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
**
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
1
|
+
# QA Discovery — the complete beginner's guide
|
|
2
|
+
|
|
3
|
+
You have been handed a web application. There is no documentation, no test plan, and possibly
|
|
4
|
+
nobody left who built it. Your job is to test it.
|
|
5
|
+
|
|
6
|
+
This guide walks the whole thing, with no jargon. By the end you will have a written record of
|
|
7
|
+
what the app contains, what it takes as input, what it calls — and, if you already have a test
|
|
8
|
+
suite, a ranked list of the pages nobody tests.
|
|
9
|
+
|
|
10
|
+
> **On its own, or with the others.** Discovery is complete by itself: sections 1 to 7, 9 and 10
|
|
11
|
+
> need nothing else. It has two siblings, and each adds an answer it cannot give:
|
|
12
|
+
> - **`@ia-qa/pal`** watches the app over time — what changed, what broke — and, run once with
|
|
13
|
+
> `--suite`, records where your tests go. Discovery then turns that into **the pages no test visits**.
|
|
14
|
+
> - **`@ia-qa/self-healing`** keeps your tests alive when selectors move, and can record the same
|
|
15
|
+
> thing with `ia-qa-heal run`.
|
|
16
|
+
>
|
|
17
|
+
> The whole workflow, step by step: [all three together](https://www.ia-qa.com/devtools/pal/tutorial#13-all-three-together).
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Table of contents
|
|
22
|
+
|
|
23
|
+
1. [Is this for me?](#1-is-this-for-me)
|
|
24
|
+
2. [The 30-second mental model](#2-the-30-second-mental-model)
|
|
25
|
+
3. [Before you start](#3-before-you-start)
|
|
26
|
+
4. [Path A — I use an AI agent](#4-path-a--i-use-an-ai-agent)
|
|
27
|
+
5. [Path B — I use a terminal](#5-path-b--i-use-a-terminal)
|
|
28
|
+
6. [Reading what it wrote](#6-reading-what-it-wrote)
|
|
29
|
+
7. [The four ways a page count lies](#7-the-four-ways-a-page-count-lies)
|
|
30
|
+
8. [What my suite does not test](#8-what-my-suite-does-not-test)
|
|
31
|
+
9. [Doing this every week](#9-doing-this-every-week)
|
|
32
|
+
10. [Optional: what is each entry point *for*?](#10-optional-what-is-each-entry-point-for)
|
|
33
|
+
11. [Troubleshooting](#11-troubleshooting)
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 1. Is this for me?
|
|
38
|
+
|
|
39
|
+
**Yes, if** you are looking at an app and cannot yet answer *"what is in it?"* — a new job, an
|
|
40
|
+
inherited project, an acquisition, an audit, a QA engineer parachuted onto a team.
|
|
41
|
+
|
|
42
|
+
**Yes, if** you have some tests and no idea how much of the app they miss.
|
|
43
|
+
|
|
44
|
+
**No, if** your question is *"my tests broke, which selector moved?"*. That is a different tool
|
|
45
|
+
in the same family: [`@ia-qa/self-healing`](https://www.npmjs.com/package/@ia-qa/self-healing).
|
|
46
|
+
They work together — section 8 is exactly where they meet.
|
|
47
|
+
|
|
48
|
+
**One thing this tool refuses to do:** give you a pass or a fail. It is reconnaissance. It
|
|
49
|
+
reports what it observed and, just as carefully, what it could **not** see. A tool like this
|
|
50
|
+
that pretended to a verdict would be telling the most useful-looking lie available to it.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 2. The 30-second mental model
|
|
55
|
+
|
|
56
|
+
Three ideas and you have it.
|
|
57
|
+
|
|
58
|
+
**It writes down what it sees, and nothing else.** A page's title, its headings, every input,
|
|
59
|
+
every API call the browser really made. If the app does not state something, it stays absent —
|
|
60
|
+
never guessed, never filled in with something plausible.
|
|
61
|
+
|
|
62
|
+
**Every number says what it does not measure.** "9 of 9 pages captured" is meaningless if six
|
|
63
|
+
of them were the login screen. So a count never travels alone: it comes with the login wall it
|
|
64
|
+
hit, the links it could not follow, the cap it stopped at.
|
|
65
|
+
|
|
66
|
+
**It runs on your machine.** A headless browser it brings itself, so `localhost`, a staging box
|
|
67
|
+
or an app behind a VPN all work. Nothing is uploaded. The one exception is an optional, separate
|
|
68
|
+
command in section 10, which uses *your* API key and announces exactly what it sends before it
|
|
69
|
+
sends it.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 3. Before you start
|
|
74
|
+
|
|
75
|
+
You need **Node.js 18 or newer**. That is all — the browser comes with the package.
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
node --version
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 💡 "I don't want to download another browser"
|
|
82
|
+
|
|
83
|
+
If you already run Playwright, you already have one and it will be reused. If you do not, the
|
|
84
|
+
first run downloads Chromium once (~130 MB) into a shared cache and never again.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 4. Path A — I use an AI agent
|
|
89
|
+
|
|
90
|
+
If you drive Claude Code, Cursor, Windsurf, VS Code + Copilot or any MCP-capable agent, it can
|
|
91
|
+
run all of this for you.
|
|
92
|
+
|
|
93
|
+
### Step 4.1 — Add the server to your agent
|
|
94
|
+
|
|
95
|
+
Claude Code:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
claude mcp add qa-discovery -- npx -y -p @ia-qa/qa-discovery ia-qa-discover-mcp
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Or, for any client that reads a JSON config:
|
|
102
|
+
|
|
103
|
+
```json
|
|
104
|
+
{
|
|
105
|
+
"mcpServers": {
|
|
106
|
+
"qa-discovery": {
|
|
107
|
+
"command": "npx",
|
|
108
|
+
"args": ["-y", "-p", "@ia-qa/qa-discovery", "ia-qa-discover-mcp"]
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Step 4.2 — Restart the agent, then ask
|
|
115
|
+
|
|
116
|
+
> Scan https://your-app.example.com and tell me what is in it.
|
|
117
|
+
|
|
118
|
+
The agent calls `scan_app`, gets the capture back, and reads it. Four tools are available to
|
|
119
|
+
it: `scan_app`, `coverage_map`, `classify_app` and `discovery_history` — the same operations
|
|
120
|
+
the terminal has, with the same guarantees.
|
|
121
|
+
|
|
122
|
+
### Step 4.3 — The one thing your agent cannot do
|
|
123
|
+
|
|
124
|
+
**It cannot log you in.** `login` opens a visible browser and waits for a human twice: once at
|
|
125
|
+
the browser, once at the keyboard. That is not something an agent can perform, so it is
|
|
126
|
+
deliberately not exposed as a tool. When the scan reports a login wall, the agent will ask
|
|
127
|
+
*you* to run this, in your own terminal:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
npx -p @ia-qa/qa-discovery ia-qa-discover login
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Then ask it to scan again.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 5. Path B — I use a terminal
|
|
138
|
+
|
|
139
|
+
### Step 5.1 — Install
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
npm i -D @ia-qa/qa-discovery
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Or run it without installing anything:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
npx -p @ia-qa/qa-discovery ia-qa-discover scan https://your-app.example.com --save
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Step 5.2 — Your first scan
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
npx ia-qa-discover scan https://your-app.example.com --save --report --open
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
- `--save` remembers the URL, so later runs are just `ia-qa-discover scan`.
|
|
158
|
+
- `--report` writes a single self-contained HTML file you can send to anyone.
|
|
159
|
+
- `--open` opens it.
|
|
160
|
+
|
|
161
|
+
What you get on screen:
|
|
162
|
+
|
|
163
|
+
```console
|
|
164
|
+
Discovering pages from https://app.example.com…
|
|
165
|
+
🌐 Using bundled Chromium (shared Playwright cache)
|
|
166
|
+
visited / (2 links)
|
|
167
|
+
visited /terms (1 links)
|
|
168
|
+
Found 3 page(s). Capturing…
|
|
169
|
+
✔ home
|
|
170
|
+
✔ terms
|
|
171
|
+
✔ policy-cookies
|
|
172
|
+
|
|
173
|
+
✔ 3 of 3 page(s) captured
|
|
174
|
+
|
|
175
|
+
⚠ This app has a login (home), and no session was used.
|
|
176
|
+
What you have is the PUBLIC surface only — whatever is behind the login was never reached.
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**Read that warning before you read the number.** "3 of 3" looks complete and is not.
|
|
180
|
+
|
|
181
|
+
### Step 5.3 — Behind a login
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
npx ia-qa-discover login
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
A visible browser opens. You log in **yourself** — SSO, MFA, a consent screen, a magic link, a
|
|
188
|
+
device check: all of them work, because the tool models none of them. Nothing is typed for you
|
|
189
|
+
and no credential is read or stored.
|
|
190
|
+
|
|
191
|
+
What is saved is the browser session, in `.ia-qa-discovery/session.json`. **That file holds live
|
|
192
|
+
cookies: whoever has it is logged in as you.** The tool says so before opening the browser and
|
|
193
|
+
writes a `.gitignore` next to it so a commit cannot carry it away.
|
|
194
|
+
|
|
195
|
+
Already have a session? An authenticated Playwright suite usually writes one in `globalSetup`:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
npx ia-qa-discover scan --session playwright/.auth/user.json
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Then scan again — this time it goes behind the wall.
|
|
202
|
+
|
|
203
|
+
### Step 5.4 — Most of the inputs are behind a click
|
|
204
|
+
|
|
205
|
+
A loaded page is *one state* of a page. Menus, tabs, accordions and dialogs hide the rest.
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
npx ia-qa-discover scan --deep
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
This opens each control one level down and captures what it reveals. Every field found this way
|
|
212
|
+
records **how to reach it** — the click path — because telling you to test a field without
|
|
213
|
+
telling you how to get to it is useless.
|
|
214
|
+
|
|
215
|
+
Two things keep this safe: every non-GET request is blocked for the whole walk, so a click
|
|
216
|
+
cannot change anything on the server, and URLs that act (`/logout`, `/delete`…) are never
|
|
217
|
+
followed.
|
|
218
|
+
|
|
219
|
+
It costs roughly twice the scan time. Even without it, the tool always tells you how many
|
|
220
|
+
controls *could* reveal more — a page with 64 clickable controls and 2 visible fields must not
|
|
221
|
+
report those 2 as its input surface.
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## 6. Reading what it wrote
|
|
226
|
+
|
|
227
|
+
```
|
|
228
|
+
.ia-qa-discovery/
|
|
229
|
+
config.json # baseUrl, crawl settings, declared pages, out-of-scope pages
|
|
230
|
+
history.jsonl # one line per scan — the trend no single run can show
|
|
231
|
+
session.json # only if you ran `login`. Live cookies: gitignored automatically
|
|
232
|
+
capture/
|
|
233
|
+
surface.json # the machine-readable index
|
|
234
|
+
_overview.md # ← start here as a human
|
|
235
|
+
home.json # one file per page
|
|
236
|
+
…
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**Open `_overview.md` first.** It is the same scan, written to be read — by you, or by an LLM
|
|
240
|
+
using it as context. It leads with what was *not* measured, then the pages, their forms and
|
|
241
|
+
fields, and the API calls.
|
|
242
|
+
|
|
243
|
+
Commit `capture/`. It is small, deterministic text, and committing it is what makes the next
|
|
244
|
+
section possible.
|
|
245
|
+
|
|
246
|
+
Three things a real scan found on a real app, each traceable to an observation:
|
|
247
|
+
|
|
248
|
+
- All 9 pages shared one `<title>` — the tab, the history and a screen reader cannot tell them
|
|
249
|
+
apart.
|
|
250
|
+
- `GET /api/integration/status` answered **401** and `/api/billing/payment-history` **404**, on
|
|
251
|
+
a valid session.
|
|
252
|
+
- Every field on the login form had no `id`, no `name`, no `data-testid` — so any test written
|
|
253
|
+
against it can only use a positional selector, which breaks the day a field is inserted above.
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## 7. The four ways a page count lies
|
|
258
|
+
|
|
259
|
+
This is the most useful section in this guide. Each of these produced a confident, wrong number
|
|
260
|
+
before it was caught, and each is now stated out loud.
|
|
261
|
+
|
|
262
|
+
**1. The login wall.** Pages still showing a login form were captured — you measured the wall,
|
|
263
|
+
not the app. Worse: an app whose catch-all route renders the login page answers HTTP 200 at
|
|
264
|
+
*every* URL, so the count looks like a success. → run `login`.
|
|
265
|
+
|
|
266
|
+
**2. No `<a href>` to follow.** Discovery follows links. An app navigating with React Router's
|
|
267
|
+
`navigate()` or a button's `onClick` exposes none, so an 11-route app reports "1 of 1 found".
|
|
268
|
+
→ declare the routes you know in `config.json` → `pages`; they are scanned *in addition* to the
|
|
269
|
+
crawl.
|
|
270
|
+
|
|
271
|
+
**3. Inputs outside a `<form>`.** Modern apps wrap nothing. A scan that only walked `<form>`
|
|
272
|
+
tags reported "0 fields" on an app with 464 inputs. → handled automatically now; the fields are
|
|
273
|
+
listed with the heading they sit under.
|
|
274
|
+
|
|
275
|
+
**4. The page cap.** `--max` stops the run, and pages known-but-not-visited are counted and
|
|
276
|
+
named rather than silently dropped. → raise `--max`.
|
|
277
|
+
|
|
278
|
+
**The rule underneath all four:** every counter this tool prints must be able to say what it
|
|
279
|
+
does *not* measure. If you ever see a number here with no caveat beside it, that is a bug worth
|
|
280
|
+
reporting.
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## 8. What my suite does not test
|
|
285
|
+
|
|
286
|
+
This is where the two packages meet, and it is the one question neither can answer alone.
|
|
287
|
+
|
|
288
|
+
Discovery knows **what exists**. `@ia-qa/pal` and `@ia-qa/self-healing` know **where your suite
|
|
289
|
+
actually went** — because they can watch the suite run. Put them together and you get the sentence
|
|
290
|
+
that matters:
|
|
291
|
+
|
|
292
|
+
```console
|
|
293
|
+
$ npx ia-qa-discover coverage
|
|
294
|
+
|
|
295
|
+
📊 Your suite visits 4 of the 27 pages this scan found · 23 not tested
|
|
296
|
+
|
|
297
|
+
Not tested — ranked by what the scan observed on each page:
|
|
298
|
+
· login — takes credentials · submits a form · has required input · 2 inputs · 1 API call
|
|
299
|
+
· checkout — submits a form · 1 input · 1 API call
|
|
300
|
+
· profile — has required input · 4 inputs
|
|
301
|
+
|
|
302
|
+
This is not a verdict: a page nobody tests may be deliberately out of scope.
|
|
303
|
+
|
|
304
|
+
📐 Depth — your suite names 12 of 380 contracted elements. Named, not asserted.
|
|
305
|
+
|
|
306
|
+
What this does NOT measure:
|
|
307
|
+
⚠ 2 known page(s) were cut by the page cap (--max) and are not in these totals.
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
### What you need first
|
|
311
|
+
|
|
312
|
+
One watched run of your suite. Two ways, pick one.
|
|
313
|
+
|
|
314
|
+
**With `@ia-qa/pal`** — the shortest: it asks the setup questions, maps the app, then runs your
|
|
315
|
+
suite once:
|
|
316
|
+
|
|
317
|
+
```bash
|
|
318
|
+
npx -p @ia-qa/pal ia-qa-pal tour # setup + first round
|
|
319
|
+
npx -p @ia-qa/pal ia-qa-pal tour --suite # runs your whole test command with capture on
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
**With `@ia-qa/self-healing`** — the same record, verb by verb:
|
|
323
|
+
|
|
324
|
+
```bash
|
|
325
|
+
npm i -D @ia-qa/self-healing
|
|
326
|
+
npx ia-qa-heal init # declare your pages and your test command
|
|
327
|
+
npx ia-qa-heal map # capture the app's contracts
|
|
328
|
+
npx ia-qa-heal ingest # inventory what your tests name
|
|
329
|
+
npx ia-qa-heal run # runs your suite with capture on — this is the step that matters
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
Either way, your specs need the capture hook, and the run is the whole point: it records **which
|
|
333
|
+
pages your suite actually loaded**. Until that has happened, `coverage` shows you no number at all — it tells you there is
|
|
334
|
+
nothing to measure yet and names the command. A page having a contract only proves somebody
|
|
335
|
+
configured it; only a watched run proves a test went there.
|
|
336
|
+
|
|
337
|
+
### Three words to read carefully
|
|
338
|
+
|
|
339
|
+
**"Not tested" is not a verdict.** A page nobody tests may be deliberately out of scope. You
|
|
340
|
+
decide, and section 9 shows how to write that decision down.
|
|
341
|
+
|
|
342
|
+
**"Named" is not "asserted".** The depth line counts elements your tests *designate*. A test
|
|
343
|
+
that clicks a button names it without checking anything, and nothing on disk can tell the two
|
|
344
|
+
apart — so the tool never says "tested".
|
|
345
|
+
|
|
346
|
+
**There is no percentage, and there never will be.** A `34%` reads as code coverage, which is a
|
|
347
|
+
ratio over a denominator a compiler guarantees. Here the denominator is uncertain by
|
|
348
|
+
construction — the login wall, the links nobody could follow, the cap, the states nothing
|
|
349
|
+
opened. A percentage over that would be a comforting number with its caveats stripped off, which
|
|
350
|
+
is precisely how a team stops testing something. You get counts and page names.
|
|
351
|
+
|
|
352
|
+
`--report` writes the HTML version, `--json` the machine-readable map, and
|
|
353
|
+
`.ia-qa-discovery/coverage-map.json` is written every time — commit it and watch the gap move.
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## 9. Doing this every week
|
|
358
|
+
|
|
359
|
+
A discovery is a perishable snapshot. The value is in re-running it.
|
|
360
|
+
|
|
361
|
+
```bash
|
|
362
|
+
npx ia-qa-discover scan # same command; an unchanged app must diff clean
|
|
363
|
+
npx ia-qa-discover history
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
```console
|
|
367
|
+
2026-09-04T12:19:39Z 9/9 pages +9 -1 ~0 300df55 (main)
|
|
368
|
+
2026-09-04T12:35:06Z 9/9 pages +0 -0 ~0 (no change) 300df55 (main)
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
### Closing a line you have decided about
|
|
372
|
+
|
|
373
|
+
A gap list that never shrinks stops being read. By the third week, 23 pages reported identically
|
|
374
|
+
every time is noise, and the two that started mattering are lost in it.
|
|
375
|
+
|
|
376
|
+
So write the decision down, in `.ia-qa-discovery/config.json`:
|
|
377
|
+
|
|
378
|
+
```json
|
|
379
|
+
{
|
|
380
|
+
"baseUrl": "https://app.example.com",
|
|
381
|
+
"outOfScope": ["legal-*", "styleguide"]
|
|
382
|
+
}
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
Those pages stay **counted and named** as out of scope. They are never silently dropped, and
|
|
386
|
+
nothing is ever added to that list on its own — a page leaves the gap because a person wrote it
|
|
387
|
+
down in a file a reviewer can see.
|
|
388
|
+
|
|
389
|
+
---
|
|
390
|
+
|
|
391
|
+
## 10. Optional: what is each entry point *for*?
|
|
392
|
+
|
|
393
|
+
Everything above is deterministic and local. This section is neither, and it is a separate
|
|
394
|
+
binary so that it cannot be run by accident.
|
|
395
|
+
|
|
396
|
+
```bash
|
|
397
|
+
npx ia-qa-discover-ai classify
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
It reads the capture you already have — **no browser, your app is never touched** — and asks a
|
|
401
|
+
model, with **your** API key, what each form and field is for and how sensitive it is.
|
|
402
|
+
|
|
403
|
+
**It is the only thing in this package that sends anything anywhere, and it says so before it
|
|
404
|
+
does**, listing exactly what goes: the page URL, title, description, up to 25 headings, the
|
|
405
|
+
observed API calls, and each field's name, type, label and selector. Read that notice before
|
|
406
|
+
running it on a private or authenticated app.
|
|
407
|
+
|
|
408
|
+
Two guarantees make the output usable:
|
|
409
|
+
|
|
410
|
+
- **Every claim cites the capture, and the citation is checked** before the line is kept. A
|
|
411
|
+
claim pointing at something that does not exist is dropped, and the drop is reported.
|
|
412
|
+
- **The model can refuse.** "Not enough evidence" is a real answer, listed separately — an LLM
|
|
413
|
+
asked to classify will otherwise always classify, and that is how confident nonsense ships.
|
|
414
|
+
|
|
415
|
+
The check proves the *premise*, never the *conclusion*: a model can cite a real password field
|
|
416
|
+
and still call the page a checkout. So the sentence and the confidence are always shown, never
|
|
417
|
+
the label alone.
|
|
418
|
+
|
|
419
|
+
Without a key, nothing changes: every command above behaves exactly as it does today.
|
|
420
|
+
|
|
421
|
+
---
|
|
422
|
+
|
|
423
|
+
## 11. Troubleshooting
|
|
424
|
+
|
|
425
|
+
**"Found 1 page" on an app I know has twenty.** Section 7, case 2 — the app navigates without
|
|
426
|
+
links. Declare the routes in `config.json` → `pages`.
|
|
427
|
+
|
|
428
|
+
**Everything is the login page.** Section 7, case 1. Run `login`, then scan again.
|
|
429
|
+
|
|
430
|
+
**`login` says it refuses.** It refuses without a terminal and under CI, because it waits for a
|
|
431
|
+
person twice. That is also why an AI agent cannot run it. For a pipeline, point `--session` at a
|
|
432
|
+
`storageState` your own setup writes.
|
|
433
|
+
|
|
434
|
+
**"Nothing to show yet" from `coverage`.** Your suite has never been watched running. Run
|
|
435
|
+
`npx ia-qa-heal run` or `npx -p @ia-qa/pal ia-qa-pal tour --suite`. This is not zero coverage — it
|
|
436
|
+
is no measurement, which is why no number is shown. A pal run of a shorter `pal.testCommand` is
|
|
437
|
+
deliberately not recorded: only the whole suite counts.
|
|
438
|
+
|
|
439
|
+
**"No test suite is being tracked here."** `coverage` needs a project set up with `@ia-qa/pal` or
|
|
440
|
+
`@ia-qa/self-healing` (section 8). Without it, scanning and classification work exactly as before;
|
|
441
|
+
reach and depth are not computed at all.
|
|
442
|
+
|
|
443
|
+
**The scan is slow.** Lower `--max`, lower `--depth`, or drop `--deep`. A deep scan costs about
|
|
444
|
+
twice a normal one.
|
|
445
|
+
|
|
446
|
+
**A field has no name in the report.** The app labels it nowhere — no `<label>`, no
|
|
447
|
+
`aria-label`, no placeholder. That is a finding about the app, not about the scan: a screen
|
|
448
|
+
reader cannot announce it either.
|
|
449
|
+
|
|
450
|
+
---
|
|
451
|
+
|
|
452
|
+
## Where to go next
|
|
453
|
+
|
|
454
|
+
- [README](https://www.npmjs.com/package/@ia-qa/qa-discovery) — the short reference, every flag.
|
|
455
|
+
- [ROADMAP.md](https://cdn.jsdelivr.net/npm/@ia-qa/qa-discovery/ROADMAP.md) — where this is going, and what it will deliberately never become.
|
|
456
|
+
- [`@ia-qa/self-healing`](https://www.npmjs.com/package/@ia-qa/self-healing) — once tests exist,
|
|
457
|
+
the tool that keeps them alive when selectors move.
|
package/dist/cli/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
declare const HELP = "ia-qa-discover \u2014 deterministic surface reconnaissance for a web app\n\nF1 of QA Discovery: crawl an app's same-origin pages and capture what each one\nis structurally about \u2014 title, headings, forms, and observed API calls. No\nLLM, no verdict: this is recon, not a gate. Runs entirely on your machine;\nnothing is uploaded anywhere.\n\n[FOR AI AGENTS] You are driving this for a human. Run `scan` to capture the\napp's surface, then read .ia-qa-discovery/capture/surface.json (the index) and\nthe per-page files it points at \u2014 that is the evidence for anything you\nreport about this app. Never assert a page's purpose or risk from the URL\nalone; ground it in the captured meta/headings/forms/apiCalls. Never read a\npage count as coverage: if scan warns that pages still show a login form, you\nmeasured the wall, not the app. You CANNOT run `login` \u2014 it waits for a human\nat a browser; ask them to run it, then scan again.\n`coverage` answers \"what does their suite NOT test\" \u2014 but only from a suite that was\nwatched running (
|
|
2
|
+
declare const HELP = "ia-qa-discover \u2014 deterministic surface reconnaissance for a web app\n\nF1 of QA Discovery: crawl an app's same-origin pages and capture what each one\nis structurally about \u2014 title, headings, forms, and observed API calls. No\nLLM, no verdict: this is recon, not a gate. Runs entirely on your machine;\nnothing is uploaded anywhere.\n\n[FOR AI AGENTS] You are driving this for a human. Run `scan` to capture the\napp's surface, then read .ia-qa-discovery/capture/surface.json (the index) and\nthe per-page files it points at \u2014 that is the evidence for anything you\nreport about this app. Never assert a page's purpose or risk from the URL\nalone; ground it in the captured meta/headings/forms/apiCalls. Never read a\npage count as coverage: if scan warns that pages still show a login form, you\nmeasured the wall, not the app. You CANNOT run `login` \u2014 it waits for a human\nat a browser; ask them to run it, then scan again.\n`coverage` answers \"what does their suite NOT test\" \u2014 but only from a suite that was\nwatched running (one `ia-qa-heal run`, or one `ia-qa-pal tour --suite`). If it says there is no\nmeasurement, report that, never \"the suite covers nothing\": a contract means someone\nconfigured a page, only a watched run means a test went there.\n\nUsage:\n ia-qa-discover login Open a visible browser, log in by hand, keep the\n session (.ia-qa-discovery/session.json) for scan\n to reuse. The general answer to a login wall: it\n models nothing, so SSO, MFA, a consent screen or\n a magic link all work \u2014 you do them.\n Needs a terminal, refuses under CI. The file holds\n live cookies: gitignored, stays on this machine.\n --url <path> page to open (default: your baseUrl)\n --session <f> where to write it\n Already have a storageState (a Playwright globalSetup\n writes one)? Skip this verb: point scan at it with\n --session <file> or \"session\" in config.json.\n ia-qa-discover scan [url] Crawl same-origin pages from <url> (or the saved\n baseUrl) and capture each page's structure.\n Writes .ia-qa-discovery/capture/, diffs against\n the previous run, appends history.jsonl.\n --depth <n> crawl link-depth (default 2)\n --max <n> page cap (default 60)\n --deep also open menus, tabs and dialogs one level\n down and capture the fields they reveal. Every\n non-GET request is blocked for the duration,\n so a click cannot mutate anything server-side.\n --deep-budget <n> max controls clicked per page (default 60)\n --no-sitemap do not read sitemap.xml / robots.txt\n --no-reveal do not open menus/dropdowns for hidden links\n --strict-host treat www./apex as different hosts\n --session <file> reuse an existing storageState (login) file\n --no-network skip API/network-call capture this run\n --network-threshold <n> shared-call promotion threshold 0-1 (default 0.6)\n --save persist this baseUrl to config.json\n --json machine-readable summary on stdout\n --report [file.html] branded ia-qa.com HTML dossier of the\n app (default ia-qa-discover-report.html)\n --open open that report in the browser\n ia-qa-discover coverage What your test suite does NOT test. Compares the\n pages this scan found against the pages your suite\n was OBSERVED visiting, ranks the gap by what each\n page takes as input, and writes coverage-map.json.\n Reads local files only \u2014 no browser, no network.\n Needs one watched run of your suite \u2014\n \"ia-qa-heal run\" or \"ia-qa-pal tour --suite\":\n without a watched run there is no measurement, and\n it says so instead of showing a number.\n Declare pages you deliberately do not test in\n \"outOfScope\" in config.json \u2014 they stay counted\n and named, never silently dropped.\n --json machine-readable map on stdout\n --report [file.html] branded HTML dossier with the gap\n (default ia-qa-discover-coverage.html)\n --open open that report in the browser\n ia-qa-discover history Recorded scan runs \u2014 pages/forms/API-surface trend.\n --json --limit <n> (default 500)\n ia-qa-discover version Print the installed version (also --version, -v)\n ia-qa-discover help Show this help\n\nGlobal:\n --config <dir> Resolve .ia-qa-discovery/ under <dir> instead of the\n current directory. Also IAQA_DISCOVERY_CONFIG_DIR=<dir>.\n";
|
|
3
3
|
declare function verbHelp(command: string | undefined): string | null;
|
|
4
4
|
declare function main(): Promise<void>;
|
|
5
5
|
export { HELP, verbHelp, main };
|
package/dist/cli/index.js
CHANGED
|
@@ -28,7 +28,7 @@ page count as coverage: if scan warns that pages still show a login form, you
|
|
|
28
28
|
measured the wall, not the app. You CANNOT run \`login\` — it waits for a human
|
|
29
29
|
at a browser; ask them to run it, then scan again.
|
|
30
30
|
\`coverage\` answers "what does their suite NOT test" — but only from a suite that was
|
|
31
|
-
watched running (
|
|
31
|
+
watched running (one \`ia-qa-heal run\`, or one \`ia-qa-pal tour --suite\`). If it says there is no
|
|
32
32
|
measurement, report that, never "the suite covers nothing": a contract means someone
|
|
33
33
|
configured a page, only a watched run means a test went there.
|
|
34
34
|
|
|
@@ -72,7 +72,8 @@ Usage:
|
|
|
72
72
|
was OBSERVED visiting, ranks the gap by what each
|
|
73
73
|
page takes as input, and writes coverage-map.json.
|
|
74
74
|
Reads local files only — no browser, no network.
|
|
75
|
-
Needs
|
|
75
|
+
Needs one watched run of your suite —
|
|
76
|
+
"ia-qa-heal run" or "ia-qa-pal tour --suite":
|
|
76
77
|
without a watched run there is no measurement, and
|
|
77
78
|
it says so instead of showing a number.
|
|
78
79
|
Declare pages you deliberately do not test in
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/coverage.js
CHANGED
|
@@ -192,6 +192,9 @@ function refusal(reason) {
|
|
|
192
192
|
` npx ia-qa-heal init # declare your pages and your test command\n` +
|
|
193
193
|
` npx ia-qa-heal map # capture the app's contracts\n` +
|
|
194
194
|
` npx ia-qa-heal run # run your suite; records where it actually went\n\n` +
|
|
195
|
+
` Or let @ia-qa/pal do the round: it sets the project up, maps it, and with --suite\n` +
|
|
196
|
+
` runs your whole test command once and records the same thing:\n\n` +
|
|
197
|
+
` npx -p @ia-qa/pal ia-qa-pal tour --suite\n\n` +
|
|
195
198
|
` Without it, reach, depth and the gap are NOT computed — not approximated,\n` +
|
|
196
199
|
` not estimated: they do not exist. Everything else is unaffected.`,
|
|
197
200
|
};
|
|
@@ -202,7 +205,8 @@ function refusal(reason) {
|
|
|
202
205
|
message: `Nothing to show yet — your suite has never been watched running.\n` +
|
|
203
206
|
` Contracts exist, which says someone configured these pages; it does not say a\n` +
|
|
204
207
|
` test ever visited them. This map is built only from what a run observed:\n\n` +
|
|
205
|
-
` npx ia-qa-heal run
|
|
208
|
+
` npx ia-qa-heal run # runs your suite with capture on\n` +
|
|
209
|
+
` npx -p @ia-qa/pal ia-qa-pal tour --suite # the same, during a pal tour\n\n` +
|
|
206
210
|
` This is "not measured", not "zero coverage" — no number is shown because none\n` +
|
|
207
211
|
` would be true.`,
|
|
208
212
|
};
|
package/dist/coverage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coverage.js","sourceRoot":"","sources":["../src/coverage.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2HA,kCAkBC;AAGD,oCAGC;AAED,4CAkDC;AAOD,
|
|
1
|
+
{"version":3,"file":"coverage.js","sourceRoot":"","sources":["../src/coverage.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -110,7 +110,7 @@ const TOOLS = [
|
|
|
110
110
|
},
|
|
111
111
|
{
|
|
112
112
|
name: 'coverage_map',
|
|
113
|
-
description: "Read-only, local, no browser and no network. What the user's test suite does NOT test: compares the pages a scan_app capture found against the pages the suite was OBSERVED visiting, and ranks the gap by what each page takes as input (credentials, a declared `<form method=post>`, required inputs, API calls). `writeCalls` is in the output but is NOT a ranking factor and is not evidence the page writes: a scan never submits anything, so a non-GET it observed fired at page load and is usually a telemetry beacon. Also reports depth — how many of each visited page's contracted elements the tests actually name. PREREQUISITE, and it is not optional: this needs @ia-qa/self-healing installed in the project AND at least one `ia-qa-heal run` (
|
|
113
|
+
description: "Read-only, local, no browser and no network. What the user's test suite does NOT test: compares the pages a scan_app capture found against the pages the suite was OBSERVED visiting, and ranks the gap by what each page takes as input (credentials, a declared `<form method=post>`, required inputs, API calls). `writeCalls` is in the output but is NOT a ranking factor and is not evidence the page writes: a scan never submits anything, so a non-GET it observed fired at page load and is usually a telemetry beacon. Also reports depth — how many of each visited page's contracted elements the tests actually name. PREREQUISITE, and it is not optional: this needs @ia-qa/self-healing installed in the project AND at least one watched run of the suite — `ia-qa-heal run`, or `ia-qa-pal tour --suite` from @ia-qa/pal (either runs the suite with capture on and records where it went). Without it this returns `measured: false` with a typed `reason` — treat that as NO MEASUREMENT and say so; it is never zero coverage, and reporting it as \"the suite covers nothing\" is wrong. The three reasons are `no-surface` (nobody has scanned the app: call scan_app first), `no-healing` (no suite is tracked: the user must install @ia-qa/self-healing and run map + run), `no-run` (contracts exist but no run was ever watched: the user runs `ia-qa-heal run` or `ia-qa-pal tour --suite`). Never present a contract as proof a page is tested — a contract means somebody configured that page, only a watched run means a test went there. `named` is not `asserted`: a test that clicks a button names it without checking anything. Read `notMeasured` before reporting any total — a login wall, an app that navigates without <a href>, or the page cap all make the gap look smaller than it is. This emits NO verdict and is not a gate: an uncovered page may be deliberately out of scope, which is the user's call, declared in `outOfScope` in config.json.",
|
|
114
114
|
inputSchema: {
|
|
115
115
|
type: 'object',
|
|
116
116
|
properties: {
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ia-qa/qa-discovery",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Deterministic surface reconnaissance for an unknown web app — crawl, capture, diff. No LLM, no hosting: runs entirely on your machine, with a local MCP server for agents.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"qa",
|