Skip to content

fix(portal): clear blocking modal/dialog overlay before the login-entry click - #18

Merged
mattebad merged 1 commit into
mattebad:mainfrom
shmuelsash:fix/edfinancial-cookieyes-modals
Aug 31, 2026
Merged

mattebad merged 1 commit into
mattebad:mainfrom
shmuelsash:fix/edfinancial-cookieyes-modals

Conversation

@shmuelsash

@shmuelsash shmuelsash commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Problem

EdFinancial's landing page (edfinancial.studentaid.gov) began rendering a Bootstrap announcement modal (.modal.fade.show — the PSLF / repayment / call-volume notices) around early July 2026. Its .modal-backdrop intercepts the "Log In" click, so _ensure_login_form_visible never reaches the username field and the run fails with LoginFormNotFoundError after its retries (a ~35-minute hang). Cookie- and disclaimer-dismissal don't touch these overlays. Servicers without such overlays (e.g. Nelnet) are unaffected.

Fix

Add _dismiss_blocking_overlay() and call it in the login-form loop. It matches blocking overlays by structure/ARIA.modal.show (Bootstrap), .usa-modal (USWDS/FSA), [role="dialog"][aria-modal], [aria-modal] — plus the standard close controls and backdrops, with an Escape fallback. Matching by structure rather than banner text means new announcement banners on any studentaid.gov servicer are handled without further code changes.

Verification

  • New tests/test_login_modal_dismiss.py covers both a Bootstrap modal and a generic non-Bootstrap ARIA dialog: asserts the overlay + backdrop are cleared and the "Log In" link becomes clickable.
  • Verified end-to-end against the real EdFinancial portal (dry-run): login now progresses landing → login form → credentials → device-trust → AccountSummary, and extraction completes (2 loan snapshots, 24 payment allocations). Before this change it died at the modal.

…ry click

EdFinancial's landing page (edfinancial.studentaid.gov) began rendering a
Bootstrap announcement modal (.modal.fade.show - PSLF/repayment/call-volume
notices) around July 2026. Its .modal-backdrop intercepts the "Log In" click,
so _ensure_login_form_visible never reaches the username field and the run
fails with LoginFormNotFoundError after its retries. Cookie/disclaimer handlers
don't touch these overlays.

Add _dismiss_blocking_overlay() and call it in the login-form loop. It matches
blocking overlays by structure/ARIA (.modal.show, .usa-modal,
[role=dialog][aria-modal], [aria-modal]) rather than banner text, so new
announcement banners on any studentaid.gov servicer (Bootstrap or USWDS/FSA)
are handled without further code changes. Servicers without such overlays are
unaffected. Test covers a Bootstrap modal and a generic ARIA dialog.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@shmuelsash
shmuelsash force-pushed the fix/edfinancial-cookieyes-modals branch from c220e1c to 37bf052 Compare July 6, 2026 18:14
@shmuelsash shmuelsash changed the title fix(portal): dismiss EdFinancial announcement modal blocking login + tolerate post-submit nav race fix(portal): clear blocking modal/dialog overlay before the login-entry click Jul 6, 2026
shmuelsash added a commit to shmuelsash/monarch-studentaid-sync that referenced this pull request Jul 6, 2026
EdFinancial's scheduled run fails at the July announcement modal on upstream
mattebad/main. Pin only the EdFinancial matrix entry to the fix branch
(fork/fix/edfinancial-cookieyes-modals) via a per-person `ref` until PR
mattebad#18 merges; Nelnet stays on origin/main. Revert EdFinancial's ref to
"origin/main" once the fix is upstream.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@mattebad

Copy link
Copy Markdown
Owner

Approving this. Thanks for the work.

@mattebad
mattebad merged commit 6856cb9 into mattebad:main Aug 31, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants