Render every <wn-*> in a real browser (Playwright, --no-sandbox; reuses an external static server when present) and write the adapter-contract parity result to adapters/lit/parity/_parity.json: - Contract parity: element must upgrade + carry no attribute-mismatch vs IR (computed statically via scaffold.componentDrift, avoiding runtime type-coercion false positives). prop-missing is a coverage note, not a failure. - Visual parity: render smoke (non-empty + positive box) + per-component screenshot artifact (gitignored). Pixel-exact regression stays with the Playwright baseline suite; IR exemplars are gallery cards, not single-component baselines, so they are the human reference, not an auto pixel gate. - Result: 10 components, contractFail=0 visualFail=0, PipelineStrip skipped (wn-pipeline-strip rename drift). Exit 4 on failure. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
119 lines
2.1 KiB
JSON
119 lines
2.1 KiB
JSON
{
|
|
"stack": "lit",
|
|
"generatedAt": "2026-06-30T07:15:06.747Z",
|
|
"components": [
|
|
{
|
|
"name": "Button",
|
|
"contract": "pass",
|
|
"visual": "pass",
|
|
"diffRatio": null,
|
|
"box": {
|
|
"w": 82,
|
|
"h": 36
|
|
},
|
|
"notes": "ok"
|
|
},
|
|
{
|
|
"name": "Eyebrow",
|
|
"contract": "pass",
|
|
"visual": "pass",
|
|
"diffRatio": null,
|
|
"box": {
|
|
"w": 45,
|
|
"h": 23
|
|
},
|
|
"notes": "ok"
|
|
},
|
|
{
|
|
"name": "Icon",
|
|
"contract": "pass",
|
|
"visual": "pass",
|
|
"diffRatio": null,
|
|
"box": {
|
|
"w": 0,
|
|
"h": 23
|
|
},
|
|
"notes": "ok"
|
|
},
|
|
{
|
|
"name": "PageHeader",
|
|
"contract": "pass",
|
|
"visual": "pass",
|
|
"diffRatio": null,
|
|
"box": {
|
|
"w": 117,
|
|
"h": 37
|
|
},
|
|
"notes": "coverage (drift, not gated): missing actions"
|
|
},
|
|
{
|
|
"name": "PipelineStrip",
|
|
"contract": "skip",
|
|
"visual": "skip",
|
|
"diffRatio": null,
|
|
"notes": "no <wn-pipeline-strip> element (see adapters/lit/drift/PipelineStrip.md)"
|
|
},
|
|
{
|
|
"name": "Sidebar",
|
|
"contract": "pass",
|
|
"visual": "pass",
|
|
"diffRatio": null,
|
|
"box": {
|
|
"w": 273,
|
|
"h": 592
|
|
},
|
|
"notes": "coverage (drift, not gated): missing current"
|
|
},
|
|
{
|
|
"name": "StageDot",
|
|
"contract": "pass",
|
|
"visual": "pass",
|
|
"diffRatio": null,
|
|
"box": {
|
|
"w": 56,
|
|
"h": 23
|
|
},
|
|
"notes": "ok"
|
|
},
|
|
{
|
|
"name": "Stamp",
|
|
"contract": "pass",
|
|
"visual": "pass",
|
|
"diffRatio": null,
|
|
"box": {
|
|
"w": 63,
|
|
"h": 23
|
|
},
|
|
"notes": "ok"
|
|
},
|
|
{
|
|
"name": "Tag",
|
|
"contract": "pass",
|
|
"visual": "pass",
|
|
"diffRatio": null,
|
|
"box": {
|
|
"w": 64,
|
|
"h": 24
|
|
},
|
|
"notes": "ok"
|
|
},
|
|
{
|
|
"name": "TopNav",
|
|
"contract": "pass",
|
|
"visual": "pass",
|
|
"diffRatio": null,
|
|
"box": {
|
|
"w": 243,
|
|
"h": 57
|
|
},
|
|
"notes": "ok"
|
|
}
|
|
],
|
|
"summary": {
|
|
"total": 10,
|
|
"contractFail": 0,
|
|
"visualFail": 0,
|
|
"skipped": 1
|
|
}
|
|
}
|