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) { {user.name { 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__`)