Because:
- The MfaGuard pre-check only validates the browser's WebAuthn Level 3
API surface via isWebAuthnLevel3Supported(). It cannot predict that
a specific authenticator or password-manager combination will refuse
the ceremony at runtime with NotSupportedError.
- Bitwarden on macOS is a real-world repro: pre-check passes, the
ceremony throws NotSupportedError, and the catch block's defensive
early return strands the user on the loading spinner with no way
out except the in-page Cancel link.
- The dispatcher's ReactNode-alert tests only asserted
React.isValidElement, which can't distinguish which helper was
invoked — a routing regression would pass silently.
This commit:
- Adds navigateToSettings() before the early return in PagePasskeyAdd's
NotSupportedError branch. The unsupported alert still shows on the
settings landing page, matching every other error path's behaviour.
- Updates the corresponding test to assert the redirect (was pinned to
no-navigation, which was the bug).
- Mocks the three alert helpers at the test module level so the four
dispatcher tests assert which helper was invoked by its sentinel
string, instead of a generic ReactNode check.
Closes #FXA-13777