fix(login): asteapta generos splash-ul SPA + reincarca popup la nevoie

Pe masina prod (Session 0, randare software) aplicatia Angular de la
goapp.bancatransilvania.ro ramane lenta pe splash-ul "Aplicatia ta de
banking business" si uneori depaseste 20s -> input#user nu apare.
Diagnostic confirmat: URL/titlu corecte, body gol, zero input-uri.

Asteptam load state, apoi input#user cu timeout 60s; daca tot nu apare,
reincarcam popup-ul o data si mai incercam. Worst case ~3 min, sub
timeout-ul de 2FA.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-15 15:26:02 +03:00
parent d3d9784fa8
commit de294fb3f7

View File

@@ -503,10 +503,35 @@ class BTGoScraper:
self.login_page = popup_info.value
logging.info("Popup/tab login deschis")
# Asteapta ca Angular SPA sa randeze formularul de login
# (goapp.bancatransilvania.ro face un API call inainte de render)
# Asteapta ca Angular SPA sa randeze formularul de login.
# goapp.bancatransilvania.ro afiseaza intai un splash ("Aplicatia ta
# de banking business") cat se bootstrap-eaza Angular-ul. Pe masina
# prod (Session 0, randare software) bootstrap-ul e lent si uneori
# depaseste timeout-ul -> asteptam generos si reincarcam la nevoie.
logging.info("Astept incarcarea formularului de login...")
self.login_page.wait_for_selector("input#user", timeout=20000, state="visible")
form_loaded = False
for attempt in range(1, 3): # 2 incercari
try:
self.login_page.wait_for_load_state("load", timeout=30000)
except PlaywrightTimeout:
pass
try:
self.login_page.wait_for_selector(
"input#user", timeout=60000, state="visible"
)
form_loaded = True
break
except PlaywrightTimeout:
if attempt == 1:
logging.warning(
" [WARN] Formularul nu a aparut in 60s "
"(SPA blocat pe splash) - reincarc popup-ul..."
)
self.login_page.reload(wait_until="domcontentloaded")
else:
raise
if not form_loaded:
raise PlaywrightTimeout("input#user nu a aparut nici dupa reload")
logging.info("[OK] Formular login incarcat")
# Verifica GDPR cookies si pe popup