<!DOCTYPE html><title>Credential Management API: create() basics.</title><scriptsrc="/resources/testharness.js"></script><scriptsrc="/resources/testharnessreport.js"></script><script>promise_test(function(t){returnpromise_rejects_dom(t,"NotSupportedError",navigator.credentials.create());},"navigator.credentials.create() with no argument.");promise_test(function(t){returnpromise_rejects_dom(t,"NotSupportedError",navigator.credentials.create({}));},"navigator.credentials.create() with empty argument.");promise_test(function(t){varcredential_data={id:'id',password:'pencil',};returnnavigator.credentials.create({password:credential_data}).then(function(credential){assert_equals(credential.id,'id');assert_equals(credential.name,'');assert_equals(credential.iconURL,'');assert_equals(credential.type,'password');assert_equals(credential.password,'pencil');});},"navigator.credentials.create() with valid PasswordCredentialData");promise_test(function(t){varf=document.createElement('form');f.innerHTML="<input type='text' name='theId' value='musterman' autocomplete='username'>"+"<input type='text' name='thePassword' value='sekrit' autocomplete='current-password'>"+"<input type='text' name='theIcon' value='https://example.com/photo' autocomplete='photo'>"+"<input type='text' name='theExtraField' value='extra'>"+"<input type='text' name='theName' value='friendly name' autocomplete='name'>";returnnavigator.credentials.create({password:f}).then(function(credential){assert_equals(credential.id,'musterman');assert_equals(credential.name,'friendly name');assert_equals(credential.iconURL,'https://example.com/photo');assert_equals(credential.type,'password');assert_equals(credential.password,'sekrit');});},"navigator.credentials.create() with valid HTMLFormElement");promise_test(function(t){returnpromise_rejects_js(t,TypeError,navigator.credentials.create({password:"bogus password data"}));},"navigator.credentials.create() with bogus password data");promise_test(function(t){varfederated_data={id:'id',provider:'https://example.com/',};returnnavigator.credentials.create({federated:federated_data}).then(function(credential){assert_equals(credential.id,'id');assert_equals(credential.name,'');assert_equals(credential.iconURL,'');assert_equals(credential.type,'federated');});},"navigator.credentials.create() with valid FederatedCredentialData");promise_test(function(t){returnpromise_rejects_js(t,TypeError,navigator.credentials.create({federated:"bogus federated data"}));},"navigator.credentials.create() with bogus federated data");promise_test(function(t){returnpromise_rejects_js(t,TypeError,navigator.credentials.create({publicKey:"bogus publicKey data"}));},"navigator.credentials.create() with bogus publicKey data");promise_test(function(t){varcredential_data={id:'id',password:'pencil',};varfederated_data={id:'id',provider:'https://example.com/',};returnpromise_rejects_dom(t,"NotSupportedError",navigator.credentials.create({password:credential_data,federated:federated_data,}));},"navigator.credentials.create() with both PasswordCredentialData and FederatedCredentialData");promise_test(function(t){returnpromise_rejects_js(t,TypeError,navigator.credentials.create({password:"bogus password data",federated:"bogus federated data",}));},"navigator.credentials.create() with bogus password and federated data");promise_test(function(t){returnpromise_rejects_js(t,TypeError,navigator.credentials.create({federated:"bogus federated data",publicKey:"bogus publicKey data",}));},"navigator.credentials.create() with bogus federated and publicKey data");promise_test(function(t){returnpromise_rejects_js(t,TypeError,navigator.credentials.create({password:"bogus password data",publicKey:"bogus publicKey data",}));},"navigator.credentials.create() with bogus password and publicKey data");promise_test(function(t){returnpromise_rejects_js(t,TypeError,navigator.credentials.create({password:"bogus password data",federated:"bogus federated data",publicKey:"bogus publicKey data",}));},"navigator.credentials.create() with bogus password, federated, and publicKey data");promise_test(function(t){returnpromise_rejects_dom(t,"NotSupportedError",navigator.credentials.create({bogus_key:"bogus data"}));},"navigator.credentials.create() with bogus data");promise_test(function(t){constcontroller=newAbortController();controller.abort("custom reason");returnpromise_rejects_exactly(t,"custom reason",navigator.credentials.create({signal:controller.signal}));},"navigator.credentials.create() aborted with custom reason");promise_test(asyncfunction(t){constreasons=[{},[],newError("custom error")];for(letreasonofreasons){constresult=navigator.credentials.create({signal:AbortSignal.abort(reason)});awaitpromise_rejects_exactly(t,reason,result);}},"navigator.credentials.create() aborted with different objects");promise_test(function(t){consterror=newError("custom error");constcontroller=newAbortController();constresult=navigator.credentials.create({signal:controller.signal});controller.abort(error);// aborted after the promise is createdreturnpromise_rejects_exactly(t,error,result);},"navigator.credentials.create() rejects when aborted after the promise creation");</script>