Skip to content

[pm-41938] fix: Bank Account accessibility fixes - #2985

Draft
morganzellers-bw wants to merge 6 commits into
pm-41934-bank-account-behavior-fixesfrom
pm-41938-voiceover-accessibility-fixes
Draft

[pm-41938] fix: Bank Account accessibility fixes#2985
morganzellers-bw wants to merge 6 commits into
pm-41934-bank-account-behavior-fixesfrom
pm-41938-voiceover-accessibility-fixes

Conversation

@morganzellers-bw

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

Copy link
Copy Markdown
Contributor

🎟️ Tracking

  • PM-41938 - View Bank Account screen show/hide toggle has a generic button announcement
  • PM-41939 - Add & Edit Screen: show/hide toggle name announcement is not custom by line item
  • PM-41940 - Entered characters are not announced individually
  • PM-41941 - Overflow menu is not announced and can't be accessed
  • PM-41942 - MP Re-prompt information icon is not announced and can't be accessed

📔 Objective

Adds a batch of accessibility bug fixes under the Bank Account item type

📸 Screenshots

…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.
@github-actions github-actions Bot added app:password-manager Bitwarden Password Manager app context app:authenticator Bitwarden Authenticator app context t:bug Change Type - Bug labels Aug 20, 2026
@codecov

codecov Bot commented Aug 20, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.66667% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 79.51%. Comparing base (7963b10) to head (92f03fd).

Files with missing lines Patch % Lines
.../Views/VaultListItemRow/VaultListItemRowView.swift 33.33% 2 Missing ⚠️
Additional details and impacted files
@@                          Coverage Diff                          @@
##           pm-41934-bank-account-behavior-fixes    #2985   +/-   ##
=====================================================================
  Coverage                                 79.51%   79.51%           
=====================================================================
  Files                                      1170     1170           
  Lines                                     75217    75261   +44     
=====================================================================
+ Hits                                      59807    59844   +37     
- Misses                                    15410    15417    +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 self-assigned this Aug 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app:authenticator Bitwarden Authenticator app context app:password-manager Bitwarden Password Manager app context t:bug Change Type - Bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant