[PM-8833] Implement on page autofill menu for password generation
đī¸ Tracking
https://bitwarden.atlassian.net/browse/PM-8833
đ Objective
The objective of this PR is to introduce password generation within the inline menu. This work not only implements the views and methodologies for generating and filling a randomized password, but also some extensive field qualification work to ensure that the generator appears where it is expected to appear.
Along with the password generation view, this introduces a view that asks the user to save a login on account creation fields. This triggers after fill of the password, and on click of fields that are qualified as account creation (or modification) fields.
đ¸ Demo
https://github.com/user-attachments/assets/c3beb00b-ff1a-4512-bd0b-293750876aaa
â° Reminders before review
- Contributor guidelines followed
- All formatters and local linters executed and passed
- Written new unit and / or integration tests where applicable
- Protected functional changes with optionality (feature flags)
- Used internationalization (i18n) for all UI strings
- CI builds passed
- Communicated to DevOps any deployment requirements
- Updated any necessary documentation (Confluence, contributing docs) or informed the documentation team
đĻŽ Reviewer guidelines
- đ (
:+1:) or similar for great changes - đ (
:memo:) or âšī¸ (:information_source:) for notes or general info - â (
:question:) for questions - đ¤ (
:thinking:) or đ (:thought_balloon:) for more open inquiry that's not quite a confirmed issue and could potentially benefit from discussion - đ¨ (
:art:) for suggestions / improvements - â (
:x:) or â ī¸ (:warning:) for more significant problems or concerns needing attention - đą (
:seedling:) or âģī¸ (:recycle:) for future improvements or indications of technical debt - â (
:pick:) for minor or nitpick changes
Checkmarx One â Scan Summary & Details â 7cfb9044-cc15-46dd-82a8-1f284172c509
New Issues
| Severity | Issue | Source File / Package | Checkmarx Insight |
|---|---|---|---|
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 655 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 668 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 555 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 682 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 562 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 578 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 494 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 500 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 512 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 411 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 1709 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 366 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 366 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 643 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 644 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 642 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 641 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 645 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 654 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 208 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 651 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 708 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 407 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 451 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 434 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 2863 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 2758 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 1710 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 135 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 546 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 586 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 220 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 1710 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/background/overlay.background.ts: 1635 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 817 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 1072 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 816 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 128 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 1143 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 1125 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 1106 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 1096 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 1044 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 1190 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 1102 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 1083 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 1043 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 1178 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 1167 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 1078 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 1073 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 1068 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 761 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 128 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 128 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 128 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 128 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 128 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 128 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 128 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 128 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 128 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 84 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 84 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 84 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 84 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 84 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 84 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 84 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 84 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 84 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 218 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 222 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 207 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 36 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 763 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 349 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 314 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 364 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 323 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 438 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 806 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 791 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 204 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 606 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 586 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 240 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 240 | Attack Vector |
![]() |
Client_Privacy_Violation | /apps/browser/src/autofill/overlay/inline-menu/pages/list/autofill-inline-menu-list.ts: 1093 | Attack Vector |
![]() |
Client_Privacy_Violation |
Codecov Report
Attention: Patch coverage is 87.06240% with 85 lines in your changes missing coverage. Please review.
Project coverage is 33.57%. Comparing base (
9264e67) to head (4ea094a). Report is 1 commits behind head on main.
:white_check_mark: All tests successful. No failed tests found.
Additional details and impacted files
@@ Coverage Diff @@
## main #11114 +/- ##
==========================================
+ Coverage 33.36% 33.57% +0.20%
==========================================
Files 2798 2798
Lines 86482 86798 +316
Branches 16476 16536 +60
==========================================
+ Hits 28858 29141 +283
- Misses 55314 55354 +40
+ Partials 2310 2303 -7
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
BIT run: https://github.com/bitwarden/browser-interactions-testing/actions/runs/11353358383
BIT Run: https://github.com/bitwarden/browser-interactions-testing/actions/runs/11368501956
