-
Notifications
You must be signed in to change notification settings - Fork 1.5k
[PM-24650] Resolve sign in button disappearing from ADP login form #16901
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Great job! No new security vulnerabilities introduced in this pull request |
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #16901 +/- ##
=======================================
Coverage 39.15% 39.16%
=======================================
Files 3456 3456
Lines 97968 97970 +2
Branches 14730 14732 +2
=======================================
+ Hits 38360 38369 +9
+ Misses 57939 57932 -7
Partials 1669 1669 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
}, | ||
metadata: {}, | ||
autosubmit: null, | ||
autosubmit: [], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
unrelated typing warning fix
Changes in this PR impact the Autofill experience of the browser clientBIT has tested the core experience with these changes and all feature flags disabled. ✅ Fortunately, these BIT tests have passed! 🎉 |
Changes in this PR impact the Autofill experience of the browser clientBIT has tested the core experience with these changes and the feature flag configuration used by ✅ Fortunately, these BIT tests have passed! 🎉 |
🎟️ Tracking
PM-24650
📔 Objective
This PR addresses two issues that together fix autofill breakage on employee
https://login.adp.com
login portals.The changes in this PR include:
📸 Screenshots and further details
The original issue looks like this:
current-bug.mp4
This occurs due to two behaviours. First, if the fields are filled too quickly, the web app (as designed) gets caught in an unintended state, where the username input change triggers the removal of the password field and revert of the submit button to the next step button. But because we fill the password input before it's removed, the app's inferences that determine which step it's on results in conflicting information that leaves the app in a bad state (that a human user would not be able to normally achieve).
One reason our fill script runs afoul of this scenario is because we execute the individual actions for filling a field (click, focus, fill) synchronously. This allows their execution to happen out of intended order and all at once, undermining the intention to simulate user entry. This is resolved by awaiting each action before executing the next (0390ce8).
While serial execution currently appears sufficient to resolve this case, our timings could potentially be slowed in the future, as we delay each fill action by 20ms (see
runFillScriptAction
inInsertAutofillContentService
). We likely could go as high as 200ms before it will be noticeable, and should consider it for future changes, since it will bring us closer to simulating human entry speeds and avoiding breakages from app race cases like this (however, no adjustments to these timings have been made in this PR).With the invalid app state concern resolved, we get behaviour closer to what users who are doing manual entry experience; the button remains, but reverts from "sign in" to "next". This happens because the page/app behaviour resets the login flow to the first step when the username field is changed in any way. This is what the page behaviour looks like when the user (with no password manager installed) does the same re-entry of the username like the extension is doing:
no-extension-app-behaviour.mp4
With the autofill script, we always enter field values regardless of any present values, and so trigger the app reset behaviour every time because we re-enter the username field value.
This is resolved by doing an (intentionally late) check on the field receiving the value. If the field has a value and that value matches what is about to be filled, the script will now skip filling that field (c8cf288).
The new autofill experience after these changes looks like this:
new-fix.mp4
🦮 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