Skip to content

Commit d7948b0

Browse files
authored
Stabilize Auto-Hide reopen assertion in toolbar settings e2e (#58)
1 parent 1652455 commit d7948b0

1 file changed

Lines changed: 21 additions & 13 deletions

File tree

e2e/tests/toolbar-settings.spec.ts

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { Locator } from "@playwright/test";
1+
import type { Locator, Page } from "@playwright/test";
22

33
import { expect, test } from "../fixtures";
44
import { openToolbarSettings } from "../pages/extension";
@@ -19,6 +19,17 @@ async function ensureVotePressedOn(locator: Locator): Promise<void> {
1919
await expect(locator).toHaveAttribute("aria-pressed", "true");
2020
}
2121

22+
async function openToolbarSettingsUntilVisible(page: Page, target: Locator): Promise<void> {
23+
for (let i = 0; i < 2; i++) {
24+
await openToolbarSettings(page);
25+
const visible = await target.isVisible({ timeout: 1000 }).catch(() => false);
26+
if (visible) {
27+
return;
28+
}
29+
}
30+
await expect(target).toBeVisible();
31+
}
32+
2233
test.describe("Toolbar settings menu", () => {
2334
test("feature voting and behaviour toggles are visible and interactive", async ({
2435
context,
@@ -31,11 +42,10 @@ test.describe("Toolbar settings menu", () => {
3142
await openStableTestPage(page);
3243
await expect(getExtensionRoot(page)).toHaveCount(1);
3344
await expectSvelteAppLoaded(page);
34-
35-
await openToolbarSettings(page);
45+
const settingsMenu = page.getByRole("menu").first();
3646

3747
const featureVoting = page.getByRole("group", { name: "Feature Voting" }).first();
38-
await expect(featureVoting).toBeVisible();
48+
await openToolbarSettingsUntilVisible(page, featureVoting);
3949

4050
const animationDebuggerVote = page
4151
.getByRole("button", { name: "Animation Debugger" })
@@ -55,21 +65,21 @@ test.describe("Toolbar settings menu", () => {
5565

5666
const autoHideBefore = await toolbarAutoHideItem.getAttribute("aria-checked");
5767
await toolbarAutoHideItem.click();
68+
const autoHideAfter = await toolbarAutoHideItem.getAttribute("aria-checked");
69+
expect(autoHideAfter).not.toBe(autoHideBefore);
5870

5971
const viewport = page.viewportSize();
6072
expect(viewport).toBeTruthy();
6173
if (!viewport) throw new Error("viewport not available");
62-
6374
await page.mouse.move(viewport.width / 2, viewport.height - 1);
64-
await openToolbarSettings(page);
75+
await openToolbarSettingsUntilVisible(page, settingsMenu);
6576

66-
const toolbarAutoHideItemAfter = page
77+
const toolbarAutoHideItemAfter = settingsMenu
6778
.getByRole("menuitemcheckbox", { name: /Auto-Hide/i })
6879
.first();
6980
await expect(toolbarAutoHideItemAfter).toBeVisible();
70-
71-
const autoHideAfter = await toolbarAutoHideItemAfter.getAttribute("aria-checked");
72-
expect(autoHideAfter).not.toBe(autoHideBefore);
81+
const autoHideAfterReopen = await toolbarAutoHideItemAfter.getAttribute("aria-checked");
82+
expect(autoHideAfterReopen).toBe(autoHideAfter);
7383
});
7484

7585
test("Feature Voting upvotes can both be on and do not cross-toggle", async ({
@@ -84,10 +94,8 @@ test.describe("Toolbar settings menu", () => {
8494
await expect(getExtensionRoot(page)).toHaveCount(1);
8595
await expectSvelteAppLoaded(page);
8696

87-
await openToolbarSettings(page);
88-
8997
const featureVoting = page.getByRole("group", { name: "Feature Voting" }).first();
90-
await expect(featureVoting).toBeVisible();
98+
await openToolbarSettingsUntilVisible(page, featureVoting);
9199

92100
const voteA = featureVoting.getByRole("button", {
93101
name: "Animation Debugger",

0 commit comments

Comments
 (0)