From 5354352bee1f8ef76f1f40ba3dce1e423610efc3 Mon Sep 17 00:00:00 2001 From: silverwind Date: Sun, 15 Feb 2026 12:58:16 +0100 Subject: [PATCH] Use server-rendered title attribute for dropdown locator Replace JS-dependent getByLabel (aria-label set by Fomantic init) with getByTitle targeting the avatar's server-rendered title attribute, scoped to the navigation bar. Extract reusable clickDropdownItem helper. Co-Authored-By: Claude Opus 4.6 --- tests/e2e/utils.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tests/e2e/utils.ts b/tests/e2e/utils.ts index 1b7b4992b9..0e00316d1e 100644 --- a/tests/e2e/utils.ts +++ b/tests/e2e/utils.ts @@ -1,6 +1,11 @@ import {env} from 'node:process'; import {expect} from '@playwright/test'; -import type {Page} from '@playwright/test'; +import type {Locator, Page} from '@playwright/test'; + +export async function clickDropdownItem(page: Page, trigger: Locator, itemText: string) { + await trigger.click(); + await page.getByText(itemText).click(); +} export async function login(page: Page) { await page.goto('/user/login'); @@ -11,7 +16,7 @@ export async function login(page: Page) { } export async function logout(page: Page) { - await page.getByLabel('Profile and Settings…').click(); - await page.getByText('Sign Out').click(); + const navbar = page.getByRole('navigation', {name: 'Navigation Bar'}); + await clickDropdownItem(page, navbar.getByTitle(env.E2E_USER!), 'Sign Out'); await expect(page.getByRole('link', {name: 'Sign In'})).toBeVisible(); }