From b5e15fc105f8beafb92ad2c480d0dd827304fbcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Fri, 9 Oct 2026 10:08:54 +0200 Subject: [PATCH] test(timeline): wait for the values menu before reading its dots --- e2e/timeline.spec.ts | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/e2e/timeline.spec.ts b/e2e/timeline.spec.ts index 7c0a57534..857d6e83f 100644 --- a/e2e/timeline.spec.ts +++ b/e2e/timeline.spec.ts @@ -258,14 +258,22 @@ test("value lines: quarterly means, gaps kept, short ones bridged, up to six lin for (const stroke of marks) expect(stroke).toBe(colour); } // The menu marks each chosen line with the same colour. - await page.locator('[data-slot="timeline-values-trigger"]').click(); - const dots = await page - .locator( - '[data-slot="timeline-values-option"][aria-checked="true"] [data-slot="timeline-values-dot"]', - ) - .evaluateAll((els) => - els.map((el) => getComputedStyle(el).backgroundColor), - ); + const trigger = page.locator('[data-slot="timeline-values-trigger"]'); + await expect(async () => { + if ((await trigger.getAttribute("data-state")) !== "open") { + await trigger.click(); + } + await expect(trigger).toHaveAttribute("data-state", "open", { + timeout: 1_000, + }); + }).toPass(); + const chosenDots = page.locator( + '[data-slot="timeline-values-option"][aria-checked="true"] [data-slot="timeline-values-dot"]', + ); + await expect(chosenDots).toHaveCount(6); + const dots = await chosenDots.evaluateAll((els) => + els.map((el) => getComputedStyle(el).backgroundColor), + ); expect(new Set(dots)).toEqual(new Set(colours.map((c) => c.colour))); await page.keyboard.press("Escape"); });