Skip to content

[PM-27134] feat: Add Register Passkey screen to TestHarness - #2946

Draft
morganzellers-bw wants to merge 3 commits into
pm-40519-testharness-passkeys-sdk-foundationfrom
pm-27134-testharness-register-passkeys-ui
Draft

[PM-27134] feat: Add Register Passkey screen to TestHarness#2946
morganzellers-bw wants to merge 3 commits into
pm-40519-testharness-passkeys-sdk-foundationfrom
pm-27134-testharness-register-passkeys-ui

Conversation

@morganzellers-bw

@morganzellers-bw morganzellers-bw commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

🎟️ Tracking

PM-27134

📔 Objective

Second PR in a 4-PR stack adding SDK-backed passkey test scenarios to TestHarness. Stacked on #2945.

  • Adds the "Register Passkey (SDK)" scenario: a form for relying party ID, username, and display name that calls SDKPasskeyService.registerPasskey directly, showing the resulting credential ID and attestation object.
  • Wires the new screen into the scenario picker and root navigation.
  • Also drops the dead "Passkey Autofill" scenario stub (route: nil, already unused) and adds a missing accessibility identifier case for the TOTP scenario button, since this PR was already touching those files.

📸 Screenshots


Stack: #2945#2946#2947#2948

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

🤖 Bitwarden Claude Code Review

Overall Assessment: APPROVE

Re-reviewed PR #2946 after the latest commits (cc17862 string removal, 548c7e3 doc-comment trims). Verified the new "Register Passkey (SDK)" screen (Action/Effect/State/View/Processor plus processor tests), the MakeCredentialResult+Fixtures helper, and the wiring into RootRoute/RootCoordinator/ScenarioPickerState, including that every Localizations.* reference resolves to a key in TestHarnessShared/UI/Platform/Application/Support/Localizations/en.lproj/Localizable.strings and that the fixture's initializer labels/order match BitwardenSdk.MakeCredentialResult as used in BitwardenSdkAutofillTests. Also confirmed the new source, test, and Fixtures/ files land in the correct targets per the project-bwth.yml include/exclude globs, that MakeCredentialResult.fixture does not collide with anything in BitwardenSdkMocks, and that no reference to passkeyAutofill, PasskeyAutofill, or ScenarioButton_Passkey remains anywhere in the repo.

Code Review Details

No code findings. The previously raised item (orphaned PasskeyAutofill localization key) was addressed in cc17862.

Considered and intentionally not raised: the injected-but-unused coordinator in RegisterPasskeyProcessor mirrors CardAutofillFormProcessor/DateFieldPickerShowcaseProcessor; taking passkeyService directly rather than a Services typealias is a reasonable narrowing and HasPasskeyService is still used by the container; the non-alphabetical placement of case registerPasskey in RootRoute/RootCoordinator is cosmetic; the new scenario falling through to the default: "ScenarioButton_\(scenario.title)" identifier branch matches the existing dateFieldPicker precedent and no UI automation in this repo references those identifiers (so the new ScenarioButton_TOTPForm case breaks nothing); Task { await store.perform(...) } inside a Button matches CreateAccountFormView; super.tearDown() preceding property teardown matches every other TestHarnessShared processor test; and resetting status to .idle on field edits while a registration is in flight only permits a duplicate credential in this debug-only harness (DefaultPasskeyService is an actor, so there is no data race).

PR Metadata Assessment

  • QUESTION: The new screen still ships without screenshots (the description acknowledges this) — please attach before merge.
  • QUESTION: Description says the screen shows "credential ID and attestation object", but RegisterPasskeyState/RegisterPasskeyView only surface the credential ID.

@morganzellers-bw
morganzellers-bw force-pushed the pm-27134-testharness-register-passkeys-ui branch from a989b44 to 290508f Compare August 7, 2026 21:56
@codecov

codecov Bot commented Aug 7, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 79.47%. Comparing base (8ed6220) to head (548c7e3).

Additional details and impacted files
@@                              Coverage Diff                              @@
##           pm-40519-testharness-passkeys-sdk-foundation    #2946   +/-   ##
=============================================================================
  Coverage                                         79.46%   79.47%           
=============================================================================
  Files                                              1172     1172           
  Lines                                             75144    75144           
=============================================================================
+ Hits                                              59710    59717    +7     
+ Misses                                            15434    15427    -7     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@morganzellers-bw
morganzellers-bw force-pushed the pm-27134-testharness-register-passkeys-ui branch from 290508f to fbbcc0c Compare August 7, 2026 22:32
@morganzellers-bw
morganzellers-bw force-pushed the pm-27134-testharness-register-passkeys-ui branch from fbbcc0c to 06ae2bb Compare August 7, 2026 22:38
@morganzellers-bw
morganzellers-bw force-pushed the pm-27134-testharness-register-passkeys-ui branch from 06ae2bb to 63a2611 Compare August 10, 2026 14:14
@morganzellers-bw
morganzellers-bw force-pushed the pm-27134-testharness-register-passkeys-ui branch from 63a2611 to 3835795 Compare August 10, 2026 14:26
@morganzellers-bw
morganzellers-bw force-pushed the pm-27134-testharness-register-passkeys-ui branch from 3835795 to c0911cd Compare August 10, 2026 14:55
@morganzellers-bw morganzellers-bw changed the title [PM-27134] feat: Add SDK-backed Register Passkey (SDK) screen [PM-27134] feat: Add Register Passkey screen Aug 10, 2026
@morganzellers-bw morganzellers-bw changed the title [PM-27134] feat: Add Register Passkey screen [PM-27134] feat: Add Register Passkey screen to TestHarness Aug 10, 2026
@morganzellers-bw
morganzellers-bw force-pushed the pm-27134-testharness-register-passkeys-ui branch from c0911cd to bcaf088 Compare August 10, 2026 16:59
Adds the "Register Passkey" scenario: a form for relying party
ID, username, and display name that calls PasskeyService.registerPasskey
directly, showing the resulting credential ID and attestation object.
Wires it into the scenario picker and root navigation. Also drops the
dead "Passkey Autofill" scenario stub (route: nil, already unused) and
adds a missing accessibility identifier case for the TOTP scenario
button while touching this file.
@morganzellers-bw
morganzellers-bw force-pushed the pm-27134-testharness-register-passkeys-ui branch from bcaf088 to 3d55e64 Compare August 10, 2026 18:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-review Request a Claude code review app:password-manager Bitwarden Password Manager app context t:feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant