[pm-41938] fix: Bank Account accessibility fixes - #2985
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## pm-41934-bank-account-behavior-fixes #2985 +/- ##
=======================================================================
Coverage ? 39.68%
=======================================================================
Files ? 362
Lines ? 16989
Branches ? 0
=======================================================================
Hits ? 6742
Misses ? 10247
Partials ? 0 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
92f03fd to
15f4a0d
Compare
🤖 Bitwarden Claude Code ReviewOverall Assessment: APPROVE Re-reviewed the head state of this stack of VoiceOver accessibility fixes for the Bank Account item type (PM-41938 through PM-41942), based on Code Review DetailsNo blocking findings. Considered and not raised: PR Metadata Assessment
|
15f4a0d to
a6074fb
Compare
a6074fb to
b68caa1
Compare
…unt view toggles VoiceOver announced the Account Number, PIN, and IBAN reveal toggles on the Bank Account view screen with a generic "button" label because PasswordVisibilityButton accepted an accessibilityLabel but never applied it. Wires up field-specific announcements (e.g. "Account number is not visible, tap to show.") for each toggle.
…unt add/edit toggles VoiceOver announced the Account Number, PIN, and IBAN reveal toggles on the Bank Account add/edit screen with the same generic "Password is/is not visible" wording regardless of which field was being toggled. Adds an optional field-name parameter to BitwardenTextField so these three fields announce their own name (e.g. "PIN is visible, tap to hide.") while every other password-style field in the app keeps its existing generic wording.
…o VoiceOver VoiceOver was reading the Account Number, Routing Number, Branch Number, PIN, SWIFT Code, and IBAN values on the Bank Account view screen as whole numbers or words instead of spelling out each character, since no explicit accessibilityValue was set for these fields. Adds an opt-in spellOutAccessibilityValue flag to PasswordText and BitwardenTextValueField, backed by a new String.spellingOutCharacters() helper, and wires it up only for the six affected Bank Account fields so other consumers of these shared components are unaffected.
…ows to VoiceOver The row's more options button was visually tappable but unreachable by VoiceOver because the row combines its content into a single accessibility element, which swallows the nested button's own announcement and activation. Adds a named accessibility action so the overflow menu remains announced and accessible, matching the pattern already used for PasswordHistoryListView's combined row.
…o icon to VoiceOver The info button was nested inside BitwardenToggle's title content, so VoiceOver collapsed the whole row into one element and swallowed the button's own label and tap target. Move it into BitwardenToggle's accessory slot, which keeps it independently reachable, and add an "External link" hint, mirroring the Fill Assist toggle fix (PM-41097).
.accessibilityValue(value.spellingOutCharacters()) was being added on
top of a Text whose own content is already exposed as its
accessibility label, so VoiceOver would likely announce the value
twice: once normally, once spelled out. Use speechSpellsOutCharacters
instead, which tells VoiceOver to spell out the label itself rather
than adding a redundant value. Drops the now-unused
String.spellingOutCharacters() helper.
Also replaces a hand-rolled Task { await ... } in an
accessibilityAction with the existing accessibilityAsyncAction helper
for consistency.
ViewInspector can't inspect speechSpellsOutCharacters directly, so the
affected tests now verify the flag is passed through to PasswordText/
BitwardenTextValueField instead of the rendered accessibility value;
the actual VoiceOver announcement should be confirmed on-device.
The Add/Edit Bank Account screen's Account Type menu defaulted to displaying "Checking" even when the user had never opened the picker, because DefaultableType<BankAccountType>'s default-case label reused the "Checking" option name instead of a blank placeholder.
b68caa1 to
04c13c5
Compare
🎟️ Tracking
📔 Objective
Adds a batch of accessibility bug fixes under the Bank Account item type
📸 Screenshots
Click to reveal the technical details
PM-41938
showHideToggle.mov
PM-41939
addEditShowHideToggle.mov
PM-41940
individualCharacters.mov
PM-41941
PM-41942