@ia-qa/self-healing 0.3.0 → 0.3.1
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/browser/contract.d.ts +1 -1
- package/dist/browser/contract.js +6 -1
- package/dist/browser/contract.js.map +1 -1
- package/dist/cli/map.js +68 -3
- package/dist/cli/map.js.map +1 -1
- package/dist/config.d.ts +12 -0
- package/dist/config.js.map +1 -1
- package/dist/markdown.d.ts +4 -1
- package/dist/markdown.js +2 -2
- package/dist/markdown.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export function renderPageContract(mapping: any): string;
|
|
1
|
+
export function renderPageContract(mapping: any, layoutInfo: any): string;
|
|
2
2
|
/**
|
|
3
3
|
* Render a layout mapping as Markdown. Same table format as a page contract,
|
|
4
4
|
* but the header identifies it as a shared layout component.
|
package/dist/browser/contract.js
CHANGED
|
@@ -56,7 +56,7 @@ function groupByRole(elements) {
|
|
|
56
56
|
ordered.set(role, groups.get(role));
|
|
57
57
|
return ordered;
|
|
58
58
|
}
|
|
59
|
-
function renderPageContract(mapping) {
|
|
59
|
+
function renderPageContract(mapping, layoutInfo) {
|
|
60
60
|
const page = mapping.page || 'page';
|
|
61
61
|
const url = mapping.url || '';
|
|
62
62
|
const capturedAt = mapping.capturedAt || '';
|
|
@@ -75,6 +75,11 @@ function renderPageContract(mapping) {
|
|
|
75
75
|
lines.push('> then replace the stale selector in the test with the current `selector`. If an element from');
|
|
76
76
|
lines.push('> the test is absent here, it was removed or renamed — flag it instead of guessing.');
|
|
77
77
|
lines.push('');
|
|
78
|
+
if (layoutInfo && layoutInfo.count > 0) {
|
|
79
|
+
lines.push('> ⚠️ This contract excludes ' + layoutInfo.count + ' shell elements (navbar, footer, search, cookies).');
|
|
80
|
+
lines.push('> See `_layouts/' + (layoutInfo.name || 'shell') + '.md` for the full shared layout.');
|
|
81
|
+
lines.push('');
|
|
82
|
+
}
|
|
78
83
|
if (elements.length === 0) {
|
|
79
84
|
lines.push('_No visible interactive elements were captured on this page._');
|
|
80
85
|
lines.push('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/browser/contract.js"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;AAsCH,
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/browser/contract.js"],"names":[],"mappings":"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"}
|
package/dist/cli/map.js
CHANGED
|
@@ -92,8 +92,15 @@ async function runMap(pageNameArg) {
|
|
|
92
92
|
await browser.close();
|
|
93
93
|
}
|
|
94
94
|
// Post-mapping: detect & extract layout components (only when mapping all pages)
|
|
95
|
-
if (!pageNameArg
|
|
96
|
-
|
|
95
|
+
if (!pageNameArg) {
|
|
96
|
+
// Step 1: auto-layout — detect shared elements across ALL pages
|
|
97
|
+
if (config.autoLayout) {
|
|
98
|
+
await extractAutoLayout(config);
|
|
99
|
+
}
|
|
100
|
+
// Step 2: explicit layouts — per-layout-group detection
|
|
101
|
+
if (config.layouts) {
|
|
102
|
+
await extractAndSaveLayouts(config);
|
|
103
|
+
}
|
|
97
104
|
}
|
|
98
105
|
}
|
|
99
106
|
/**
|
|
@@ -133,13 +140,71 @@ async function extractAndSaveLayouts(config) {
|
|
|
133
140
|
console.log(` ✔ layout → ${path.relative(process.cwd(), layoutFile)} + ${path.relative(process.cwd(), layoutMd)}`);
|
|
134
141
|
// Strip layout elements from each page and re-save
|
|
135
142
|
const stripped = (0, layout_1.stripLayoutFromPages)(pages, layoutMapping);
|
|
143
|
+
const layoutInfo = { count: layoutMapping.elements.length, name: layoutName };
|
|
136
144
|
for (const slim of stripped) {
|
|
137
145
|
(0, aom_1.saveMapping)(slim);
|
|
138
|
-
(0, markdown_1.saveMarkdown)(slim);
|
|
146
|
+
(0, markdown_1.saveMarkdown)(slim, (0, config_1.mappingDir)(), layoutInfo);
|
|
139
147
|
}
|
|
140
148
|
console.log(` ✔ stripped ${layoutMapping.elements.length} layout elements from ${stripped.length} page mappings`);
|
|
141
149
|
}
|
|
142
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Auto-detect shared layout elements across ALL mapped pages (no manual layout
|
|
153
|
+
* config required). Controlled by `config.autoLayout` and `config.layoutThreshold`.
|
|
154
|
+
*
|
|
155
|
+
* Algorithm:
|
|
156
|
+
* 1. Load every freshly-mapped page from `.ia-qa/mapping/`
|
|
157
|
+
* 2. Count how many pages each `(role, name, selector)` tuple appears on
|
|
158
|
+
* 3. Any tuple on ≥ `threshold` fraction of pages is promoted to layout
|
|
159
|
+
* 4. Save `_layouts/shell.json` + `_layouts/shell.md`
|
|
160
|
+
* 5. Strip layout elements from each page `.json` + `.md`, and add a banner
|
|
161
|
+
* to each `.md` pointing at `_layouts/shell.md`
|
|
162
|
+
*
|
|
163
|
+
* Single-page `map <page>` never triggers this — only `map` (all pages).
|
|
164
|
+
*/
|
|
165
|
+
async function extractAutoLayout(config) {
|
|
166
|
+
const threshold = config.layoutThreshold ?? 0.85;
|
|
167
|
+
// Load every page mapping we just wrote
|
|
168
|
+
const pages = [];
|
|
169
|
+
for (const target of config.pages) {
|
|
170
|
+
try {
|
|
171
|
+
pages.push((0, aom_1.loadMapping)(target.name));
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
// page failed to map — skip it for layout detection
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
if (pages.length < 2) {
|
|
178
|
+
console.log('\n📐 Auto-layout: need ≥2 pages to detect shared elements — skipping.');
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const layoutMapping = (0, layout_1.extractLayout)('shell', pages, threshold, 'Auto-detected shared elements (navbar, footer, search, cookies…)');
|
|
182
|
+
const minPages = Math.ceil(threshold * pages.length);
|
|
183
|
+
console.log(`\n📐 Auto-layout: ${layoutMapping.elements.length} shared elements ` +
|
|
184
|
+
`(≥${minPages}/${pages.length} pages, threshold ${threshold}) → _layouts/shell.json`);
|
|
185
|
+
if (layoutMapping.elements.length === 0)
|
|
186
|
+
return;
|
|
187
|
+
// Save the layout
|
|
188
|
+
const layoutFile = (0, layout_1.saveLayout)(layoutMapping);
|
|
189
|
+
const layoutMd = (0, markdown_2.saveLayoutMarkdown)(layoutMapping);
|
|
190
|
+
console.log(` ✔ layout → ${path.relative(process.cwd(), layoutFile)} + ${path.relative(process.cwd(), layoutMd)}`);
|
|
191
|
+
// Strip layout elements from each page and re-save with banner
|
|
192
|
+
const stripped = (0, layout_1.stripLayoutFromPages)(pages, layoutMapping);
|
|
193
|
+
const layoutInfo = { count: layoutMapping.elements.length, name: 'shell' };
|
|
194
|
+
const dir = (0, config_1.mappingDir)();
|
|
195
|
+
for (const slim of stripped) {
|
|
196
|
+
(0, aom_1.saveMapping)(slim, dir);
|
|
197
|
+
(0, markdown_1.saveMarkdown)(slim, dir, layoutInfo);
|
|
198
|
+
}
|
|
199
|
+
// Per-page summary
|
|
200
|
+
const strippedMap = new Map(stripped.map((s) => [s.page, s]));
|
|
201
|
+
for (const original of pages) {
|
|
202
|
+
const slim = strippedMap.get(original.page);
|
|
203
|
+
const layoutCount = original.elements.length - (slim?.elements.length ?? 0);
|
|
204
|
+
console.log(` ✔ ${original.page.padEnd(20)} ${slim?.elements.length ?? '?'} éléments ` +
|
|
205
|
+
`(${layoutCount} dans le layout)`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
143
208
|
async function login(page, config) {
|
|
144
209
|
const auth = config.auth;
|
|
145
210
|
const usernameRef = config.secrets[auth.usernameSecret];
|
package/dist/cli/map.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/cli/map.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,
|
|
1
|
+
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/cli/map.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,wBAyDC;AA7ED,2CAA6B;AAE7B,0CAA4C;AAC5C,sCAA8E;AAC9E,gCAA2F;AAC3F,0CAA2C;AAC3C,sCAA4E;AAC5E,0CAAiD;AAEjD;;;;;;;;;;GAUG;AACI,KAAK,UAAU,MAAM,CAAC,WAAoB;IAC/C,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;IAE5B,MAAM,OAAO,GAAG,WAAW;QACzB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;QACpD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IACjB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC;QAChF,MAAM,IAAI,KAAK,CAAC,iBAAiB,WAAW,wBAAwB,KAAK,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,IAAA,wBAAa,GAAE,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAErC,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC9B,MAAM,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC/B,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC;YACtD,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAEnE,MAAM,QAAQ,GAAG,MAAM,IAAA,gCAA0B,EAAC,IAAI,CAAC,CAAC;YACxD,MAAM,OAAO,GAAgB;gBAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,QAAQ;aACT,CAAC;YACF,MAAM,IAAI,GAAG,IAAA,iBAAW,EAAC,OAAO,CAAC,CAAC;YAClC,MAAM,EAAE,GAAG,IAAA,uBAAY,EAAC,OAAO,CAAC,CAAC;YACjC,OAAO,CAAC,GAAG,CACT,QAAQ,QAAQ,CAAC,MAAM,0BAA0B;gBAC/C,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAChF,CAAC;QACJ,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,iFAAiF;IACjF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,gEAAgE;QAChE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QACD,wDAAwD;QACxD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,qBAAqB,CAAC,MAAkB;IACrD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAQ,CAAC;IAChC,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9D,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,IAAI,GAAG,CAAC;QAC7C,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK;aACjC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC;aACtC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEtB,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,sCAAsC,CAAC,CAAC;YAC9E,SAAS;QACX,CAAC;QAED,gCAAgC;QAChC,MAAM,KAAK,GAAkB,EAAE,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,KAAK,CAAC,IAAI,CAAC,IAAA,iBAAW,EAAC,IAAI,CAAC,CAAC,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,oCAAoC,IAAI,eAAe,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEjC,MAAM,aAAa,GAAG,IAAA,sBAAa,EAAC,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CACT,gBAAgB,UAAU,MAAM,aAAa,CAAC,QAAQ,CAAC,MAAM,4BAA4B,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,QAAQ,CACtJ,CAAC;QAEF,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAElD,kBAAkB;QAClB,MAAM,UAAU,GAAG,IAAA,mBAAU,EAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAA,6BAAkB,EAAC,aAAa,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CACT,iBAAiB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,CACxG,CAAC;QAEF,mDAAmD;QACnD,MAAM,QAAQ,GAAG,IAAA,6BAAoB,EAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC9E,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,IAAA,iBAAW,EAAC,IAAI,CAAC,CAAC;YAClB,IAAA,uBAAY,EAAC,IAAI,EAAE,IAAA,mBAAU,GAAE,EAAE,UAAU,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,CAAC,GAAG,CACT,iBAAiB,aAAa,CAAC,QAAQ,CAAC,MAAM,yBAAyB,QAAQ,CAAC,MAAM,gBAAgB,CACvG,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,KAAK,UAAU,iBAAiB,CAAC,MAAkB;IACjD,MAAM,SAAS,GAAG,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC;IAEjD,wCAAwC;IACxC,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,IAAA,iBAAW,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,oDAAoD;QACtD,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;QACrF,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,IAAA,sBAAa,EACjC,OAAO,EACP,KAAK,EACL,SAAS,EACT,kEAAkE,CACnE,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CACT,qBAAqB,aAAa,CAAC,QAAQ,CAAC,MAAM,mBAAmB;QACnE,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,qBAAqB,SAAS,yBAAyB,CACvF,CAAC;IAEF,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEhD,kBAAkB;IAClB,MAAM,UAAU,GAAG,IAAA,mBAAU,EAAC,aAAa,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAA,6BAAkB,EAAC,aAAa,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CACT,iBAAiB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,CACxG,CAAC;IAEF,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,IAAA,6BAAoB,EAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3E,MAAM,GAAG,GAAG,IAAA,mBAAU,GAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAA,iBAAW,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACvB,IAAA,uBAAY,EAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,mBAAmB;IACnB,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CACT,QAAQ,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,QAAQ,CAAC,MAAM,IAAI,GAAG,YAAY;YAC1E,IAAI,WAAW,kBAAkB,CACpC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,IAAU,EAAE,MAAkB;IACjD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAK,CAAC;IAC1B,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxD,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,CAAC,cAAc,6BAA6B,IAAI,CAAC,cAAc,gCAAgC,CAC5H,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7C,IAAA,sBAAa,EAAC,WAAW,CAAC;QAC1B,IAAA,sBAAa,EAAC,WAAW,CAAC;KAC3B,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QACjE,SAAS,EAAE,kBAAkB;QAC7B,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACtC,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAE/D,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACvE,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,CAAC,eAAe,8DAA8D,CAC5G,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -49,6 +49,18 @@ export interface IaQaConfig {
|
|
|
49
49
|
pages: PageTarget[];
|
|
50
50
|
/** Layout groups — shared elements auto-detected across pages. */
|
|
51
51
|
layouts?: Record<string, LayoutConfig>;
|
|
52
|
+
/**
|
|
53
|
+
* Auto-detect shared layout elements across ALL mapped pages.
|
|
54
|
+
* When true, any element appearing on ≥ `layoutThreshold` fraction of pages
|
|
55
|
+
* is promoted to `_layouts/shell.json` and stripped from per-page mappings.
|
|
56
|
+
* Default false (backward-compatible).
|
|
57
|
+
*/
|
|
58
|
+
autoLayout?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Fraction of pages (0-1) an element must appear on to be auto-promoted to
|
|
61
|
+
* layout. Default 0.85. Only used when `autoLayout` is true.
|
|
62
|
+
*/
|
|
63
|
+
layoutThreshold?: number;
|
|
52
64
|
}
|
|
53
65
|
export declare const CONFIG_DIR = ".ia-qa";
|
|
54
66
|
export declare const MAPPING_DIRNAME = "mapping";
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/markdown.d.ts
CHANGED
|
@@ -9,5 +9,8 @@ import { renderPageContract, renderLayoutContract } from './browser/contract';
|
|
|
9
9
|
export { renderPageContract, renderLayoutContract };
|
|
10
10
|
export declare function markdownPath(pageName: string, dir?: string): string;
|
|
11
11
|
export declare function layoutMdPath(layoutName: string, dir?: string): string;
|
|
12
|
-
export declare function saveMarkdown(mapping: PageMapping, dir?: string
|
|
12
|
+
export declare function saveMarkdown(mapping: PageMapping, dir?: string, layoutInfo?: {
|
|
13
|
+
count: number;
|
|
14
|
+
name: string;
|
|
15
|
+
}): string;
|
|
13
16
|
export declare function saveLayoutMarkdown(mapping: LayoutMapping, dir?: string): string;
|
package/dist/markdown.js
CHANGED
|
@@ -52,10 +52,10 @@ function layoutMdPath(layoutName, dir = (0, config_1.layoutDir)()) {
|
|
|
52
52
|
const safe = layoutName.replace(/[^a-zA-Z0-9._-]/g, '-');
|
|
53
53
|
return path.join(dir, `${safe}.md`);
|
|
54
54
|
}
|
|
55
|
-
function saveMarkdown(mapping, dir = (0, config_1.mappingDir)()) {
|
|
55
|
+
function saveMarkdown(mapping, dir = (0, config_1.mappingDir)(), layoutInfo) {
|
|
56
56
|
fs.mkdirSync(dir, { recursive: true });
|
|
57
57
|
const file = markdownPath(mapping.page, dir);
|
|
58
|
-
fs.writeFileSync(file, (0, contract_1.renderPageContract)(mapping), 'utf8');
|
|
58
|
+
fs.writeFileSync(file, (0, contract_1.renderPageContract)(mapping, layoutInfo), 'utf8');
|
|
59
59
|
return file;
|
|
60
60
|
}
|
|
61
61
|
function saveLayoutMarkdown(mapping, dir = (0, config_1.layoutDir)()) {
|
package/dist/markdown.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,oCAGC;AAED,oCAGC;AAED,
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,oCAGC;AAED,oCAGC;AAED,oCASC;AAED,gDAKC;AAzCD,uCAAyB;AACzB,2CAA6B;AAG7B,qCAAiD;AACjD,iDAA8E;AAQrE,mGARA,6BAAkB,OAQA;AAAE,qGARA,+BAAoB,OAQA;AAEjD,SAAgB,YAAY,CAAC,QAAgB,EAAE,MAAc,IAAA,mBAAU,GAAE;IACvE,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IACvD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,SAAgB,YAAY,CAAC,UAAkB,EAAE,MAAc,IAAA,kBAAS,GAAE;IACxE,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IACzD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,SAAgB,YAAY,CAC1B,OAAoB,EACpB,MAAc,IAAA,mBAAU,GAAE,EAC1B,UAA4C;IAE5C,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC7C,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAA,6BAAkB,EAAC,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IACxE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,kBAAkB,CAAC,OAAsB,EAAE,MAAc,IAAA,kBAAS,GAAE;IAClF,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/C,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAA,+BAAoB,EAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9D,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ia-qa/self-healing",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Local-first self-healing for UI tests: a local MCP server + CLI that map your app's pages to a role/name/selector contract, diff selector drift (PASS/FIX/BLOCK), and apply deterministic fixes to Cypress/Playwright/Selenium tests. Runs on your machine — nothing leaves it.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"self-healing",
|