test(web): wait out the self-dismissing WRL infobar before the chrome baseline

The WRL→STEP migration notice auto-dismisses after 10 s
(pcb_edit_frame.cpp ShowMessageFor); when the timer fired between the
pre-hide GL-box baseline and the post-restore comparison, the canvas
shifted by the bar's height and the ±3 px restore-exactness check could
never pass (CI 30289317464, web-firefox — pure timing, the wx dark
form-control bump on that run was innocent). Gate the baseline on the
notice being HIDDEN — its DOM node outlives the dismiss, so absence
never happens.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y32etYBCKV6t1qDoLoGmgF
This commit is contained in:
Gergő Törcsvári 2026-07-28 10:36:27 +02:00
commit 23af296ea4
No known key found for this signature in database
GPG key ID: 8E75F2CDE64E5322

View file

@ -66,6 +66,15 @@ test.beforeAll(async ({ browser }: { browser: Browser }) => {
// Loading overlays (boot + lib fat-load, both `inset-0 z-30`) must be gone
// before geometry is trusted.
await expect(page.locator('div.inset-0.z-30')).toHaveCount(0, { timeout: 180000 });
// The WRL→STEP migration notice self-dismisses after 10 s
// (pcb_edit_frame.cpp ShowMessageFor) and shifts the GL canvas when it
// goes — wait it out so the pre-hide baseline and the post-restore box
// are measured in the same layout. It is shown synchronously during the
// file load the title poll above already gates on, and its DOM node
// outlives the dismiss, so wait for hidden, not absent. The un-timed
// "older version of KiCad" infobar stays up on both sides of the
// comparison, so it cancels out.
await expect(page.getByText(/WRL 3D model/)).toBeHidden({ timeout: 30000 });
});
test.afterAll(async () => {