diff --git a/web/src/app/invitations/accept/page.tsx b/web/src/app/invitations/accept/page.tsx
index cab2c83ea..d7adcbb78 100644
--- a/web/src/app/invitations/accept/page.tsx
+++ b/web/src/app/invitations/accept/page.tsx
@@ -296,7 +296,7 @@ export default function AcceptInvitationPage() {
-
{errorMessage}
+
{errorMessage}
)}
diff --git a/web/tests/e2e/invitations.spec.ts b/web/tests/e2e/invitations.spec.ts
index b908ebc75..b9f77cfb4 100644
--- a/web/tests/e2e/invitations.spec.ts
+++ b/web/tests/e2e/invitations.spec.ts
@@ -27,9 +27,9 @@ test('terminal invitation errors refresh on a new fragment and allow account swi
});
await page.goto('/invitations/accept#token=used-invitation');
- await expect(
- page.getByText('This invitation was already used.'),
- ).toBeVisible();
+ await expect(page.getByTestId('invitation-error')).toContainText(
+ 'This invitation was already used.',
+ );
await expect
.poll(() =>
page.evaluate(() =>
@@ -41,7 +41,9 @@ test('terminal invitation errors refresh on a new fragment and allow account swi
await page.evaluate(() => {
window.location.hash = 'token=revoked-invitation';
});
- await expect(page.getByText('This invitation was revoked.')).toBeVisible();
+ await expect(page.getByTestId('invitation-error')).toContainText(
+ 'This invitation was revoked.',
+ );
await page.getByRole('button', { name: 'Back to sign in' }).click();
await expect(page).toHaveURL(/\/login$/);
@@ -101,9 +103,11 @@ test('login preserves an explicit invitation email mismatch error', async ({
await expect(page).toHaveURL(
/\/invitations\/accept\?error=invitation_email_mismatch$/,
);
- await expect(
- page.getByText('This invitation belongs to a different email address.'),
- ).toBeVisible();
+ // The same copy is also shown as a transient toast, so target the page's
+ // inline error region to keep the assertion deterministic.
+ await expect(page.getByTestId('invitation-error')).toContainText(
+ 'This invitation belongs to a different email address.',
+ );
await expect(page.getByText('Login successful')).toHaveCount(0);
});