diff --git a/app/components/user-dropdown.tsx b/app/components/user-dropdown.tsx
index 2782c0bf6..e3766d20b 100644
--- a/app/components/user-dropdown.tsx
+++ b/app/components/user-dropdown.tsx
@@ -25,6 +25,7 @@ export function UserDropdown() {
// this is for progressive enhancement
onClick={(e) => e.preventDefault()}
className="flex items-center gap-2"
+ aria-label="User menu"
>
{user.name ?? user.username}
diff --git a/app/routes/users+/index.tsx b/app/routes/users+/index.tsx
index 038dadb0f..d6a5e1221 100644
--- a/app/routes/users+/index.tsx
+++ b/app/routes/users+/index.tsx
@@ -45,6 +45,7 @@ export default function UsersRoute({ loaderData }: Route.ComponentProps) {
{
await expect(page).toHaveURL(`/`)
- await page.getByRole('link', { name: onboardingData.name }).click()
+ await page.getByRole('link', { name: 'User menu' }).click()
await page.getByRole('menuitem', { name: /profile/i }).click()
await expect(page).toHaveURL(`/users/${onboardingData.username}`)
- await page.getByRole('link', { name: onboardingData.name }).click()
+ await page.getByRole('link', { name: 'User menu' }).click()
await page.getByRole('menuitem', { name: /logout/i }).click()
await expect(page).toHaveURL(`/`)
})
@@ -332,7 +332,7 @@ test('login as existing user', async ({ page, insertNewUser }) => {
await page.getByRole('button', { name: /log in/i }).click()
await expect(page).toHaveURL(`/`)
- await expect(page.getByRole('link', { name: user.name })).toBeVisible()
+ await expect(page.getByRole('link', { name: 'User menu' })).toBeVisible()
})
test('reset password with a link', async ({ page, insertNewUser }) => {
@@ -386,7 +386,7 @@ test('reset password with a link', async ({ page, insertNewUser }) => {
await expect(page).toHaveURL(`/`)
- await expect(page.getByRole('link', { name: user.name })).toBeVisible()
+ await expect(page.getByRole('link', { name: 'User menu' })).toBeVisible()
})
test('reset password with a short code', async ({ page, insertNewUser }) => {
diff --git a/tests/e2e/passkey.test.ts b/tests/e2e/passkey.test.ts
index 9b221bf1f..6d50047e1 100644
--- a/tests/e2e/passkey.test.ts
+++ b/tests/e2e/passkey.test.ts
@@ -53,7 +53,7 @@ test('Users can register and use passkeys', async ({ page, login }) => {
).toHaveLength(1)
// Logout
- await page.getByRole('link', { name: user.name ?? user.username }).click()
+ await page.getByRole('link', { name: 'User menu' }).click()
await page.getByRole('menuitem', { name: /logout/i }).click()
await expect(page).toHaveURL(`/`)
@@ -76,9 +76,7 @@ test('Users can register and use passkeys', async ({ page, login }) => {
await Promise.race([passkeyAssertedPromise, errorPromise])
// Verify successful login
- await expect(
- page.getByRole('link', { name: user.name ?? user.username }),
- ).toBeVisible()
+ await expect(page.getByRole('link', { name: 'User menu' })).toBeVisible()
// Verify the sign count increased
const afterLoginCredentials = await client.send('WebAuthn.getCredentials', {
@@ -104,7 +102,7 @@ test('Users can register and use passkeys', async ({ page, login }) => {
expect(afterDeletionCredentials.credentials).toHaveLength(1)
// Logout again to test deleted passkey
- await page.getByRole('link', { name: user.name ?? user.username }).click()
+ await page.getByRole('link', { name: 'User menu' }).click()
await page.getByRole('menuitem', { name: /logout/i }).click()
await expect(page).toHaveURL(`/`)
diff --git a/tests/e2e/search.test.ts b/tests/e2e/search.test.ts
index 270eb4ea8..b1eb729f2 100644
--- a/tests/e2e/search.test.ts
+++ b/tests/e2e/search.test.ts
@@ -1,22 +1,25 @@
-import { invariant } from '@epic-web/invariant'
import { expect, test } from '#tests/playwright-utils.ts'
test('Search from home page', async ({ page, insertNewUser }) => {
const newUser = await insertNewUser()
await page.goto('/')
+ // Search for an existing user.
await page.getByRole('searchbox', { name: /search/i }).fill(newUser.username)
await page.getByRole('button', { name: /search/i }).click()
- await page.waitForURL(
- `/users?${new URLSearchParams({ search: newUser.username })}`,
- )
await expect(page.getByText('Epic Notes Users')).toBeVisible()
const userList = page.getByRole('main').getByRole('list')
await expect(userList.getByRole('listitem')).toHaveCount(1)
- invariant(newUser.name, 'User name not found')
- await expect(page.getByAltText(newUser.name)).toBeVisible()
+ await expect(
+ userList
+ .getByRole('listitem')
+ .getByRole('link', {
+ name: `${newUser.name || newUser.username} profile`,
+ }),
+ ).toBeVisible()
+ // Search for a non-existing user.
await page.getByRole('searchbox', { name: /search/i }).fill('__nonexistent__')
await page.getByRole('button', { name: /search/i }).click()
await page.waitForURL(`/users?search=__nonexistent__`)