@ia-qa/qa-discovery 0.2.3 → 0.4.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/dist/coverage.js CHANGED
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.HEALING_DIR = exports.COVERAGE_SCHEMA = void 0;
36
+ exports.MIN_CHURN_RUNS = exports.HEALING_DIR = exports.COVERAGE_SCHEMA = void 0;
37
37
  exports.rankFactors = rankFactors;
38
38
  exports.matchesScope = matchesScope;
39
39
  exports.buildCoverageMap = buildCoverageMap;
@@ -91,7 +91,13 @@ function allFields(page) {
91
91
  * React app that submits in JS and states nothing — and an absent factor is the honest
92
92
  * outcome there, not a reason to go back to guessing from traffic.
93
93
  */
94
- function rankFactors(page) {
94
+ function rankFactors(page,
95
+ /**
96
+ * This page's entry in the drift history, when there is one worth ranking on. The caller
97
+ * decides whether there is — `pageChurn` observes, the policy of "enough runs to mean
98
+ * something" belongs here, with the ranking it feeds.
99
+ */
100
+ churn) {
95
101
  const fields = allFields(page);
96
102
  const passwordFields = fields.filter((f) => f.type === 'password').length;
97
103
  const postForms = page.forms.filter((f) => (f.method ?? '').toLowerCase() === 'post').length;
@@ -103,12 +109,34 @@ function rankFactors(page) {
103
109
  factors.push('submits a form');
104
110
  if (fields.some((f) => f.required))
105
111
  factors.push('has required input');
112
+ if (churn)
113
+ factors.push(`changed in ${churn.runs} of ${churn.measuredRuns} recent runs`);
114
+ /**
115
+ * How much a page holds, which describes it without ranking it.
116
+ *
117
+ * Measured on ia-qa.com: four uncovered pages read `1 input · 1 API call`,
118
+ * `1 input · 3 API calls`, `1 input · 3 API calls`, `4 inputs · 2 API calls` — indis-
119
+ * tinguishable, and between them they out-counted a page that had actually changed three
120
+ * times. Counting them is the `writeCalls` failure once removed: a factor nearly every
121
+ * page carries ranks nothing, and here it ranked *against* the one signal that meant
122
+ * something. Deleting them would be the opposite error — `4 inputs` is a real fact about
123
+ * a page, and dropping it would print `no input, no observed call` over four fields. So
124
+ * they are shown and not counted.
125
+ */
126
+ const context = [];
106
127
  if (fields.length > 0)
107
- factors.push(`${fields.length} input${fields.length === 1 ? '' : 's'}`);
128
+ context.push(`${fields.length} input${fields.length === 1 ? '' : 's'}`);
108
129
  if (page.apiCalls.length > 0)
109
- factors.push(`${page.apiCalls.length} API call${page.apiCalls.length === 1 ? '' : 's'}`);
110
- return { factors, passwordFields, postForms, writeCalls };
130
+ context.push(`${page.apiCalls.length} API call${page.apiCalls.length === 1 ? '' : 's'}`);
131
+ return { factors, context, passwordFields, postForms, writeCalls, churnRuns: churn?.runs };
111
132
  }
133
+ /**
134
+ * Below this, "changed in N of M runs" separates nothing: with two runs every page that ever
135
+ * drifted carries the factor, which is the inert-factor failure `writeCalls` was removed for.
136
+ * The history is not wrong there — it is just too short to rank on yet, and saying so beats
137
+ * ranking on it.
138
+ */
139
+ exports.MIN_CHURN_RUNS = 3;
112
140
  /** Pages the human declared out of scope. One dialect: the same globs as `volatile`. */
113
141
  function matchesScope(page, scope) {
114
142
  if (!scope?.length)
@@ -118,6 +146,14 @@ function matchesScope(page, scope) {
118
146
  function buildCoverageMap(input) {
119
147
  const visited = new Set(input.exercised.visited);
120
148
  const scanned = new Map(input.pages.map((p) => [p.page, p]));
149
+ // A short history is not a wrong one, it is one that cannot rank yet — so the factor is
150
+ // simply absent rather than computed on two runs and presented as a signal.
151
+ const usableChurn = input.churn && input.churn.measuredRuns >= exports.MIN_CHURN_RUNS ? input.churn : undefined;
152
+ const churnByPage = new Map((usableChurn?.pages ?? []).map((p) => [p.name, p]));
153
+ const churnOf = (name) => {
154
+ const hit = churnByPage.get(name);
155
+ return hit ? { runs: hit.runs, measuredRuns: usableChurn.measuredRuns } : undefined;
156
+ };
121
157
  const outOfScope = [];
122
158
  const uncovered = [];
123
159
  for (const page of input.pages) {
@@ -127,22 +163,33 @@ function buildCoverageMap(input) {
127
163
  outOfScope.push(page.page);
128
164
  continue;
129
165
  }
130
- const { factors, passwordFields, postForms, writeCalls } = rankFactors(page);
166
+ const { factors, context, passwordFields, postForms, writeCalls, churnRuns } = rankFactors(page, churnOf(page.page));
131
167
  uncovered.push({
132
168
  page: page.page,
133
169
  url: page.url,
134
170
  factors,
171
+ context,
135
172
  fields: allFields(page).length,
136
173
  passwordFields,
137
174
  postForms,
138
175
  writeCalls,
139
176
  apiCalls: page.apiCalls.length,
177
+ churnRuns,
140
178
  });
141
179
  }
142
180
  // Ranked by how many factors a page carries. `takes credentials` and `submits a form` are
143
181
  // the two that change what a break costs, so they break ties before the name does.
144
182
  // `writeCalls` is NOT one of them — see `rankFactors` for what it turned out to measure.
145
- const weight = (u) => u.factors.length * 10 + (u.passwordFields > 0 ? 5 : 0) + (u.postForms > 0 ? 3 : 0);
183
+ // Drift joins them: what a break costs, and how likely one is, are the two halves of the
184
+ // same question, and this is the half no scan can see.
185
+ // Context breaks a tie and never more: between two pages nothing observed distinguishes,
186
+ // the one that at least holds something goes first — but it can never reach past a page
187
+ // carrying a real factor, which is the inversion this split exists to stop.
188
+ const weight = (u) => u.factors.length * 10 +
189
+ (u.passwordFields > 0 ? 5 : 0) +
190
+ (u.churnRuns ? 4 : 0) +
191
+ (u.postForms > 0 ? 3 : 0) +
192
+ (u.context.length > 0 ? 1 : 0);
146
193
  uncovered.sort((a, b) => weight(b) - weight(a) || a.page.localeCompare(b.page));
147
194
  return {
148
195
  schema: exports.COVERAGE_SCHEMA,
@@ -154,6 +201,14 @@ function buildCoverageMap(input) {
154
201
  contractedNotFound: [...visited, ...input.exercised.notVisited].filter((p) => !scanned.has(p)).sort(),
155
202
  notMeasured: input.manifest.coverage,
156
203
  depth: input.depth,
204
+ churn: input.churn
205
+ ? {
206
+ measuredRuns: input.churn.measuredRuns,
207
+ excludedRuns: input.churn.excludedRuns,
208
+ ranked: Boolean(usableChurn),
209
+ reason: input.churn.reason,
210
+ }
211
+ : undefined,
157
212
  suite: {
158
213
  exitCode: input.exercised.suiteExitCode,
159
214
  recordedAt: input.exercised.recordedAt,
@@ -192,6 +247,9 @@ function refusal(reason) {
192
247
  ` npx ia-qa-heal init # declare your pages and your test command\n` +
193
248
  ` npx ia-qa-heal map # capture the app's contracts\n` +
194
249
  ` npx ia-qa-heal run # run your suite; records where it actually went\n\n` +
250
+ ` Or let @ia-qa/pal do the round: it sets the project up, maps it, and with --suite\n` +
251
+ ` runs your whole test command once and records the same thing:\n\n` +
252
+ ` npx -p @ia-qa/pal ia-qa-pal tour --suite\n\n` +
195
253
  ` Without it, reach, depth and the gap are NOT computed — not approximated,\n` +
196
254
  ` not estimated: they do not exist. Everything else is unaffected.`,
197
255
  };
@@ -202,7 +260,8 @@ function refusal(reason) {
202
260
  message: `Nothing to show yet — your suite has never been watched running.\n` +
203
261
  ` Contracts exist, which says someone configured these pages; it does not say a\n` +
204
262
  ` test ever visited them. This map is built only from what a run observed:\n\n` +
205
- ` npx ia-qa-heal run # runs your suite with capture on\n\n` +
263
+ ` npx ia-qa-heal run # runs your suite with capture on\n` +
264
+ ` npx -p @ia-qa/pal ia-qa-pal tour --suite # the same, during a pal tour\n\n` +
206
265
  ` This is "not measured", not "zero coverage" — no number is shown because none\n` +
207
266
  ` would be true.`,
208
267
  };
@@ -248,6 +307,10 @@ function computeCoverage(opts) {
248
307
  const exercised = (0, self_healing_1.loadExercised)(mappingPath);
249
308
  if (!exercised)
250
309
  return { ok: false, refusal: refusal('no-run') };
310
+ // `healingDirPath` is the project's `.ia-qa/`, and `readHistory` resolves it from the
311
+ // project root — so the parent. No history is an ordinary state (nothing has run `diff`
312
+ // yet), never a refusal: the gap is then ranked on structure alone.
313
+ const churn = (0, self_healing_1.pageChurn)((0, self_healing_1.readHistory)(undefined, path.dirname(opts.healingDirPath)));
251
314
  return {
252
315
  ok: true,
253
316
  map: buildCoverageMap({
@@ -257,6 +320,7 @@ function computeCoverage(opts) {
257
320
  depth: (0, self_healing_1.readTestDepth)(mappingPath, path.join(mappingPath, '_resolved')),
258
321
  scope: opts.scope,
259
322
  baseUrl: surface.manifest.baseUrl,
323
+ churn: churn.pages.length > 0 ? churn : undefined,
260
324
  }),
261
325
  };
262
326
  }
@@ -1 +1 @@
1
- {"version":3,"file":"coverage.js","sourceRoot":"","sources":["../src/coverage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coverage.js","sourceRoot":"","sources":["../src/coverage.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsJA,kCA4CC;AAWD,oCAGC;AAED,4CA+EC;AAOD,0BA+CC;AAQD,kCAmBC;AAUD,0CA+BC;AA3ZD,uCAAyB;AACzB,2CAA6B;AAC7B,sDAAwG;AAKxG;;;;;;;;;;;;;;GAcG;AAEU,QAAA,eAAe,GAAG,kBAAkB,CAAC;AAElD,sFAAsF;AACzE,QAAA,WAAW,GAAG,QAAQ,CAAC;AA6FpC,8EAA8E;AAC9E,SAAS,SAAS,CAAC,IAAiB;IAClC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAgB,WAAW,CACzB,IAAiB;AACjB;;;;GAIG;AACH,KAA8C;IAS9C,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;IAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAC7F,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC;IAExF,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,cAAc,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC1D,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAClD,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACvE,IAAI,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,YAAY,cAAc,CAAC,CAAC;IAEzF;;;;;;;;;;;OAWG;IACH,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/F,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,YAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAEvH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7F,CAAC;AAED;;;;;GAKG;AACU,QAAA,cAAc,GAAG,CAAC,CAAC;AAEhC,wFAAwF;AACxF,SAAgB,YAAY,CAAC,IAAY,EAAE,KAA2B;IACpE,IAAI,CAAC,KAAK,EAAE,MAAM;QAAE,OAAO,KAAK,CAAC;IACjC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0BAAW,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAoB;IACnD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7D,wFAAwF;IACxF,4EAA4E;IAC5E,MAAM,WAAW,GACf,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,IAAI,sBAAc,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,MAAM,OAAO,GAAG,CAAC,IAAY,EAAsD,EAAE;QACnF,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,WAAY,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,CAAC,CAAC;IAEF,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,SAAS,GAAoB,EAAE,CAAC;IAEtC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QACrC,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,SAAS;QACX,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrH,SAAS,CAAC,IAAI,CAAC;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,OAAO;YACP,OAAO;YACP,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM;YAC9B,cAAc;YACd,SAAS;YACT,UAAU;YACV,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;YAC9B,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED,0FAA0F;IAC1F,mFAAmF;IACnF,yFAAyF;IACzF,yFAAyF;IACzF,uDAAuD;IACvD,yFAAyF;IACzF,wFAAwF;IACxF,4EAA4E;IAC5E,MAAM,MAAM,GAAG,CAAC,CAAgB,EAAU,EAAE,CAC1C,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE;QACrB,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhF,OAAO;QACL,MAAM,EAAE,uBAAe;QACvB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE;QAC5B,SAAS;QACT,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE;QAC7B,kBAAkB,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;QACrG,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ;QACpC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;YAChB,CAAC,CAAC;gBACE,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY;gBACtC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY;gBACtC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC;gBAC5B,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;aAC3B;YACH,CAAC,CAAC,SAAS;QACb,KAAK,EAAE;YACL,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa;YACvC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU;YACtC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrF;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,OAAO,CAAC,MAAqB;IAC3C,MAAM,WAAW,GAAG;QAClB,2EAA2E;QAC3E,yEAAyE;KAC1E,CAAC;IACF,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,YAAY;YACf,OAAO;gBACL,MAAM;gBACN,SAAS,EAAE,EAAE;gBACb,OAAO,EACL,qEAAqE;oBACrE,oFAAoF;oBACpF,8CAA8C;aACjD,CAAC;QACJ,KAAK,YAAY;YACf,OAAO;gBACL,MAAM;gBACN,SAAS,EAAE,WAAW;gBACtB,OAAO,EACL,wFAAwF;oBACxF,qFAAqF;oBACrF,kEAAkE;oBAClE,qCAAqC;oBACrC,gFAAgF;oBAChF,mEAAmE;oBACnE,wFAAwF;oBACxF,wFAAwF;oBACxF,sEAAsE;oBACtE,mDAAmD;oBACnD,gFAAgF;oBAChF,qEAAqE;aACxE,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO;gBACL,MAAM;gBACN,SAAS,EAAE,CAAC,GAAG,WAAW,EAAE,yDAAyD,CAAC;gBACtF,OAAO,EACL,oEAAoE;oBACpE,oFAAoF;oBACpF,iFAAiF;oBACjF,sFAAsF;oBACtF,oFAAoF;oBACpF,oFAAoF;oBACpF,mBAAmB;aACtB,CAAC;IACN,CAAC;AACH,CAAC;AAOD,oFAAoF;AACpF,SAAgB,WAAW,CAAC,cAAsB;IAChD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IAC/D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,QAAyB,CAAC;IAC9B,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAoB,CAAC;IAClF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAgB,CAAC,CAAC;QACxG,CAAC;QAAC,MAAM,CAAC;YACP,6EAA6E;YAC7E,sCAAsC;QACxC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAID;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,IAI/B;IACC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;IAEnE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;IAEtF,MAAM,SAAS,GAAG,IAAA,4BAAa,EAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;IAEjE,sFAAsF;IACtF,wFAAwF;IACxF,oEAAoE;IACpE,MAAM,KAAK,GAAG,IAAA,wBAAS,EAAC,IAAA,0BAAW,EAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAEnF,OAAO;QACL,EAAE,EAAE,IAAI;QACR,GAAG,EAAE,gBAAgB,CAAC;YACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS;YACT,KAAK,EAAE,IAAA,4BAAa,EAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACtE,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO;YACjC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SAClD,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -28,7 +28,14 @@ function coverageHeadline(map) {
28
28
  (map.outOfScope.length > 0 ? ` · ${map.outOfScope.length} declared out of scope` : ''));
29
29
  }
30
30
  function factorsOf(u) {
31
- return u.factors.length > 0 ? u.factors.join(' · ') : 'no input, no observed call';
31
+ // Factors first they are why the page is where it is in the list. Context follows, in
32
+ // brackets, so a reader can tell at a glance what earned the rank from what merely
33
+ // describes the page. A page with context but no factor is not silent: it holds something,
34
+ // nothing observed says it matters yet.
35
+ const ctx = u.context?.length ? ` (${u.context.join(' · ')})` : '';
36
+ if (u.factors.length > 0)
37
+ return `${u.factors.join(' · ')}${ctx}`;
38
+ return u.context?.length ? `nothing observed says it matters${ctx}` : 'no input, no observed call';
32
39
  }
33
40
  /**
34
41
  * The caveats that keep the headline honest, as sentences.
@@ -59,6 +66,15 @@ function coverageCaveats(map) {
59
66
  out.push(`${map.contractedNotFound.length} page(s) your suite knows were not reached by this scan — ` +
60
67
  `a limit of the scan (--max, crawl reach, session), never evidence they are gone.`);
61
68
  }
69
+ // How often a page changes is a ranking factor here, so what the history could not say is
70
+ // as much a caveat as what the scan could not see. Silent on the good case: a history long
71
+ // enough to rank on, with nothing held out, says nothing at all.
72
+ if (map.churn && !map.churn.ranked) {
73
+ out.push(`Only ${map.churn.measuredRuns} comparable run(s) of drift history — too few to rank on, ` +
74
+ `so how often a page changes is not part of the order above. It sharpens as runs accumulate.`);
75
+ }
76
+ if (map.churn?.reason)
77
+ out.push(map.churn.reason);
62
78
  if (map.depth.measurable === false) {
63
79
  out.push(`Depth is NOT measured: no locator inventory. Run \`ia-qa-heal ingest\` to see how much of each ` +
64
80
  `visited page your tests actually name.`);
@@ -1 +1 @@
1
- {"version":3,"file":"coverageView.js","sourceRoot":"","sources":["../src/coverageView.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coverageView.js","sourceRoot":"","sources":["../src/coverageView.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import type { PageMapping } from '@ia-qa/self-healing';
2
+ import type { PageCapture } from './capture/page';
3
+ /**
4
+ * Turn a captured page into a test file that `@ia-qa/self-healing` can repair.
5
+ *
6
+ * The promise this exists to keep is not "we write your tests" — `playwright codegen` has
7
+ * done that for years — but **the tests we write are already maintained**: every locator
8
+ * names an element the contract holds, so when the app moves the file is *repaired* instead
9
+ * of deleted. That loop is proven end to end in
10
+ * `packages/self-healing/tests/corpus/generated.test.js`; this module produces the artifact
11
+ * that test validates by hand.
12
+ *
13
+ * Three rules are load-bearing, and each was paid for by a measurement rather than a
14
+ * preference.
15
+ *
16
+ * **1. Only calls that state a role.** `fix` rewrites `*ByRole`, `*ByLabel`,
17
+ * `*ByPlaceholder` and `By.linkText`, and nothing else: `getByText` names a *string*, not an
18
+ * element, so nothing can prove the test meant the renamed button rather than a heading that
19
+ * never moved. The corpus measured the consequence and it is worse than "that line will not
20
+ * be repaired" — **one** unrepairable line holds the whole verdict at BLOCK, which stops
21
+ * `fix` from repairing the repairable lines *beside* it. So this is not a preference order:
22
+ * a field that cannot be named by role, label or placeholder is **skipped**, never written
23
+ * in a weaker form.
24
+ *
25
+ * **2. Only fields carrying a durable identity.** `stableSelector: false` means the capture
26
+ * fell back to a positional selector, which addresses a different element the moment a field
27
+ * is inserted above it. Measured across both corpora: where a field has a `name`/`id`/
28
+ * test-id, discovery and healing independently synthesise the *same* selector (2 of 2 on a
29
+ * real login form); where it has none, they never agree (0 of 17). The join and the
30
+ * testability fail on exactly the same population, so refusing there costs nothing that
31
+ * could have worked.
32
+ *
33
+ * **3. The assertion is the human's.** An application declares what it *accepts* — required,
34
+ * type, min, max — and never what it *promises*. "A refused card shows the right message"
35
+ * exists in someone's head, and inventing it is how a generator produces a suite nobody
36
+ * trusts. What the app declares is asserted; the rest is a TODO with the question written
37
+ * out, because a silent gap reads as a finished test.
38
+ */
39
+ export declare const GENERATED_HEADER = "Generated by ia-qa-discover \u2014 every locator below is under contract";
40
+ export interface GeneratedLocator {
41
+ /** The field as a human reads it, for the report. */
42
+ field: string;
43
+ /** The Playwright expression, exactly as written into the file. */
44
+ locator: string;
45
+ /** True when the name came from the healing contract rather than the capture's own label. */
46
+ fromContract: boolean;
47
+ }
48
+ export interface SkippedField {
49
+ field: string;
50
+ why: string;
51
+ }
52
+ export interface GeneratedSpec {
53
+ page: string;
54
+ url: string;
55
+ code: string;
56
+ locators: GeneratedLocator[];
57
+ skipped: SkippedField[];
58
+ }
59
+ export declare function buildSpec(input: {
60
+ page: PageCapture;
61
+ contract: PageMapping | null;
62
+ }): GeneratedSpec;
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GENERATED_HEADER = void 0;
4
+ exports.buildSpec = buildSpec;
5
+ /**
6
+ * Turn a captured page into a test file that `@ia-qa/self-healing` can repair.
7
+ *
8
+ * The promise this exists to keep is not "we write your tests" — `playwright codegen` has
9
+ * done that for years — but **the tests we write are already maintained**: every locator
10
+ * names an element the contract holds, so when the app moves the file is *repaired* instead
11
+ * of deleted. That loop is proven end to end in
12
+ * `packages/self-healing/tests/corpus/generated.test.js`; this module produces the artifact
13
+ * that test validates by hand.
14
+ *
15
+ * Three rules are load-bearing, and each was paid for by a measurement rather than a
16
+ * preference.
17
+ *
18
+ * **1. Only calls that state a role.** `fix` rewrites `*ByRole`, `*ByLabel`,
19
+ * `*ByPlaceholder` and `By.linkText`, and nothing else: `getByText` names a *string*, not an
20
+ * element, so nothing can prove the test meant the renamed button rather than a heading that
21
+ * never moved. The corpus measured the consequence and it is worse than "that line will not
22
+ * be repaired" — **one** unrepairable line holds the whole verdict at BLOCK, which stops
23
+ * `fix` from repairing the repairable lines *beside* it. So this is not a preference order:
24
+ * a field that cannot be named by role, label or placeholder is **skipped**, never written
25
+ * in a weaker form.
26
+ *
27
+ * **2. Only fields carrying a durable identity.** `stableSelector: false` means the capture
28
+ * fell back to a positional selector, which addresses a different element the moment a field
29
+ * is inserted above it. Measured across both corpora: where a field has a `name`/`id`/
30
+ * test-id, discovery and healing independently synthesise the *same* selector (2 of 2 on a
31
+ * real login form); where it has none, they never agree (0 of 17). The join and the
32
+ * testability fail on exactly the same population, so refusing there costs nothing that
33
+ * could have worked.
34
+ *
35
+ * **3. The assertion is the human's.** An application declares what it *accepts* — required,
36
+ * type, min, max — and never what it *promises*. "A refused card shows the right message"
37
+ * exists in someone's head, and inventing it is how a generator produces a suite nobody
38
+ * trusts. What the app declares is asserted; the rest is a TODO with the question written
39
+ * out, because a silent gap reads as a finished test.
40
+ */
41
+ exports.GENERATED_HEADER = 'Generated by ia-qa-discover — every locator below is under contract';
42
+ /** A label good enough to name an element by, and where it came from. */
43
+ function namedBy(field) {
44
+ if (!field.label)
45
+ return null;
46
+ switch (field.labelSource) {
47
+ case 'aria-label':
48
+ case 'aria-labelledby':
49
+ case 'label-for':
50
+ case 'label-wrapping':
51
+ return { call: 'getByLabel', text: field.label };
52
+ case 'placeholder':
53
+ return { call: 'getByPlaceholder', text: field.label };
54
+ // `title`, and text merely sitting near the field, name a string and not an element —
55
+ // the same reason `getByText` is refused. `proximity` is explicitly a guess.
56
+ default:
57
+ return null;
58
+ }
59
+ }
60
+ const quote = (s) => `'${s.replace(/\\/g, '\\\\').replace(/'/g, "\\'")}'`;
61
+ /** Every field the page takes, whether or not the app wrapped it in a `<form>`. */
62
+ function allFields(page) {
63
+ return [...page.forms.flatMap((f) => f.fields), ...page.looseFields];
64
+ }
65
+ /**
66
+ * Pair a captured field with the contract element for it.
67
+ *
68
+ * By selector equality, which is not the fragile join it looks like: both packages derive a
69
+ * stable selector from the same identity attributes in the same priority, so on a field that
70
+ * has one they agree exactly. On a field that has none they never agree — and rule 2 has
71
+ * already skipped it.
72
+ */
73
+ function contractFor(field, contract) {
74
+ return contract?.elements?.find((e) => e.selector === field.selector);
75
+ }
76
+ function buildSpec(input) {
77
+ const { page, contract } = input;
78
+ const locators = [];
79
+ const skipped = [];
80
+ for (const field of allFields(page)) {
81
+ const name = field.label || field.name || field.selector;
82
+ if (field.ambiguousSelector) {
83
+ skipped.push({ field: name, why: 'its selector matches more than one element — a locator coin flip' });
84
+ continue;
85
+ }
86
+ if (!field.stableSelector) {
87
+ skipped.push({
88
+ field: name,
89
+ why: 'no test id, id or name, so the only selector is positional — it would break on the next field inserted above it, and healing cannot repair it',
90
+ });
91
+ continue;
92
+ }
93
+ if (field.via?.length) {
94
+ // Reaching it needs the click path recorded at capture, and a generated test that
95
+ // navigates on its own is a second guess stacked on the first.
96
+ skipped.push({ field: name, why: `only reachable after: ${field.via.join(' → ')}` });
97
+ continue;
98
+ }
99
+ const element = contractFor(field, contract);
100
+ if (element?.name) {
101
+ locators.push({
102
+ field: name,
103
+ locator: `page.getByRole(${quote(element.role)}, { name: ${quote(element.name)} })`,
104
+ fromContract: true,
105
+ });
106
+ continue;
107
+ }
108
+ const byLabel = namedBy(field);
109
+ if (byLabel) {
110
+ locators.push({ field: name, locator: `page.${byLabel.call}(${quote(byLabel.text)})`, fromContract: false });
111
+ continue;
112
+ }
113
+ skipped.push({
114
+ field: name,
115
+ why: contract
116
+ ? 'the contract holds no name for it and the app labels it nowhere — nothing can name it by role'
117
+ : 'no contract for this page yet, and the app labels the field nowhere',
118
+ });
119
+ }
120
+ return { page: page.page, url: page.url, code: render(page, locators, skipped), locators, skipped };
121
+ }
122
+ function render(page, locators, skipped) {
123
+ const required = new Set(allFields(page)
124
+ .filter((f) => f.required)
125
+ .map((f) => f.label || f.name || f.selector));
126
+ const out = [];
127
+ out.push(`// ${exports.GENERATED_HEADER}, so healing repairs this file when the app moves.`);
128
+ out.push(`// Page: ${page.page} · ${page.url}`);
129
+ out.push(`//`);
130
+ out.push(`// Review before committing. The navigation and the actions are generated; the`);
131
+ out.push(`// assertions are yours — an app declares what it accepts, never what it promises.`);
132
+ if (skipped.length > 0) {
133
+ out.push(`//`);
134
+ out.push(`// Not generated (${skipped.length}):`);
135
+ for (const s of skipped)
136
+ out.push(`// · ${s.field} — ${s.why}`);
137
+ }
138
+ out.push(`import { test, expect } from '@playwright/test';`);
139
+ out.push('');
140
+ out.push(`test(${quote(`${page.page} — the page loads and takes its input`)}, async ({ page }) => {`);
141
+ out.push(` await page.goto(${quote(page.url)});`);
142
+ if (locators.length === 0) {
143
+ out.push('');
144
+ out.push(` // Nothing on this page could be named by role, label or placeholder.`);
145
+ out.push(` // TODO: what should this page show when it loads?`);
146
+ out.push(` await expect(page).toHaveURL(${quote(page.url)});`);
147
+ }
148
+ else {
149
+ out.push('');
150
+ for (const l of locators) {
151
+ const star = required.has(l.field) ? ' (required)' : '';
152
+ out.push(` // ${l.field}${star}`);
153
+ out.push(` await expect(${l.locator}).toBeVisible();`);
154
+ }
155
+ out.push('');
156
+ out.push(` // TODO: fill these in and assert what the app should do.`);
157
+ out.push(` // What a valid submission produces, and what an invalid one says, is the one`);
158
+ out.push(` // thing no scan of this page could tell us.`);
159
+ }
160
+ out.push(`});`);
161
+ return out.join('\n') + '\n';
162
+ }
163
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
@@ -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` (which 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`). 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.",
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: {
@@ -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.2.3",
3
+ "version": "0.4.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",
@@ -49,7 +49,7 @@
49
49
  "node": ">=18.0.0"
50
50
  },
51
51
  "dependencies": {
52
- "@ia-qa/self-healing": "^1.8.0"
52
+ "@ia-qa/self-healing": "^1.17.0"
53
53
  },
54
54
  "peerDependencies": {
55
55
  "playwright": ">=1.40.0"