Tests that PublicKeyCredential's [[get]] throws TypeError when invalid options are passed.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Member PublicKeyCredentialRequestOptions.challenge is required and must be an instance of (ArrayBufferView or ArrayBuffer).
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Member PublicKeyCredentialDescriptor.type is required and must be an instance of PublicKeyCredentialType.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Member PublicKeyCredentialDescriptor.id is required and must be an instance of (ArrayBufferView or ArrayBuffer).
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Type error.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Type error.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Type error.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Type error.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Type error.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Type error.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Type error.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Cannot convert a symbol to a number.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Cannot convert a symbol to a string.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Type error.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Type error.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Type error.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Cannot convert a symbol to a string.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Type error.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Type error.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Type error.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Type error.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Type error.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Type error.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Type error.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Type error.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Type error.
PASS navigator.credentials.get(invalidOptions) rejected promise  with TypeError: Type error.
PASS successfullyParsed is true

TEST COMPLETE

