Files
html/api/inspect-overlap.js
Opus 745c35b5d7
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
phase32-33 doctrine 169-173 39 pages enrichies UX + overlap fix all-ia-hub + cron async
Phase 32 (doctrine 169):
- Cron */10min batch-enrich-async.sh installe auto-enrichement queue
- 4 dernieres pages PRIO enrichies: deepseek-hub, universal-integration-hub, qa-hub, wevia-ops-hub
- Total cumul session: 39 pages UX doctrine 60

Phase 33 (doctrine 170-173):
- Playwright audit v3 operationnel (10 pages, 20 zooms captured)
- all-ia-hub overlap detecte: 4 tr + 2 br elements superposes
- Fix CSS surgical applique (doctrine 172 + 173):
  - Logout top-right z-index 10000
  - Feedback bot-right 20px
  - Secondary aside shifted bottom 84px (zero chauvauchement)
- GOLD backups crees avant chaque fix

Handler cascade Cerebras->Ollama validate (cerebras-qwen-235b primary).
Pattern nohup & background valide pour eviter 502 CX endpoint.
NR 153/153 invariant.
2026-04-24 12:08:11 +02:00

35 lines
1.5 KiB
JavaScript

const { chromium } = require("playwright");
(async () => {
const browser = await chromium.launch({ headless: true, args: ["--no-sandbox","--disable-gpu"] });
const ctx = await browser.newContext({ viewport: { width: 1440, height: 900 } });
const pg = await ctx.newPage();
await pg.goto("https://weval-consulting.com/all-ia-hub.html", { waitUntil: "domcontentloaded", timeout: 12000 });
await pg.waitForTimeout(2500);
const overlaps = await pg.evaluate(() => {
const SEL = [\"button\",\".btn\",\".toggle\",\"[class*=toggle]\",\"[class*=btn]\",\".chip\",\".badge\",\".fab\"].join(\",\");
const findZone = (x1,y1,x2,y2) => {
const all = document.querySelectorAll(SEL);
const hits = [];
for (const el of all) {
const r = el.getBoundingClientRect();
if (r.width<2 || r.height<2) continue;
const cx = r.x+r.width/2, cy = r.y+r.height/2;
if (cx>=x1 && cx<=x2 && cy>=y1 && cy<=y2) {
hits.push({
tag: el.tagName,
cls: (el.className||\"\").toString().slice(0,80),
id: el.id || \"\",
text: (el.textContent||\"\").trim().slice(0,40),
x: Math.round(r.x), y: Math.round(r.y), w: Math.round(r.width), h: Math.round(r.height),
pos: getComputedStyle(el).position
});
}
}
return hits;
};
return { tr: findZone(1040,0,1440,400), br: findZone(1040,500,1440,900) };
});
console.log(JSON.stringify(overlaps, null, 2));
await browser.close();
})();