mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-28 19:01:34 +00:00
test(daycycle): #582/#544 witnesses follow the bounded, hint-free layers
smoke_live_pan_coverage now expects an exposed scene to open only within clip-path: inset(-25%) and the clip-marked day-cycle outline never to open; idle scenes keep no clip-path. paper-scene-contract pins the opacity hint. The Release trailer asks the branch's push Validate for the heavy jobs (smokes, golden, performance): #689 moves golden frames and must be proven by the full smoke set before S7 (#690). Release: v1.78.0-beta.9 Issue: #689 User-Visible: no Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018qZfe7YS4rqEMKoVeS3GKd
This commit is contained in:
@@ -52,12 +52,19 @@ const liveState = () => page.evaluate(() => {
|
|||||||
view: structuredClone(card._view),
|
view: structuredClone(card._view),
|
||||||
transformed: scenes.filter((node) => node.style.transform).length,
|
transformed: scenes.filter((node) => node.style.transform).length,
|
||||||
sceneCount: scenes.length,
|
sceneCount: scenes.length,
|
||||||
|
// #689: an exposed scene opens only within its bound; the filtered
|
||||||
|
// day-cycle outline (marked clip) is projected but never opened.
|
||||||
allSceneOverflowOpen: scenes.length > 0
|
allSceneOverflowOpen: scenes.length > 0
|
||||||
&& scenes.every((node) => node.style.overflow === 'visible'),
|
&& scenes.every((node) => (node.getAttribute('data-hp-live-overflow') === 'clip'
|
||||||
|
? !node.style.overflow && !node.style.clipPath
|
||||||
|
: node.style.overflow === 'visible' && node.style.clipPath === 'inset(-25%)')),
|
||||||
allScenePromoted: scenes.length > 0 && scenes.every((node) => node.style.transform
|
allScenePromoted: scenes.length > 0 && scenes.every((node) => node.style.transform
|
||||||
&& node.style.transformOrigin && node.style.willChange === 'transform'
|
&& node.style.transformOrigin && node.style.willChange === 'transform'
|
||||||
&& node.style.overflow === 'visible'),
|
&& (node.getAttribute('data-hp-live-overflow') === 'clip'
|
||||||
|
? !node.style.overflow && !node.style.clipPath
|
||||||
|
: node.style.overflow === 'visible' && node.style.clipPath === 'inset(-25%)')),
|
||||||
allTemporaryStylesCleared: scenes.every((node) => !node.style.overflow
|
allTemporaryStylesCleared: scenes.every((node) => !node.style.overflow
|
||||||
|
&& !node.style.clipPath
|
||||||
&& !node.style.transform && !node.style.transformOrigin && !node.style.willChange),
|
&& !node.style.transform && !node.style.transformOrigin && !node.style.willChange),
|
||||||
marker: centre(root.querySelector('[data-hp="device"]')),
|
marker: centre(root.querySelector('[data-hp="device"]')),
|
||||||
room: centre(root.querySelector('[data-hp="room"]')),
|
room: centre(root.querySelector('[data-hp="room"]')),
|
||||||
|
|||||||
@@ -33,7 +33,8 @@ test('#582 safe camera scene uses explicit bounded plan and outline layers', ()
|
|||||||
assert.match(card, /<svg class="plan-svg"/);
|
assert.match(card, /<svg class="plan-svg"/);
|
||||||
assert.match(styles, /\.plan-svg \{ z-index: 1; \}/);
|
assert.match(styles, /\.plan-svg \{ z-index: 1; \}/);
|
||||||
assert.match(styles, /\.hp-paper-outline-svg \{[\s\S]*?z-index: 0;/);
|
assert.match(styles, /\.hp-paper-outline-svg \{[\s\S]*?z-index: 0;/);
|
||||||
assert.match(styles, /\.stage\.daycycle\.hp-safe-daycycle-outline \.plan-svg \{[\s\S]*?will-change:\s*transform;/);
|
// #689: explicit through the opacity hint; a transform hint froze the raster.
|
||||||
|
assert.match(styles, /\.stage\.daycycle\.hp-safe-daycycle-outline \.plan-svg \{[\s\S]*?will-change:\s*opacity;/);
|
||||||
assert.match(staticCard, /\.hp-static-stage > \.hp-paper-outline-svg \{[\s\S]*?z-index:\s*0;/);
|
assert.match(staticCard, /\.hp-static-stage > \.hp-paper-outline-svg \{[\s\S]*?z-index:\s*0;/);
|
||||||
assert.match(styles, /\.hp-static-stage\.daycycle \.hp-paper-outline-svg/);
|
assert.match(styles, /\.hp-static-stage\.daycycle \.hp-paper-outline-svg/);
|
||||||
assert.match(styles, /\.hp-static-stage\.daycycle \.hp-paperg \{[\s\S]*?filter:\s*none;[\s\S]*?will-change:\s*auto;/);
|
assert.match(styles, /\.hp-static-stage\.daycycle \.hp-paperg \{[\s\S]*?filter:\s*none;[\s\S]*?will-change:\s*auto;/);
|
||||||
|
|||||||
Reference in New Issue
Block a user