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 again.getByRole('button', { name: 'Отозвать ключ' }).click();
|
||||||
await expect(page.getByText('Ключ отозван.')).toBeVisible({ timeout: 20_000 });
|
await expect(page.getByText('Ключ отозван.')).toBeVisible({ timeout: 20_000 });
|
||||||
|
|
||||||
|
// Ключа больше нет. Виртуальный аутентификатор ещё хранит credential,
|
||||||
|
// поэтому браузер подпишет challenge, а сервер откажет: важно, что в
|
||||||
|
// приложение не пускает и ошибка показана человеческим текстом.
|
||||||
await context.clearCookies();
|
await context.clearCookies();
|
||||||
await page.goto('/login');
|
await page.goto('/login');
|
||||||
await page.getByTestId('passkey-login').click();
|
await page.getByTestId('passkey-login').click();
|
||||||
// Ключа больше нет: сервер отвечает понятной ошибкой, в приложение не пускает.
|
await expect(page.getByRole('alert')).toBeVisible({ timeout: 25_000 });
|
||||||
await expect(page.getByTestId('passkey-error')).toBeVisible({ timeout: 20_000 });
|
|
||||||
await expect(page).toHaveURL(/\/login/u);
|
await expect(page).toHaveURL(/\/login/u);
|
||||||
} finally {
|
} finally {
|
||||||
await context.close();
|
await context.close();
|
||||||
|
|||||||
Reference in New Issue
Block a user