From 291a43819a27e58af99bc07fec9cfe2d5c9c3161 Mon Sep 17 00:00:00 2001 From: imccyu <276526105+imccyu@users.noreply.github.com> Date: Sun, 23 Aug 2026 16:27:09 +0800 Subject: [PATCH] test(web): tolerate responsive transcript reflow --- apps/web/tests/chat-scroll-contract.e2e.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/apps/web/tests/chat-scroll-contract.e2e.ts b/apps/web/tests/chat-scroll-contract.e2e.ts index a1cfd8074b..7c70741296 100644 --- a/apps/web/tests/chat-scroll-contract.e2e.ts +++ b/apps/web/tests/chat-scroll-contract.e2e.ts @@ -30,6 +30,7 @@ const RESTORE_SESSION_B_ID = 'chat-scroll-restore-b-e2e' const REPLAY_CONTEXT_WINDOW = 10_000_000 const STREAM_PACE_MS = 24 const GEOMETRY_TOLERANCE = 2 +const RESPONSIVE_REFLOW_TOLERANCE = 32 const LIVE_TEXT_PROMPT = 'CHAT_SCROLL_LIVE_USER Continue this long conversation while I inspect older history.' const LIVE_TEXT_FIRST = 'CHAT_SCROLL_LIVE_FIRST' const LIVE_TEXT_DONE = 'CHAT_SCROLL_LIVE_DONE' @@ -395,11 +396,15 @@ function flowTop(page: Page, key: string): Promise { }, key) } -async function expectSameFlowTop(page: Page, anchor: FlowAnchor): Promise { +async function expectSameFlowTop( + page: Page, + anchor: FlowAnchor, + tolerance = GEOMETRY_TOLERANCE, +): Promise { await expect.poll(async () => Math.abs((await flowTop(page, anchor.key)) - anchor.top), { timeout: 10_000, message: `flow row ${anchor.key} moved relative to the transcript viewport`, - }).toBeLessThanOrEqual(GEOMETRY_TOLERANCE) + }).toBeLessThanOrEqual(tolerance) } async function expectBottom(page: Page): Promise { @@ -663,7 +668,8 @@ describe('web e2e: long Chat scroll contract', () => { await world.page.getByRole('button', { name: 'Open sidebar', exact: true }).click() await world.page.getByRole('tab', { name: 'Chat', exact: true }).click() await nextPaint(world.page) - await expectSameFlowTop(world.page, sessionAnchor) + await expectSameFlowTop(world.page, sessionAnchor, RESPONSIVE_REFLOW_TOLERANCE) + const narrowSessionAnchor = await visibleFlowAnchor(world.page) await openSeed( world.page, @@ -674,7 +680,7 @@ describe('web e2e: long Chat scroll contract', () => { world.page, RESTORE_FIXTURE_A, ) - await expectSameFlowTop(world.page, sessionAnchor) + await expectSameFlowTop(world.page, narrowSessionAnchor) const backToBottom = world.page.getByRole('button', { name: 'Back to bottom', exact: true }) await backToBottom.evaluate((button) => {