Seeds a virtual WebAuthn credential and returns it.
With only rpId, generates a
fresh ECDSA P-256 keypair, credential id and user handle. The seeded credential is discoverable (resident), so
the page can resolve it from both username-then-passkey and usernameless passkey flows. The returned object carries
the private and public keys, so it can be persisted to disk and re-seeded in a later test.
To import a known credential, supply all four of
id,
userHandle,
privateKey and
publicKey together.
Call credentials.install() before navigating to a page that uses WebAuthn.
Relying party id (typically the site's effective domain).
Optionaloptions: { id?: string; privateKey?: string; publicKey?: string; userHandle?: string }
Optionalid?: stringBase64url-encoded credential id. Auto-generated if omitted.
OptionalprivateKey?: stringBase64url-encoded PKCS#8 (DER) private key. Auto-generated if omitted.
OptionalpublicKey?: stringBase64url-encoded SPKI (DER) public key. Auto-generated if omitted.
OptionaluserHandle?: stringBase64url-encoded user handle. Auto-generated if omitted.
Removes a credential from the authenticator by its id. Works for any credential currently held — both those seeded
with credentials.create(rpId[, options])
and those the page registered itself by calling navigator.credentials.create().
Base64url-encoded credential id.
Returns every credential currently held by the authenticator, optionally filtered by
rpId or
id. This includes both credentials
seeded with
credentials.create(rpId[, options]) and
credentials the page registered itself by calling navigator.credentials.create().
Each returned credential includes its private and public keys, so a passkey the app just registered can be saved and re-seeded into a later test with credentials.create(rpId[, options]) — see the second example in the class overview.
Optionaloptions: { id?: string; rpId?: string }
Optionalid?: stringOnly return the credential with this base64url-encoded id.
OptionalrpId?: stringOnly return credentials for this relying party id.
Installs the virtual WebAuthn authenticator into the context, overriding navigator.credentials.create() and
navigator.credentials.get() in all current and future pages. Call this before the page first touches
navigator.credentials.
Required: until credentials.install() is called, no interception is in place and the page sees the platform's native (or absent) WebAuthn behaviour. Seeding credentials with credentials.create(rpId[, options]) without installing populates the authenticator, but the page will never see those credentials.
Credentialsis a virtual WebAuthn authenticator scoped to a BrowserContext. It lets tests register passkeys and answernavigator.credentials.create()/navigator.credentials.get()ceremonies in the page, without a real authenticator or hardware security key.There are three common ways to use it:
Usage: seed a known credential
Usage: capture a credential, then reuse it
Usage: save credentials in the storage state, restore later
See authentication guide for examples of using saving and resotring the storage state.
Defaults