Spec-Zone.ru › Playwright

Учетные данные

Credentials — это виртуальный аутентификатор WebAuthn, привязанный к BrowserContext. Он позволяет тестам регистрировать ключи доступа и отвечать на церемонии navigator.credentials.create() / navigator.credentials.get() на странице без настоящего аутентификатора или аппаратного ключа безопасности.

Есть три распространенных способа его использования:

Использование: предварительное создание известных учетных данных

const context = await browser.newContext();

// A passkey your backend already provisioned for a test user.
await context.credentials.create('example.com', {
  id: knownCredentialId, // base64url
  userHandle: knownUserHandle, // base64url
  privateKey: knownPrivateKey, // base64url PKCS#8 (DER)
  publicKey: knownPublicKey, // base64url SPKI (DER)
});
await context.credentials.install();

const page = await context.newPage();
await page.goto('https://example.com/login');
// The page's navigator.credentials.get() is answered with the seeded passkey.

Использование: сохранение учетных данных с последующим повторным использованием

// setup test: let the app register a passkey, then save the storage state with it.
const context = await browser.newContext();
await context.credentials.install();

const page = await context.newPage();
await page.goto('https://example.com/register');
await page.getByRole('button', { name: 'Create a passkey' }).click();

// Read back the passkey the page registered — it includes the private key.
const [credential] = await context.credentials.get({ rpId: 'example.com' });
fs.writeFileSync('playwright/.auth/passkey.json', JSON.stringify(credential));
// later test: seed the captured passkey so the app starts already enrolled.
const credential = JSON.parse(fs.readFileSync('playwright/.auth/passkey.json', 'utf8'));
const context = await browser.newContext();
await context.credentials.create(credential.rpId, credential);
await context.credentials.install();

const page = await context.newPage();
await page.goto('https://example.com/login');
// navigator.credentials.get() resolves the captured passkey — already signed in.

Использование: сохранение учетных данных в состоянии хранилища и последующее восстановление

Примеры сохранения и восстановления состояния хранилища см. в руководстве по аутентификации.

Значения по умолчанию

Методы​

create​

Создает виртуальные учетные данные WebAuthn и возвращает их.

Если указать только rpId, создаются новая пара ключей ECDSA P-256, идентификатор учетных данных и дескриптор пользователя. Созданные учетные данные доступны для обнаружения (резидентные), поэтому страница может найти их как при входе по имени пользователя и ключу доступа, так и при входе по ключу доступа без имени пользователя. Возвращаемый объект содержит закрытый и открытый ключи, поэтому его можно сохранить на диске и использовать для создания учетных данных в последующем тесте.

Чтобы импортировать известные учетные данные, укажите вместе все четыре параметра: id, userHandle, privateKey и publicKey.

Вызовите credentials.install() до перехода на страницу, использующую WebAuthn.

Использование

await credentials.create(rpId);
await credentials.create(rpId, options);

Аргументы

  • rpId string

    Идентификатор проверяющей стороны (обычно эффективный домен сайта).

  • options Object (необязательно)

    • id string (необязательно)

      Идентификатор учетных данных в кодировке Base64url. Создается автоматически, если не указан.

    • privateKey string (необязательно)

      Закрытый ключ PKCS#8 (DER) в кодировке Base64url. Создается автоматически, если не указан.

    • publicKey string (необязательно)

      Открытый ключ SPKI (DER) в кодировке Base64url. Создается автоматически, если не указан.

    • userHandle string (необязательно)

      Дескриптор пользователя в кодировке Base64url. Создается автоматически, если не указан.

Возвращает

  • Promise<Object>
    • id string

      Идентификатор учетных данных в кодировке Base64url.

    • rpId string

      Идентификатор проверяющей стороны.

    • userHandle string

      Дескриптор пользователя в кодировке Base64url.

    • privateKey string

      Закрытый ключ PKCS#8 (DER) в кодировке Base64url.

    • publicKey string

      Открытый ключ SPKI (DER) в кодировке Base64url.

delete​

Удаляет учетные данные из аутентификатора по их идентификатору. Работает с любыми имеющимися учетными данными — как созданными с помощью credentials.create(), так и зарегистрированными самой страницей вызовом navigator.credentials.create().

Использование

await credentials.delete(id);

Аргументы

  • id string

    Идентификатор учетных данных в кодировке Base64url.

Возвращает

  • Promise<void>

get​

Возвращает все учетные данные, имеющиеся у аутентификатора, с возможностью фильтрации по rpId или id. Сюда входят как учетные данные, созданные с помощью credentials.create(), так и зарегистрированные самой страницей вызовом navigator.credentials.create().

Каждый возвращаемый объект учетных данных содержит закрытый и открытый ключи, поэтому только что зарегистрированный приложением ключ доступа можно сохранить и создать заново в последующем тесте с помощью credentials.create() — см. второй пример в обзоре класса.

Использование

await credentials.get();
await credentials.get(options);

Аргументы

  • options Object (необязательно)
    • id string (необязательно)

      Возвращает только учетные данные с этим идентификатором в кодировке Base64url.

    • rpId string (необязательно)

      Возвращает только учетные данные для этого идентификатора проверяющей стороны.

Возвращает

  • Promise<Array<Object>>
    • id string

    • rpId string

    • userHandle string

    • privateKey string

    • publicKey string

install​

Устанавливает виртуальный аутентификатор WebAuthn в контекст, переопределяя navigator.credentials.create() и navigator.credentials.get() во всех текущих и будущих страницах. Вызовите этот метод до первого обращения страницы к navigator.credentials.

Важно: пока не будет вызван credentials.install(), перехват не выполняется, и страница использует встроенное поведение WebAuthn платформы (или не использует WebAuthn, если он недоступен). Создание учетных данных с помощью credentials.create() без установки метода добавляет их в аутентификатор, но страница их не увидит.

Использование

await credentials.install();

Возвращает

  • Promise<void>

© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-credentials

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API