From d8696315eb162c50e687ca7eb81faefe376e37e7 Mon Sep 17 00:00:00 2001 From: Sergey Matyunin Date: Mon, 24 Aug 2026 11:04:17 +0300 Subject: [PATCH] test: stabilize opening distance smoke Issue: #281 User-Visible: no --- demo/smoke_opening_inner_distances.mjs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/demo/smoke_opening_inner_distances.mjs b/demo/smoke_opening_inner_distances.mjs index 95a73cde..652b766e 100644 --- a/demo/smoke_opening_inner_distances.mjs +++ b/demo/smoke_opening_inner_distances.mjs @@ -10,10 +10,16 @@ const result = await page.evaluate(async () => { const card = window.__card; const root = () => card.renderRoot; const space = () => card._serverCfg.spaces.find((item) => item.id === 'f1'); + const frame = () => new Promise((resolve) => + requestAnimationFrame(() => requestAnimationFrame(resolve))); const settle = async () => { card.requestUpdate(); await card.updateComplete; - await new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); + const started = performance.now(); + while (card._modeTransitionBusy && performance.now() - started < 1800) await frame(); + card.requestUpdate(); + await card.updateComplete; + await frame(); }; const fixtureWallKey = (a, b) => { const pitch = 1 / 240; @@ -53,6 +59,11 @@ const result = await page.evaluate(async () => { }); const activate = async (point) => { card._setMode('plan'); + // Entering Plan owns an asynchronous editor-chrome transition which may + // clear transient hover state at completion. Arm the placement tool only + // after that transition settles so slower CI runners exercise the same + // state sequence as a user and as fast local runs. + await settle(); card._activateOpeningPlacement('door'); card._cursorPt = point; await settle();