🚀 Feature Proposal
#7753 added basic support for WebAuthn automation in the form of the addVirtualAuthenticator and removeVirtualAuthenticator methods. Implement the rest of the methods: addCredential, getCredential, removeCredential, removeAllCredentials, setUserVerified.
Motivation
Support more WebAuthn use-cases, like logging in with a specific credential, handling user verification failures, and inspecting generated credentials.
Example
For a page like this
<button id="login">Log in with WebAuthn</button>
<span id="result"></span>
document.getElmentById("login").addEventListener("click", () => {
navigator.credentials.get({...}).then(assertion => {
document.getElementById("result").innerText = "Success!";
})
});
A test could be written like so:
// Set up the virtual authenticator.
HasVirtualAuthenticator virtualAuthenticatorManager = ((HasVirtualAuthenticator) driver);
VirtualAuthenticatorOptions options = new VirtualAuthenticatorOptions();
VirtualAuthenticator authenticator =
virtualAuthenticatorManager.addVirtualAuthenticator(options);
// New code: inject a credential into the authenticator.
// Without this API the developer would have to generate a credential through
// navigator.credentials.create({...}) on the javascript side and would have less
// control over the resulting PK.
Credential credential = Credential.createNonResidentCredential(...params);
virtualAuthenticatorManager.addCredential(authenticator, credential);
// Assert login successful:
driver.findElement(By.id("login")).click();
WebElement result = driver.findElement(By.id("result"));
new WebDriverWait(driver, 60, 1000).until(
driver -> !result.getText().equals(""));
assertThat(result.getText()).isEqualTo("Success!");
🚀 Feature Proposal
#7753 added basic support for WebAuthn automation in the form of the
addVirtualAuthenticatorandremoveVirtualAuthenticatormethods. Implement the rest of the methods:addCredential,getCredential,removeCredential,removeAllCredentials,setUserVerified.Motivation
Support more WebAuthn use-cases, like logging in with a specific credential, handling user verification failures, and inspecting generated credentials.
Example
For a page like this
A test could be written like so: