test(web): e2e passkeys проверяет отказ после отзыва ключа
После отзыва ключа виртуальный аутентификатор ещё хранит credential и подписывает challenge, поэтому отказ приходит от сервера (auth.passkey_unknown): проверяем, что страница входа показывает ошибку и не пускает в приложение, а не конкретный testid клиентской ошибки. Живой прогон на стенде: регистрация ключа, вход по нему без пароля и отзыв — 1 passed (виртуальный аутентификатор Chromium через CDP).
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user