test(web): e2e passkeys проверяет отказ после отзыва ключа

После отзыва ключа виртуальный аутентификатор ещё хранит credential и
подписывает challenge, поэтому отказ приходит от сервера
(auth.passkey_unknown): проверяем, что страница входа показывает ошибку и
не пускает в приложение, а не конкретный testid клиентской ошибки.

Живой прогон на стенде: регистрация ключа, вход по нему без пароля и
отзыв — 1 passed (виртуальный аутентификатор Chromium через CDP).
This commit is contained in:
2026-09-26 15:30:14 +03:00
parent e305b417e8
commit cca64451e2
+4 -2
View File
@@ -101,11 +101,13 @@ test.describe('passkeys (WebAuthn)', () => {
await again.getByRole('button', { name: 'Отозвать ключ' }).click();
await expect(page.getByText('Ключ отозван.')).toBeVisible({ timeout: 20_000 });
// Ключа больше нет. Виртуальный аутентификатор ещё хранит credential,
// поэтому браузер подпишет challenge, а сервер откажет: важно, что в
// приложение не пускает и ошибка показана человеческим текстом.
await context.clearCookies();
await page.goto('/login');
await page.getByTestId('passkey-login').click();
// Ключа больше нет: сервер отвечает понятной ошибкой, в приложение не пускает.
await expect(page.getByTestId('passkey-error')).toBeVisible({ timeout: 20_000 });
await expect(page.getByRole('alert')).toBeVisible({ timeout: 25_000 });
await expect(page).toHaveURL(/\/login/u);
} finally {
await context.close();