wpt.fyi logo web-platform-tests dashboard snapshot for /webauthn/

As of

This is a snapshot of web-platform-tests results. It is not maintained and developers should refer to wpt.fyi for the most current test results and other developments.

Tests

53 tests were found (415 subtests) in /webauthn/.

Implementations

Test Results

Jun 26, 2026
file namechromefirefoxsafariedge
§ conditional-mediation.https.html
Overall2 / 21 / 21 / 22 / 2
Harness statusOKOKOKOK
Conditional mediation supportedPASSPASSFAILPASS
Conditional create supportedPASSFAILPASSPASS
§ createcredential-abort.https.html
Overall6 / 66 / 66 / 66 / 6
Harness statusOKOKOKOK
navigator.credentials.create() after abort without reasonPASSPASSPASSPASS
navigator.credentials.create() before abort without reasonPASSPASSPASSPASS
navigator.credentials.create() after abort reasonPASSPASSPASSPASS
navigator.credentials.create() before abort reasonPASSPASSPASSPASS
navigator.credentials.create() after abort reason with ErrorPASSPASSPASSPASS
navigator.credentials.create() before abort reason with ErrorPASSPASSPASSPASS
§ createcredential-attachment.https.html
Overall4 / 44 / 43 / 44 / 4
Harness statusOKOKTIMEOUTOK
navigator.credentials.create() with usb authenticator, attachment as cross-platformPASSPASSPASSPASS
navigator.credentials.create() with ble authenticator, attachment as cross-platformPASSPASSPASSPASS
navigator.credentials.create() with nfc authenticator, attachment as cross-platformPASSPASSPASSPASS
navigator.credentials.create() with internal authenticator, attachment as platformPASSPASSTIMEOUTPASS
§ createcredential-badargs-authnrselection.https.html
Overall6 / 66 / 66 / 66 / 6
Harness statusOKOKOKOK
Bad AuthenticatorSelectionCriteria: authenticatorSelection is empty stringPASSPASSPASSPASS
Bad AuthenticatorSelectionCriteria: authenticatorSelection is stringPASSPASSPASSPASS
Bad AuthenticatorSelectionCriteria: authenticatorSelection attachment platformPASSPASSPASSPASS
Bad AuthenticatorSelectionCriteria: authenticatorSelection residentKey truePASSPASSPASSPASS
Bad AuthenticatorSelectionCriteria: authenticatorSelection userVerification requiredPASSPASSPASSPASS
Clean up the test environmentPASSPASSPASSPASS
§ createcredential-badargs-challenge.https.html
Overall6 / 66 / 66 / 66 / 6
Harness statusOKOKOKOK
Bad challenge: challenge missingPASSPASSPASSPASS
Bad challenge: challenge is stringPASSPASSPASSPASS
Bad challenge: challenge is nullPASSPASSPASSPASS
Bad challenge: challenge is empty objectPASSPASSPASSPASS
Bad challenge: challenge is empty ArrayPASSPASSPASSPASS
Clean up the test environmentPASSPASSPASSPASS
§ createcredential-badargs-rp.https.html
Overall12 / 1212 / 124 / 120 / 0
Harness statusOKOKTIMEOUTERROR
Bad rp: rp missingPASSPASSPASSmissing
Bad rp: rp nullPASSPASSPASSmissing
Bad rp: rp is stringPASSPASSPASSmissing
Bad rp: rp is empty objectPASSPASSPASSmissing
Bad rp: id is nullPASSPASSFAILmissing
Bad rp: id is empty StringPASSPASSTIMEOUTmissing
Bad rp: id is invalid domain (has space)PASSPASSNOTRUNmissing
Bad rp: id is invalid domain (starts with dash)PASSPASSNOTRUNmissing
Bad rp: id is invalid domain (starts with number)PASSPASSNOTRUNmissing
Bad rp id: id is host + portPASSPASSNOTRUNmissing
rp missing namePASSPASSNOTRUNmissing
Clean up the test environmentPASSPASSNOTRUNmissing
§ createcredential-badargs-user.https.html
Overall17 / 1717 / 1717 / 1717 / 17
Harness statusOKOKOKOK
Bad user: user missingPASSPASSPASSPASS
Bad user: user is stringPASSPASSPASSPASS
Bad user: user is empty objectPASSPASSPASSPASS
Bad user: id is undefinedPASSPASSPASSPASS
Bad user: id is objectPASSPASSPASSPASS
Bad user: id is nullPASSPASSPASSPASS
Bad user: id is empty StringPASSPASSPASSPASS
Bad user: id is empty ArrayPASSPASSPASSPASS
Bad user: ArrayBuffer id is too long (65 bytes)PASSPASSPASSPASS
Bad user: Int16Array id is too long (66 bytes)PASSPASSPASSPASS
Bad user: Int32Array id is too long (68 bytes)PASSPASSPASSPASS
Bad user: Float32Array id is too long (68 bytes)PASSPASSPASSPASS
Bad user: Float64Array id is too long (72 bytes)PASSPASSPASSPASS
Bad user: id is too long (65 bytes)PASSPASSPASSPASS
user missing namePASSPASSPASSPASS
Bad user: displayName is undefinedPASSPASSPASSPASS
Clean up the test environmentPASSPASSPASSPASS
§ createcredential-clientdata.https.html
Overall2 / 22 / 21 / 22 / 2
Harness statusOKOKOKOK
navigator.credentials.create() has valid clientDataPASSPASSFAILPASS
Clean up the test environmentPASSPASSPASSPASS
§ createcredential-cross-origin-iframe.https.sub.html
Overall5 / 55 / 54 / 55 / 5
Harness statusOKOKOKOK
create() in cross-origin iframe fails without permissions policyPASSPASSPASSPASS
create() in cross-origin iframe fails with permissions policy but no user activationPASSPASSPASSPASS
create() in cross-origin iframe succeeds with permissions policy and user activationPASSPASSFAILPASS
create() in cross-origin iframe requires user activation on the iframe, not the main framePASSPASSPASSPASS
Clean up the test environmentPASSPASSPASSPASS
§ createcredential-excludecredentials.https.html
Overall7 / 77 / 76 / 77 / 7
Harness statusOKOKOKOK
Bad excludeCredentials: stringPASSPASSPASSPASS
Bad excludeCredentials: empty objectPASSPASSPASSPASS
excludeCredentials missingPASSPASSPASSPASS
excludeCredentials empty arrayPASSPASSPASSPASS
exclude existing credentialPASSPASSFAILPASS
exclude random (non-existing) credentialPASSPASSPASSPASS
Clean up the test environmentPASSPASSPASSPASS
§ createcredential-extensions.https.html
Overall7 / 76 / 73 / 77 / 7
Harness statusOKOKOKOK
Bad extensions: extensions is stringPASSPASSPASSPASS
extensions is a nonsensical JSON stringPASSPASSPASSPASS
empty appid in create requestPASSPASSFAILPASS
null appid in create requestPASSPASSFAILPASS
appid in create requestPASSPASSFAILPASS
navigator.credentials.create() with prf requested but no support in authenticatorPASSFAILFAILPASS
Clean up the test environmentPASSPASSPASSPASS
§ createcredential-getpublickey.https.html
Overall2 / 22 / 22 / 22 / 2
Harness statusOKOKOKOK
WebAuthn getPublicKeyPASSPASSPASSPASS
Clean up the test environmentPASSPASSPASSPASS
§ createcredential-hints.https.html
Overall2 / 22 / 22 / 22 / 2
Harness statusOKOKOKOK
WebAuthn createWithHintsPASSPASSPASSPASS
Clean up the test environmentPASSPASSPASSPASS
§ createcredential-large-blob-not-supported.https.html
Overall6 / 63 / 61 / 66 / 6
Harness statusOKOKOKOK
navigator.credentials.create() with largeBlob.write setPASSPASSFAILPASS
navigator.credentials.create() with largeBlob.read setPASSPASSFAILPASS
navigator.credentials.create() with largeBlob.support set to preferred and not supported by authenticatorPASSFAILFAILPASS
navigator.credentials.create() with largeBlob.support not set and not supported by authenticatorPASSFAILFAILPASS
navigator.credentials.create() with largeBlob.support set to required and not supported by authenticatorPASSFAILFAILPASS
Clean up the test environmentPASSPASSPASSPASS
§ createcredential-large-blob-supported.https.html
Overall4 / 41 / 41 / 44 / 4
Harness statusOKOKOKOK
navigator.credentials.create() with largeBlob.support set to preferred and supported by authenticatorPASSFAILFAILPASS
navigator.credentials.create() with largeBlob.support not set and supported by authenticatorPASSFAILFAILPASS
navigator.credentials.create() with largeBlob.support set to required and supported by authenticatorPASSFAILFAILPASS
Clean up the test environmentPASSPASSPASSPASS
§ createcredential-minpinlength.https.html
Overall2 / 22 / 21 / 22 / 2
Harness statusOKOKOKOK
navigator.credentials.create() with minPinLength requestedPASSPASSFAILPASS
Clean up the test environmentPASSPASSPASSPASS
§ createcredential-nested-frame.https.html
Overall5 / 54 / 51 / 55 / 5
Harness statusOKOKOKOK
navigator.credentials.create({publicKey}) in a javascript url should should succeed.PASSPASSFAILPASS
navigator.credentials.create({publicKey}) in srcdoc should succeed.PASSPASSFAILPASS
navigator.credentials.create({publicKey}) in about:blank embedded in a secure context should succeed.PASSFAILFAILPASS
navigator.credentials.create({publicKey}) in a same-origin frame should succeed without requiring us…PASSPASSFAILPASS
Clean up the test environmentPASSPASSPASSPASS
§ createcredential-passing.https.html
Overall50 / 5050 / 5049 / 5050 / 50
Harness statusOKOKOKOK
passing credentials.create() with default argumentsPASSPASSPASSPASS
passing credentials.create() with rpId (hostname)PASSPASSPASSPASS
very short user idPASSPASSPASSPASS
max length user idPASSPASSPASSPASS
Uint8Array user idPASSPASSPASSPASS
Int8Array user idPASSPASSPASSPASS
Int16Array user idPASSPASSPASSPASS
Int32Array user idPASSPASSPASSPASS
Float32Array user idPASSPASSPASSPASS
DataView user idPASSPASSPASSPASS
Int16Array challengePASSPASSPASSPASS
Int32Array challengePASSPASSPASSPASS
Float32Array challengePASSPASSPASSPASS
Float64Array challengePASSPASSPASSPASS
DataView challengePASSPASSPASSPASS
Absurdly large challengePASSPASSPASSPASS
pubKeyCredParams is empty ArrayPASSPASSPASSPASS
EC256 pubKeyCredParamsPASSPASSPASSPASS
SelectEC256 pubKeyCredParams from a listPASSPASSPASSPASS
pubKeyCredParams with unknown valuePASSPASSFAILPASS
passing credentials.create() with no timeoutPASSPASSPASSPASS
authenticatorSelection is undefinedPASSPASSPASSPASS
authenticatorSelection is empty objectPASSPASSPASSPASS
authenticatorSelection default valuesPASSPASSPASSPASS
authenticatorSelection attachment undefinedPASSPASSPASSPASS
authenticatorSelection attachment empty stringPASSPASSPASSPASS
authenticatorSelection attachment empty objectPASSPASSPASSPASS
authenticatorSelection attachment nullPASSPASSPASSPASS
authenticatorSelection attachment unknown valuePASSPASSPASSPASS
authenticatorSelection residentKey undefinedPASSPASSPASSPASS
authenticatorSelection residentKey falsePASSPASSPASSPASS
authenticatorSelection userVerification undefinedPASSPASSPASSPASS
authenticatorSelection userVerification discouragedPASSPASSPASSPASS
authenticatorSelection userVerification empty stringPASSPASSPASSPASS
authenticatorSelection userVerification empty objectPASSPASSPASSPASS
authenticatorSelection userVerification unknown valuePASSPASSPASSPASS
authenticatorSelection userVerification nullPASSPASSPASSPASS
attestation parameter: attestation is "none"PASSPASSPASSPASS
attestation parameter: attestation is "indirect"PASSPASSPASSPASS
attestation parameter: attestation is "direct"PASSPASSPASSPASS
attestation parameter: attestation is undefinedPASSPASSPASSPASS
attestation parameter: attestation is empty objectPASSPASSPASSPASS
attestation parameter: attestation is empty arrayPASSPASSPASSPASS
attestation parameter: attestation is nullPASSPASSPASSPASS
attestation parameter: attestation is "noneofyourbusiness"PASSPASSPASSPASS
attestation parameter: attestation is empty stringPASSPASSPASSPASS
extensions undefinedPASSPASSPASSPASS
extensions are empty objectPASSPASSPASSPASS
extensions are dict of empty stringsPASSPASSPASSPASS
Clean up the test environmentPASSPASSPASSPASS
§ createcredential-prf.https.html
Overall4 / 43 / 41 / 44 / 4
Harness statusOKOKOKOK
navigator.credentials.create() with prf requestedPASSPASSFAILPASS
navigator.credentials.create() with nonsensical evalByCredentialPASSPASSFAILPASS
navigator.credentials.create() with evalPASSFAILFAILPASS
Clean up the test environmentPASSPASSPASSPASS
§ createcredential-pubkeycredparams.https.html
Overall10 / 1010 / 104 / 1010 / 10
Harness statusOKOKOKOK
Bad pubKeyCredParams: pubKeyCredParams is undefinedPASSPASSPASSPASS
Bad pubKeyCredParams: pubKeyCredParams is stringPASSPASSPASSPASS
Bad pubKeyCredParams: pubKeyCredParams is nullPASSPASSPASSPASS
Bad pubKeyCredParams: first param has bad type ("something-else")PASSPASSFAILPASS
Bad pubKeyCredParams: first param has bad type ("")PASSPASSFAILPASS
Bad pubKeyCredParams: first param has bad type (null)PASSPASSFAILPASS
Bad pubKeyCredParams: first param has bad type (empty object)PASSPASSFAILPASS
Bad pubKeyCredParams: first param has bad alg (42)PASSPASSFAILPASS
Bad pubKeyCredParams: first param has bad alg (0)PASSPASSFAILPASS
Clean up the test environmentPASSPASSPASSPASS
§ createcredential-resident-key.https.html
Overall15 / 1514 / 152 / 1515 / 15
Harness statusOKOKTIMEOUTOK
U2F: navigator.credentials.create() with credProps extension, rk=discouragedPASSPASSPASSPASS
U2F: navigator.credentials.create() with credProps extension, rk=preferredPASSPASSPASSPASS
U2F: navigator.credentials.create() with credProps extension, rk=requiredPASSPASSTIMEOUTPASS
CTAP 2.0 without resident key support: navigator.credentials.create() with credProps extension, rk=discouragedPASSPASSNOTRUNPASS
CTAP 2.0 without resident key support: navigator.credentials.create() with credProps extension, rk=preferredPASSPASSNOTRUNPASS
CTAP 2.0 without resident key support: navigator.credentials.create() with credProps extension, rk=requiredPASSPASSNOTRUNPASS
CTAP 2.0 with resident key support: navigator.credentials.create() with credProps extension, rk=discouragedPASSFAILNOTRUNPASS
CTAP 2.0 with resident key support: navigator.credentials.create() with credProps extension, rk=preferredPASSPASSNOTRUNPASS
CTAP 2.0 with resident key support: navigator.credentials.create() with credProps extension, rk=requiredPASSPASSNOTRUNPASS
CTAP 2.1 without resident key support: navigator.credentials.create() with credProps extension, rk=discouragedPASSPASSNOTRUNPASS
CTAP 2.1 without resident key support: navigator.credentials.create() with credProps extension, rk=preferredPASSPASSNOTRUNPASS
CTAP 2.1 without resident key support: navigator.credentials.create() with credProps extension, rk=requiredPASSPASSNOTRUNPASS
CTAP 2.1 with resident key support: navigator.credentials.create() with credProps extension, rk=discouragedPASSPASSNOTRUNPASS
CTAP 2.1 with resident key support: navigator.credentials.create() with credProps extension, rk=preferredPASSPASSNOTRUNPASS
CTAP 2.1 with resident key support: navigator.credentials.create() with credProps extension, rk=requiredPASSPASSNOTRUNPASS
§ createcredential-timeout.https.html
Overall1 / 11 / 10 / 11 / 1
Harness statusOKOKOKOK
ensure create credential times outPASSPASSFAILPASS
§ credblob-not-supported.https.html
Overall1 / 10 / 10 / 11 / 1
Harness statusOKOKOKOK
creation requesting credBlob without authenticator supportPASSFAILFAILPASS
§ credblob-supported.https.html
Overall2 / 20 / 20 / 22 / 2
Harness statusOKOKOKOK
assertion without credBlobPASSFAILFAILPASS
assertion with credBlobPASSFAILFAILPASS
§ getclientcapabilities.https.html
Overall2 / 22 / 21 / 22 / 2
Harness statusOKOKOKOK
Capabilities object has sorted keys and boolean valuesPASSPASSPASSPASS
Capabilities keys are knownPASSPASSFAILPASS
§ getcredential-abort.https.html
Overall6 / 66 / 61 / 66 / 6
Harness statusOKOKTIMEOUTOK
navigator.credentials.get() after abort without reasonPASSPASSPASSPASS
navigator.credentials.get() before abort without reasonPASSPASSTIMEOUTPASS
navigator.credentials.get() after abort reasonPASSPASSNOTRUNPASS
navigator.credentials.get() before abort reasonPASSPASSNOTRUNPASS
navigator.credentials.get() after abort reason with ErrorPASSPASSNOTRUNPASS
navigator.credentials.get() before abort reason with ErrorPASSPASSNOTRUNPASS
§ getcredential-allowcredentials.https.html
Overall6 / 66 / 61 / 66 / 6
Harness statusOKOKTIMEOUTOK
navigator.credentials.get() with public-key allowCredentials.PASSPASSPASSPASS
navigator.credentials.get() with empty allowCredentials.PASSPASSTIMEOUTPASS
navigator.credentials.get() with unknown allowCredentials.PASSPASSNOTRUNPASS
navigator.credentials.get() with mixing allowCredentials with first unknown type.PASSPASSNOTRUNPASS
navigator.credentials.get() with mixing allowCredentials with last unknown type.PASSPASSNOTRUNPASS
Clean up the test environmentPASSPASSNOTRUNPASS
§ getcredential-attachment.https.html
Overall4 / 44 / 43 / 44 / 4
Harness statusOKOKTIMEOUTOK
navigator.credentials.get() with usb authenticator, attachment as cross-platformPASSPASSPASSPASS
navigator.credentials.get() with ble authenticator, attachment as cross-platformPASSPASSPASSPASS
navigator.credentials.get() with nfc authenticator, attachment as cross-platformPASSPASSPASSPASS
navigator.credentials.get() with internal authenticator, attachment as platformPASSPASSTIMEOUTPASS
§ getcredential-badargs-rpid.https.html
Overall7 / 77 / 70 / 77 / 7
Harness statusOKOKTIMEOUTOK
Bad rpId: empty stringPASSPASSFAILPASS
Bad rpId: nullPASSPASSTIMEOUTPASS
Bad rpId: invalid domain (has space)PASSPASSNOTRUNPASS
Bad rpId: invalid domain (starts with dash)PASSPASSNOTRUNPASS
Bad rpId: invalid domain (starts with number)PASSPASSNOTRUNPASS
Bad rpId: host + portPASSPASSNOTRUNPASS
Clean up the test environmentPASSPASSNOTRUNPASS
§ getcredential-badargs-userverification.https.html
Overall2 / 22 / 21 / 22 / 2
Harness statusOKOKOKOK
Bad userVerification: "required"PASSPASSFAILPASS
Clean up the test environmentPASSPASSPASSPASS
§ getcredential-extensions.https.html
Overall10 / 109 / 107 / 1010 / 10
Harness statusOKOKOKOK
Bad extensions: extensions is stringPASSPASSPASSPASS
extensions is nullPASSPASSPASSPASS
extensions is empty ArrayPASSPASSPASSPASS
extensions is empty ArrayBufferPASSPASSPASSPASS
ignored extensionPASSPASSPASSPASS
extension ID too longPASSPASSPASSPASS
credProps is only supported at registrationPASSPASSFAILPASS
Payment extension is only supported at registrationPASSFAILFAILPASS
navigator.credentials.get() with prf requested but no support in authenticatorPASSPASSFAILPASS
Clean up the test environmentPASSPASSPASSPASS
§ getcredential-hints.https.html
Overall2 / 22 / 22 / 22 / 2
Harness statusOKOKOKOK
navigator.credentials.get with hintsPASSPASSPASSPASS
Clean up the test environmentPASSPASSPASSPASS
§ getcredential-large-blob-not-supported.https.html
Overall5 / 54 / 51 / 55 / 5
Harness statusOKOKOKOK
navigator.credentials.get() with largeBlob.support setPASSPASSFAILPASS
navigator.credentials.get() with largeBlob.read and largeBlob.write setPASSPASSFAILPASS
navigator.credentials.get() with largeBlob.read set without authenticator supportPASSPASSFAILPASS
navigator.credentials.get() with largeBlob.write set without authenticator supportPASSFAILFAILPASS
Clean up the test environmentPASSPASSPASSPASS
§ getcredential-large-blob-supported.https.html
Overall3 / 32 / 31 / 33 / 3
Harness statusOKOKOKOK
navigator.credentials.get() with largeBlob.read set with no blob on authenticatorPASSPASSFAILPASS
navigator.credentials.get() read and write blobPASSFAILFAILPASS
Clean up the test environmentPASSPASSPASSPASS
§ getcredential-nested-frame.https.html
Overall6 / 65 / 62 / 66 / 6
Harness statusOKOKOKOK
Setup: create a credential to test withPASSPASSPASSPASS
navigator.credentials.get({publicKey}) in a javascript url should should succeed.PASSPASSFAILPASS
navigator.credentials.get({publicKey}) in srcdoc should succeed.PASSPASSFAILPASS
navigator.credentials.get({publicKey}) in about:blank embedded in a secure context should succeed.PASSFAILFAILPASS
navigator.credentials.get({publicKey}) in a same-origin frame should succeed without requiring user …PASSPASSFAILPASS
Clean up the test environmentPASSPASSPASSPASS
§ getcredential-passing.https.html
Overall15 / 1515 / 1515 / 1515 / 15
Harness statusOKOKOKOK
passing credentials.get() with default argsPASSPASSPASSPASS
passing credentials.create() with no timeoutPASSPASSPASSPASS
rpId undefinedPASSPASSPASSPASS
passing credentials.get() with rpId (hostname)PASSPASSPASSPASS
authenticatorSelection userVerification undefinedPASSPASSPASSPASS
authenticatorSelection userVerification preferredPASSPASSPASSPASS
authenticatorSelection userVerification discouragedPASSPASSPASSPASS
authenticatorSelection userVerification empty stringPASSPASSPASSPASS
authenticatorSelection userVerification empty objectPASSPASSPASSPASS
authenticatorSelection userVerification unknown valuePASSPASSPASSPASS
authenticatorSelection userVerification nullPASSPASSPASSPASS
extensions undefinedPASSPASSPASSPASS
extensions are empty objectPASSPASSPASSPASS
extensions are dict of empty stringsPASSPASSPASSPASS
Clean up the test environmentPASSPASSPASSPASS
§ getcredential-prf.https.html
Overall10 / 1010 / 100 / 1010 / 10
Harness statusOKOKTIMEOUTOK
navigator.credentials.get() with single evaluation pointPASSPASSFAILPASS
navigator.credentials.get() with two equal evaluation pointsPASSPASSFAILPASS
navigator.credentials.get() with two distinct evaluation pointsPASSPASSFAILPASS
navigator.credentials.get() using credential ID with one evaluation pointPASSPASSFAILPASS
navigator.credentials.get() using credential ID with two evaluation pointsPASSPASSFAILPASS
navigator.credentials.get() with credential ID not in allowedCredentialsPASSPASSFAILPASS
navigator.credentials.get() with Uint8Array credential ID not in allowedCredentialsPASSPASSFAILPASS
navigator.credentials.get() using invalid base64url credential IDPASSPASSFAILPASS
navigator.credentials.get() with an empty allow list but also using evalByCredentialPASSPASSTIMEOUTPASS
Clean up the test environmentPASSPASSNOTRUNPASS
§ getcredential-rk-passing.https.html
Overall3 / 33 / 33 / 33 / 3
Harness statusOKOKOKOK
empty allowCredentialsPASSPASSPASSPASS
undefined allowCredentialsPASSPASSPASSPASS
Clean up the test environmentPASSPASSPASSPASS
§ getcredential-timeout.https.html
Overall1 / 11 / 10 / 11 / 1
Harness statusOKOKOKOK
WebAuthn navigator.credentials.get() timeout TestsPASSPASSFAILPASS
§ getcredential-ui-mode-immediate.https.html
Overall6 / 64 / 60 / 66 / 6
Harness statusOKTIMEOUTTIMEOUTOK
Immediate mediation (optional) with a resident credentialPASSPASSTIMEOUTPASS
Immediate mediation (required) with a resident credentialPASSPASSNOTRUNPASS
Immediate mediation fails if allowCredentials is not emptyPASSFAILNOTRUNPASS
Immediate mediation fails without user activationPASSPASSNOTRUNPASS
Immediate mediation (optional) with no credentialsPASSPASSNOTRUNPASS
Immediate mediation is incompatible with conditional mediationPASSTIMEOUTNOTRUNPASS
§ idlharness.https.window.html
Overall114 / 114111 / 114113 / 114114 / 114
Harness statusOKOKOKOK
idl_test setupPASSPASSPASSPASS
idl_test validationPASSPASSPASSPASS
Partial dictionary CredentialCreationOptions: original dictionary definedPASSPASSPASSPASS
Partial dictionary CredentialCreationOptions: member names are uniquePASSPASSPASSPASS
Partial dictionary CredentialRequestOptions: original dictionary definedPASSPASSPASSPASS
Partial dictionary CredentialRequestOptions: member names are uniquePASSPASSPASSPASS
Partial interface PublicKeyCredential: original interface definedPASSPASSPASSPASS
Partial interface PublicKeyCredential: member names are uniquePASSPASSPASSPASS
Partial interface PublicKeyCredential[2]: original interface definedPASSPASSPASSPASS
Partial interface PublicKeyCredential[2]: member names are uniquePASSPASSPASSPASS
Partial interface PublicKeyCredential[3]: original interface definedPASSPASSPASSPASS
Partial interface PublicKeyCredential[3]: member names are uniquePASSPASSPASSPASS
Partial interface PublicKeyCredential[4]: original interface definedPASSPASSPASSPASS
Partial interface PublicKeyCredential[4]: member names are uniquePASSPASSPASSPASS
Partial interface PublicKeyCredential[5]: original interface definedPASSPASSPASSPASS
Partial interface PublicKeyCredential[5]: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputs: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputs: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputsJSON: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputsJSON: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputs: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputs: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputsJSON: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputsJSON: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputs[2]: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputs[2]: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputsJSON[2]: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputsJSON[2]: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputs[2]: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputs[2]: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputsJSON[2]: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputsJSON[2]: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputs[3]: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputs[3]: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputsJSON[3]: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputsJSON[3]: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputs[3]: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputs[3]: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputsJSON[3]: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputsJSON[3]: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputs[4]: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputs[4]: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputsJSON[4]: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputsJSON[4]: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputs[4]: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputs[4]: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputsJSON[4]: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputsJSON[4]: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputs[5]: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputs[5]: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputsJSON[5]: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputsJSON[5]: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputs[5]: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputs[5]: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputsJSON[5]: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputsJSON[5]: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputs[6]: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputs[6]: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputsJSON[6]: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientInputsJSON[6]: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputs[6]: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputs[6]: member names are uniquePASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputsJSON[6]: original dictionary definedPASSPASSPASSPASS
Partial dictionary AuthenticationExtensionsClientOutputsJSON[6]: member names are uniquePASSPASSPASSPASS
Partial dictionary CredentialRequestOptions[2]: member names are uniquePASSPASSPASSPASS
Partial dictionary CredentialCreationOptions[2]: member names are uniquePASSPASSPASSPASS
Partial dictionary CredentialRequestOptions[3]: member names are uniquePASSPASSPASSPASS
Partial dictionary CredentialCreationOptions[3]: member names are uniquePASSPASSPASSPASS
PublicKeyCredential interface: existence and properties of interface objectPASSPASSPASSPASS
PublicKeyCredential interface object lengthPASSPASSPASSPASS
PublicKeyCredential interface object namePASSPASSPASSPASS
PublicKeyCredential interface: existence and properties of interface prototype objectPASSPASSPASSPASS
PublicKeyCredential interface: existence and properties of interface prototype object's "constructor" propertyPASSPASSPASSPASS
PublicKeyCredential interface: existence and properties of interface prototype object's @@unscopables propertyPASSPASSPASSPASS
PublicKeyCredential interface: attribute rawIdPASSPASSPASSPASS
PublicKeyCredential interface: attribute responsePASSPASSPASSPASS
PublicKeyCredential interface: attribute authenticatorAttachmentPASSPASSPASSPASS
PublicKeyCredential interface: operation getClientExtensionResults()PASSPASSPASSPASS
PublicKeyCredential interface: operation isConditionalMediationAvailable()PASSPASSFAILPASS
PublicKeyCredential interface: operation toJSON()PASSPASSPASSPASS
PublicKeyCredential interface: operation isUserVerifyingPlatformAuthenticatorAvailable()PASSPASSPASSPASS
PublicKeyCredential interface: operation getClientCapabilities()PASSPASSPASSPASS
PublicKeyCredential interface: operation parseCreationOptionsFromJSON(PublicKeyCredentialCreationOptionsJSON)PASSPASSPASSPASS
PublicKeyCredential interface: operation parseRequestOptionsFromJSON(PublicKeyCredentialRequestOptionsJSON)PASSPASSPASSPASS
PublicKeyCredential interface: operation signalUnknownCredential(UnknownCredentialOptions)PASSFAILPASSPASS
PublicKeyCredential interface: operation signalAllAcceptedCredentials(AllAcceptedCredentialsOptions)PASSFAILPASSPASS
PublicKeyCredential interface: operation signalCurrentUserDetails(CurrentUserDetailsOptions)PASSFAILPASSPASS
AuthenticatorResponse interface: existence and properties of interface objectPASSPASSPASSPASS
AuthenticatorResponse interface object lengthPASSPASSPASSPASS
AuthenticatorResponse interface object namePASSPASSPASSPASS
AuthenticatorResponse interface: existence and properties of interface prototype objectPASSPASSPASSPASS
AuthenticatorResponse interface: existence and properties of interface prototype object's "construct…PASSPASSPASSPASS
AuthenticatorResponse interface: existence and properties of interface prototype object's @@unscopab…PASSPASSPASSPASS
AuthenticatorResponse interface: attribute clientDataJSONPASSPASSPASSPASS
AuthenticatorAttestationResponse interface: existence and properties of interface objectPASSPASSPASSPASS
AuthenticatorAttestationResponse interface object lengthPASSPASSPASSPASS
AuthenticatorAttestationResponse interface object namePASSPASSPASSPASS
AuthenticatorAttestationResponse interface: existence and properties of interface prototype objectPASSPASSPASSPASS
AuthenticatorAttestationResponse interface: existence and properties of interface prototype object's…PASSPASSPASSPASS
AuthenticatorAttestationResponse interface: existence and properties of interface prototype object's…PASSPASSPASSPASS
AuthenticatorAttestationResponse interface: attribute attestationObjectPASSPASSPASSPASS
AuthenticatorAttestationResponse interface: operation getTransports()PASSPASSPASSPASS
AuthenticatorAttestationResponse interface: operation getAuthenticatorData()PASSPASSPASSPASS
AuthenticatorAttestationResponse interface: operation getPublicKey()PASSPASSPASSPASS
AuthenticatorAttestationResponse interface: operation getPublicKeyAlgorithm()PASSPASSPASSPASS
AuthenticatorAssertionResponse interface: existence and properties of interface objectPASSPASSPASSPASS
AuthenticatorAssertionResponse interface object lengthPASSPASSPASSPASS
AuthenticatorAssertionResponse interface object namePASSPASSPASSPASS
AuthenticatorAssertionResponse interface: existence and properties of interface prototype objectPASSPASSPASSPASS
AuthenticatorAssertionResponse interface: existence and properties of interface prototype object's "…PASSPASSPASSPASS
AuthenticatorAssertionResponse interface: existence and properties of interface prototype object's @…PASSPASSPASSPASS
AuthenticatorAssertionResponse interface: attribute authenticatorDataPASSPASSPASSPASS
AuthenticatorAssertionResponse interface: attribute signaturePASSPASSPASSPASS
AuthenticatorAssertionResponse interface: attribute userHandlePASSPASSPASSPASS
§ isuserverifyingplatformauthenticatoravailable.https.html
Overall3 / 31 / 32 / 33 / 3
Harness statusOKOKOKOK
No platform authenticatorPASSFAILPASSPASS
Non-user-verifying platform authenticatorPASSFAILPASSPASS
User verifying platform authenticatorPASSPASSFAILPASS
§ public-key-credential-creation-options-from-json.https.window.html
Overall4 / 44 / 44 / 44 / 4
Harness statusOKOKOKOK
parseCreationOptionsFromJSON()PASSPASSPASSPASS
parseCreationOptionsFromJSON() throws EncodingErrorPASSPASSPASSPASS
parseCreationOptionsFromJSON() with extensionsPASSPASSPASSPASS
parseCreationOptionsFromJSON() with duplicated hintsPASSPASSPASSPASS
§ public-key-credential-request-options-from-json.https.window.html
Overall2 / 22 / 22 / 22 / 2
Harness statusOKOKOKOK
parseRequestOptionsFromJSON()PASSPASSPASSPASS
parseRequestOptionsFromJSON() with extensionsPASSPASSPASSPASS
§ public-key-credential-to-json.https.window.html
Overall1 / 10 / 10 / 11 / 1
Harness statusOKOKOKOK
toJSON()PASSFAILFAILPASS
§ securecontext.http.html
Overall1 / 11 / 11 / 11 / 1
Harness statusOKOKOKOK
no navigator.credentials.create in non-secure contextPASSPASSPASSPASS
§ securecontext.https.html
Overall1 / 11 / 11 / 11 / 1
Harness statusOKOKOKOK
navigator.credentials.create exists in secure contextPASSPASSPASSPASS
§ signal-all-accepted-credentials.https.html
Overall8 / 80 / 84 / 88 / 8
Harness statusOKOKOKOK
signalAllAcceptedCredentials fails with SecurityError for invalid RP IDsPASSFAILPASSPASS
signalAllAcceptedCredentials fails with TypeError for invalid userId base64urlPASSFAILFAILPASS
signalAllAcceptedCredentials fails with TypeError for invalid credential base64urlPASSFAILFAILPASS
signalAllAcceptedCredentials does not remove a credential for a different user idPASSFAILPASSPASS
signalAllAcceptedCredentials does not remove a credential if present on the listPASSFAILPASSPASS
signalAllAcceptedCredentials removes a credential present on the list for the correct userPASSFAILFAILPASS
signalAllAcceptedCredentials with unrecognized credentials removes existing credentialPASSFAILFAILPASS
signalAllAcceptedCredentials with recognized and unrecognized credentials keeps the existing credentialPASSFAILPASSPASS
§ signal-current-user-details.https.html
Overall4 / 40 / 41 / 44 / 4
Harness statusOKOKOKOK
signalCurrentUserDetails fails with SecurityError for invalid RP IDsPASSFAILPASSPASS
signalCurrentUserDetails fails with TypeError for invalid userId base64urlPASSFAILFAILPASS
signalCurrentUserDetails does not update a different user idPASSFAILFAILPASS
signalCurrentUserDetails updates a matching user idPASSFAILFAILPASS
§ signal-unknown-credential.https.html
Overall4 / 40 / 41 / 44 / 4
Harness statusOKOKTIMEOUTOK
signalUnknownCredential fails with SecurityError for invalid RP IDsPASSFAILPASSPASS
signalUnknownCredential fails with TypeError for invalid base64urlPASSFAILFAILPASS
signalUnknownCredential does not remove a credential that does not match the IDPASSFAILTIMEOUTPASS
signalUnknownCredential removes a credential that matches the IDPASSFAILNOTRUNPASS
§ storecredential.https.html
Overall1 / 10 / 11 / 11 / 1
Harness statusOKOKOKOK
navigator.credentials.store() throws NotAllowedError with a public key credentialPASSFAILPASSPASS
§ webauthn-testdriver-basic.https.html
Overall4 / 42 / 42 / 44 / 4
Harness statusOKOKOKOK
Set up the test environmentPASSPASSPASSPASS
Create a credentialPASSFAILFAILPASS
Get an assertionPASSFAILFAILPASS
Clean up the test environmentPASSPASSPASSPASS