test: repara flake nocturn miez-noapte RO + 2 teste stale landing/login
test_web_status::test_granita_miez_noapte_local_ro: ancoreaza boundary pe RO-now
(00:30 RO local, mereu ziua UTC precedenta, DST-aware) in loc de today_utc. Bug
vechi: boundary pe today_utc pica in fereastra de dupa miezul noptii RO cand
date('now','localtime') e deja ziua urmatoare. Fereastra de esec de ~3h -> race
sub-secunda la exact miezul noptii.
test_web_responsive::test_login_branded_nu_schelet: loginul a fost simplificat la
o coloana (commit 'simplifica login'); nu mai cerem .login-aside. Guard pastrat pe
.login-shell + titlu ROA AUTOPASS + POST /login + CSRF. Comentariile stale '2 coloane'
din login.html aliniate la realitate (o coloana).
test_web_responsive::test_landing_limita_60: terminologia landing prestații->trimiteri
(rework ff9d0f4); asertie pe '60 de trimiteri' (limita Gratuit), scoase asertiile pe
formularile vechi 'prestații'/'prezentări'.
Suita: 1458 passed, 1 deselected (live), 0 failed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -771,18 +771,17 @@ def test_header_arata_nume_service_logat(client):
|
||||
|
||||
|
||||
def test_login_branded_nu_schelet(client):
|
||||
"""US-010 (PRD 5.16): /login are layout 2-coloane branduit cu clasa .login-shell,
|
||||
titlul 'ROA AUTOPASS', si formular cu POST /login (CSRF intact)."""
|
||||
"""/login e branduit (card .login-shell, titlu 'ROA AUTOPASS') cu formular POST /login
|
||||
(CSRF intact), NU schelet gol. Loginul a fost simplificat la o coloana (commit
|
||||
'simplifica login') — nu mai cerem coloana de brand .login-aside."""
|
||||
resp = client.get("/login")
|
||||
assert resp.status_code == 200
|
||||
html = resp.text
|
||||
|
||||
assert "login-shell" in html, \
|
||||
"Clasa .login-shell lipseste din /login (US-010 PRD 5.16) — layout 2-coloane nenimplementat"
|
||||
assert "login-aside" in html, \
|
||||
"Clasa .login-aside lipseste — coloana stanga de brand lipseste (US-010)"
|
||||
"Clasa .login-shell lipseste din /login — cardul de login branduit lipseste"
|
||||
assert "ROA AUTOPASS" in html, \
|
||||
"Titlul 'ROA AUTOPASS' lipseste din /login (US-010 PRD 5.16)"
|
||||
"Titlul 'ROA AUTOPASS' lipseste din /login"
|
||||
# Formular intact: POST /login cu csrf_token
|
||||
assert 'action="/login"' in html, "Actiunea formularului /login s-a schimbat — CSRF route invalida"
|
||||
assert 'name="csrf_token"' in html, "csrf_token lipseste din formular — securitate compromisa"
|
||||
@@ -804,21 +803,17 @@ def _citeste_landing() -> str:
|
||||
|
||||
|
||||
def test_landing_limita_60():
|
||||
"""5.17 T7 (US-007): limita planului Gratuit este 60 de prestatii/luna in landing,
|
||||
nu 100. Verifica meta description, announce bar, hero badge, cardul Gratuit si
|
||||
CTA-ul final."""
|
||||
"""5.17 T7 (US-007): limita planului Gratuit este 60/luna in landing, nu 100.
|
||||
Terminologia landing-ului a trecut de la 'prestații' la 'trimiteri' (rework landing
|
||||
ff9d0f4): copy-ul de limita e acum '60 de trimiteri/lună' (hero + cardul Gratuit)."""
|
||||
html = _citeste_landing()
|
||||
|
||||
assert "100 de prestații" not in html, \
|
||||
"'100 de prestații' inca prezent in landing — limita trebuie sa fie 60 (5.17 T7)"
|
||||
assert "100 prestații" not in html, \
|
||||
"'100 prestații' inca prezent in landing — limita trebuie sa fie 60 (5.17 T7)"
|
||||
assert "60 de prestații" in html, \
|
||||
"'60 de prestații' lipseste din landing — verifica meta, announce bar, cardul Gratuit (5.17 T7)"
|
||||
assert "60 prestații" in html, \
|
||||
"'60 prestații' lipseste din hero badge in landing (5.17 T7)"
|
||||
assert "60 de prezentări" in html, \
|
||||
"'60 de prezentări' lipseste din CTA-ul final al landing-ului (5.17 T7)"
|
||||
assert "100 de trimiteri/lună" not in html, \
|
||||
"'100 de trimiteri/lună' prezent — limita planului Gratuit trebuie sa fie 60 (5.17 T7)"
|
||||
assert "60 de trimiteri" in html, \
|
||||
"'60 de trimiteri' lipseste din landing — verifica hero badge si cardul Gratuit (5.17 T7)"
|
||||
|
||||
|
||||
def test_landing_trial_pro_nu_premium():
|
||||
|
||||
@@ -379,10 +379,17 @@ def test_granita_miez_noapte_local_ro(monkeypatch, request):
|
||||
# Initializeaza schema (init_db o face idempotent)
|
||||
init_db()
|
||||
|
||||
# Ieri la 22:00 UTC = azi 00:00 (iarna) / 01:00 (vara) Romania -> 'azi' in ambele.
|
||||
today_utc = datetime.now(timezone.utc).date()
|
||||
yesterday_utc = today_utc - timedelta(days=1)
|
||||
boundary_updated_at = f"{yesterday_utc} 22:00:00"
|
||||
# Construim un timestamp care, stocat ca UTC, cade pe ziua PRECEDENTA in UTC dar pe
|
||||
# ACEEASI zi RO ca 'now'. 00:30 RO local e mereu ziua UTC precedenta (UTC+2 iarna /
|
||||
# UTC+3 vara -> 22:30 / 21:30 UTC), DST-aware. Ancorat pe RO-now (nu pe data UTC),
|
||||
# deci robust la orice ora de rulare. Bug vechi: boundary ancorat pe today_utc pica
|
||||
# in fereastra de dupa miezul noptii RO, cand date('now','localtime') e deja ziua
|
||||
# urmatoare fata de today_utc -> sent_today=0 fals.
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
now_ro = datetime.now(ZoneInfo("Europe/Bucharest"))
|
||||
ro_devreme = now_ro.replace(hour=0, minute=30, second=0, microsecond=0)
|
||||
boundary_updated_at = ro_devreme.astimezone(timezone.utc).strftime("%Y-%m-%d %H:%M:%S")
|
||||
|
||||
conn = get_connection()
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user