Say what the embed-smoke node count does and does not mean
smoke:embeds reports a node count per profile, and the counts vary enormously: dashboard-plus-grid mounts 1,499 nodes with a canvas, big-picture 262, research-map-plus-grid twelve. Read side by side that last one looks like a capability-4 composite whose two children never rendered. It is not. Measured with a recursive shadow-root walk at mobile viewport: 518 nodes, 1 canvas, both children present as real custom elements (doxa-research-map and people-groups-grid), 13,867px of content, zero console errors and zero responses >= 400. The gate counts ONE shadow level. research-map-plus-grid nests its children by TAG and bundle URL rather than importing their .vue files — deliberately, and its meta.json explains why: importing the research map's component directly would bypass doxa-research-map/index.js and silently drop that bundle's private colour strategies, its profileModules registry, its Pinia/i18n pair and the RTL plugin. Children mounted that way live in their own shadow roots, which a single-level querySelectorAll cannot see. So the count is a MOUNT signal, not a quality signal, and the `< 5` bar it feeds is still exactly right — that bar catches a mount which produced nothing, which is what this gate exists to assert. Only the reading was wrong, so only a comment changes here. Worth recording because this repo already carries the lesson that shadow DOM does not pierce, and it cost three wrong diagnoses of a non-bug once before. It reappeared inside a gate rather than in an ad-hoc probe, where it is harder to notice: the gate is green, the number is simply not measuring what a reader assumes. A near-miss, caught by checking the outlier in a browser instead of filing it. Whole run for the record: 43/43 pages mount cleanly, enumerated generically from manifest.json — every bundle x every profile, not a hardcoded list. That is the "Playwright coverage over every plugin" item on the standing work list, and it is real coverage.
This commit is contained in:
parent
8550e58fbe
commit
c4c5e366ad
1 changed files with 9 additions and 0 deletions
|
|
@ -104,6 +104,15 @@ for (const t of list) {
|
|||
return el && el.shadowRoot && el.shadowRoot.childElementCount > 0
|
||||
}, t.element, { timeout: 25000 })
|
||||
await page.waitForTimeout(4000)
|
||||
// ★ THE NODE COUNT IS A MOUNT SIGNAL, NOT A QUALITY SIGNAL — do not read it as "how much
|
||||
// rendered". This counts ONE shadow level, so a composite that nests its children BY TAG (the
|
||||
// stack-demo element/src contract, used by research-map-plus-grid to avoid bypassing the child
|
||||
// bundle's own index.js) reports only its wrapper: 12 nodes, no canvas, while a recursive walk
|
||||
// of the same page finds 518 nodes, 1 canvas, both children present and 13,867px of content.
|
||||
// That reads as a broken composite beside dashboard-plus-grid's 1,499, and it is not one —
|
||||
// measured 2026-09-23 after chasing it as a defect. Shadow DOM does not pierce; a single-level
|
||||
// querySelectorAll cannot see a tag-composed child. The `< 5` bar below is still the right
|
||||
// assertion, because it catches a mount that produced NOTHING, which is what this gate is for.
|
||||
const verdict = await page.evaluate((tag) => {
|
||||
const el = document.querySelector(tag)
|
||||
const sr = el.shadowRoot
|
||||
|
|
|
|||
Loading…
Reference in a new issue