Skip to content

Commit bb5c9d7

Browse files
serpentbladeclaude
andcommitted
test(17): land Linux ::part VR baseline + gate 5 non-Lit cells as documented divergence
The PartCardConsumer VR cell now has its Linux-rendered baseline (the Lit amber cross-shadow render: the consumer's PartCard::part(body) rule paints background:#fde68a + border:2px solid #b45309 onto the child's part="body" element across the shadow boundary — visually confirmed). Because ::part() is load-bearing on Lit but a deliberate no-op on the 5 non-Lit targets, a single shared 6-target baseline cannot match. Keep the Lit cell active (asserts the working cross-shadow effect — the SPEC-R8 proof) and add the 5 non-Lit cells to KNOWN_CROSS_TARGET_DIVERGENCE (they render byte-identically to each other with producer styles only; their no-op strip + part= passthrough is regression-protected by dist-parity 584 + per-target unit tests, not a screenshot). Verified in the pinned Linux Playwright container: Lit passes vs baseline, 5 non-Lit skip — 1 passed / 5 skipped / exit 0. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent f6f3016 commit bb5c9d7

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

4.38 KB
Loading

tests/visual-regression/specs/matrix.spec.ts

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,30 @@ async function settleExample(
393393
// `if (!editor) return` guard short-circuits) — hence the 4-vs-2 split. Fixed
394394
// by changing the call to the v3 form `setContent(v, { emitUpdate: false })`.
395395
// All 6 TipTap cells now render byte-identical to the shared baseline.
396-
const KNOWN_CROSS_TARGET_DIVERGENCE = new Set<string>([]);
396+
// Phase 17 — PartCardConsumer is the ONE cell that provably CANNOT share a
397+
// single 6-target baseline, by design. `::part()` is the cross-shadow-DOM
398+
// styling mechanism: it is load-bearing on Lit (the consumer's
399+
// `PartCard::part(body)` rule pierces the child's shadow boundary and paints
400+
// the amber `background:#fde68a; border:2px solid #b45309` onto the child's
401+
// `part="body"` element) and a deliberate NO-OP on the 5 non-Lit targets
402+
// (no shadow boundary exists, so the rule is stripped and the child renders
403+
// with its own producer styles only). The shared baseline is therefore the
404+
// LIT render (amber); the Lit cell asserts the working cross-shadow effect
405+
// (the SPEC-R8 proof), and the 5 non-Lit cells are documented-divergent here
406+
// — they render byte-identically to EACH OTHER (grey producer styles) but
407+
// cannot match the amber Lit baseline. Their correctness (the no-op strip +
408+
// `part=` passthrough) is fully regression-protected by dist-parity (584
409+
// byte-equal assertions) and the per-target unit tests — not by a screenshot.
410+
// This is the documented capability difference, NOT a bug (project bar:
411+
// "documented edge cases acceptable"; engine-demo precedent
412+
// `project_vr_engine_demo_divergences`).
413+
const KNOWN_CROSS_TARGET_DIVERGENCE = new Set<string>([
414+
'PartCardConsumer::vue',
415+
'PartCardConsumer::react',
416+
'PartCardConsumer::svelte',
417+
'PartCardConsumer::angular',
418+
'PartCardConsumer::solid',
419+
]);
397420

398421
// Phase-N.M follow-up gate — scheduled per-target bug fixes (NOT accepted
399422
// divergence). Distinct from KNOWN_CROSS_TARGET_DIVERGENCE: that set documents

0 commit comments

Comments
 (0)