[No QA] Remove redundant unscoped sign-in.ad and dead sign-in-drive.sh (agent-device) - #98917
Conversation
The NewDot login (Phone or email) field now renders with role="textbox" instead of role="textfield". The recorded sign-in macro's fill selector targeted role="textfield", so it matched nothing and the fill never landed - breaking Melvin's CI prestart sign-in. Update the fill selector and the matching @pre annotation in sign-in.ad to use role="textbox". Confirmed by probing role="textbox" label="Phone or email" against the live app.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 341400bc54
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
🤖 Opened the app on web — it loaded successfully. After passing the post-signin Welcome/Join interstitial, it reached the Home screen with the full nav rail (Home/Inbox/Spend/Workspaces/Account) and Home content visible. No JS console errors. EvidenceHome screen after sign-in, showing left nav (Home/Inbox/Spend/Workspaces/Account) and Home tab content |
|
Successful on both web and android ✅: |
The unscoped macros/sign-in.ad is the fallback for platforms without a scoped copy (iOS resolves to it; there is no macros/ios/sign-in.ad). Its role=textfield selector matches native iOS inputs. web already has its own macros/web/sign-in.ad (role=textbox), so Melvin CI never uses the base for web; changing it to textbox was inert for CI and broke the iOS fallback. Addresses Codex P1.
|
🤖 Opened the app on Android — it loaded successfully. After completing the remaining post-sign-in setup (Join → notification permission → skip work email → onboarding purpose → name), it reached the Home screen with the bottom nav (Home/Inbox/Spend/Workspaces/Account) and the Home tab active. No console errors. EvidenceExpensify Android Home screen showing Time sensitive validate-account card, Recently added (no recent expenses), Discover section, and bottom nav with Home tab active |
web and android both have macros/<platform>/sign-in.ad, which win via resolve_sign_in_ad. The unscoped macros/sign-in.ad was only a fallback for platforms without a scoped copy; keeping it meant a third selector copy that silently drifted. Removing it. A future iOS driver must add macros/ios/sign-in.ad rather than rely on an unscoped fallback.
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / Safari |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |


Explanation of Change
Removes two redundant/dead agent-device sign-in artifacts. No live flow changes behavior.
1. The unscoped
macros/sign-in.ad. Sign-in is fully platform-scoped:macros/web/sign-in.adandmacros/android/sign-in.adboth exist and win viaresolve_sign_in_ad(which picksmacros/<platform>/sign-in.adand only falls back to the unscoped file when no scoped copy exists). Melvin CI drives only web and android, so it never used the unscoped copy - it was just a third, drift-prone duplicate of the login selectors (it still carried the stalerole="textfield"). Removing it. iOS is a supported agent-device platform but has nomacros/ios/copy today; a future iOS driver must add its ownmacros/ios/sign-in.adrather than lean on an unscoped fallback (README updated to say so).2. The
lib/sign-in-drive.shdrive library (and itslib/entry inflows/README.md). Nothing sources it anymore: Melvin's CI sign-in was refactored to replay the.admacro directly, and the old two-layer drive split (Melvin'smelvin-app-drive.shstaging mirror and itsresolve_app_driveresolver) is gone. No file in this repo sources it or uses itsdrive_sign_in/SEL_*exports - only a README example referenced it.The platform-scoped macros (
macros/web/sign-in.ad,macros/android/sign-in.ad) are untouched.Fixed Issues
$ https://github.com/Expensify/Expensify/issues/672996 (part of #87030)
PROPOSAL:
Tests
grep -rn "sign-in-drive\|drive_sign_in" .claudereturns no matches.ls .claude/skills/agent-device/flows/macros/**/sign-in.adlists exactly the web and android copies, and there is no unscopedmacros/sign-in.ad.Offline tests
N/A - this change modifies CI test-tooling selector definitions only (
.claude/skills/agent-device/...); it has no App runtime effect and no offline behavior.QA Steps
Same as the Tests section.
[No QA]- this is an internal CI test-tooling selector change with no user-facing behavior, so there is nothing for QA to validate on staging.PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari