feat(5.12): modal editare + cont obligatoriu la import; design.md + PRD 5.13 revizuit (/autoplan)
5.12 (livrat): editare in modal a randurilor de preview, cont obligatoriu inainte de import, formular editare extras (_form_editare, _editare_preview_modal), plus suita de teste aferenta (preview edit/compact, mapare op, form editare, signup, admin panel). Design + planificare: - docs/design.md: sistem de design (tokeni, breakpoints, scara control, componente, a11y). - docs/prd/prd-5.12-* si prd-5.13-* (5.13 cu raport /autoplan: CEO+Design+Eng, audit trail). Curatare: sterse PNG-urile de test/mockup temporare din radacina. Nota: implementarea CSS 5.13 (responsive compact + sistem butoane) NU e inca facuta — planul revizuit cere refactorul testelor fragile din test_web_responsive.py INAINTE de CSS. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -287,4 +287,79 @@ def test_login_signup_full_width_mobil(client):
|
||||
# Regula mobil: cardul nu depaseste viewport-ul.
|
||||
mobil = html[html.find("@media (max-width:767px)"):]
|
||||
assert ".auth-card" in mobil, ruta
|
||||
assert "max-width:100%" in mobil, ruta
|
||||
|
||||
|
||||
# ============================================================
|
||||
# PRD 5.12 US-008: responsive tableta+mobil + header fara suprapuneri
|
||||
# ============================================================
|
||||
|
||||
|
||||
def test_header_are_breakpoint_tableta(client):
|
||||
"""US-008 RED: exista reguli @media intre 768 si 1024 pentru header.
|
||||
Desktop: grid 3-coloane + min-height:92px. Pe tableta (768-1024px) nu exista
|
||||
inca breakpoint — logo+titlu+badge+tema+versiune+hamburger se inghesuie si se suprapun."""
|
||||
_create_account_user("bt@test.com")
|
||||
_login(client, "bt@test.com")
|
||||
html = client.get("/?tab=acasa").text
|
||||
|
||||
# Bloc media dedicat tabletei (range min-width:768 si max-width:1024px).
|
||||
assert "@media (min-width:768px) and (max-width:1024px)" in html, \
|
||||
"Lipseste blocul @media tableta (min-width:768px) and (max-width:1024px)"
|
||||
|
||||
# Blocul tableta contine reguli pentru header sau elemente de header.
|
||||
idx = html.find("@media (min-width:768px) and (max-width:1024px)")
|
||||
bloc = html[idx:idx + 800]
|
||||
assert "header" in bloc or ".brand-logo" in bloc, \
|
||||
"Blocul tableta nu are reguli pentru header sau .brand-logo"
|
||||
|
||||
|
||||
def test_header_elemente_nu_au_min_height_fix_pe_mobil(client):
|
||||
"""US-008 RED: header-ul nu forteaza min-height:92px pe tableta si mobil.
|
||||
Regula de baza (desktop) are min-height:92px; pe tableta (768-1024px)
|
||||
lipseste resetarea -> inghesuire garantata la ~820px."""
|
||||
_create_account_user("mh@test.com")
|
||||
_login(client, "mh@test.com")
|
||||
html = client.get("/?tab=acasa").text
|
||||
|
||||
# Regula de baza desktop are min-height:92px (sa nu dispara).
|
||||
assert "min-height:92px" in html, "Regula desktop min-height:92px a disparut"
|
||||
|
||||
# Blocul tableta (768-1024px) trebuie sa reseteze min-height pe header.
|
||||
idx_t = html.find("@media (min-width:768px) and (max-width:1024px)")
|
||||
assert idx_t != -1, "Lipseste blocul @media tableta (768-1024px)"
|
||||
tableta = html[idx_t:idx_t + 800]
|
||||
assert "min-height:0" in tableta, \
|
||||
"Blocul tableta nu reseteaza min-height pentru header"
|
||||
|
||||
# Blocul mobil (<768px) reseteaza si el min-height (regresie: nu a disparut).
|
||||
# Folosim `{` ca sa nu potrivim mentionarile din comentarii CSS.
|
||||
mobil_idx = html.find("@media (max-width:767px) {")
|
||||
assert mobil_idx != -1
|
||||
mobil = html[mobil_idx:mobil_idx + 5000]
|
||||
assert "min-height:0" in mobil, "Blocul mobil a pierdut resetarea min-height pe header"
|
||||
|
||||
|
||||
def test_modal_full_screen_pe_mobil(client):
|
||||
"""US-008 D#13 verificare: regula full-screen mobil pentru modal exista in base.html
|
||||
(@media max-width:767px) si se aplica modalului global prin clasa modal-overlay.
|
||||
VERIFICA prezenta regulii, NU re-implementa."""
|
||||
_create_account_user("mfp@test.com")
|
||||
_login(client, "mfp@test.com")
|
||||
html = client.get("/?tab=acasa").text
|
||||
|
||||
# Regula CSS full-screen exista in blocul @media (max-width:767px) {.
|
||||
# Folosim varianta cu `{` ca sa NU potrivim mentionarile din comentarii CSS.
|
||||
mobil_idx = html.find("@media (max-width:767px) {")
|
||||
assert mobil_idx != -1, "Nu exista bloc @media (max-width:767px) { in CSS"
|
||||
mobil = html[mobil_idx:mobil_idx + 5000]
|
||||
assert "100vw" in mobil, "Dialogul nu are latime 100vw pe mobil"
|
||||
assert "100vh" in mobil, "Dialogul nu are inaltime 100vh pe mobil"
|
||||
# Butonul de inchidere >=44px (tinta touch) pe mobil.
|
||||
assert "44px" in mobil, "Butonul modal-close nu are tinta touch 44px pe mobil"
|
||||
|
||||
# Modalul global din HTML foloseste clasa modal-overlay -> prinde regula CSS.
|
||||
assert 'class="modal-overlay"' in html, \
|
||||
"Modalul global nu are class=modal-overlay (nu prinde regula full-screen)"
|
||||
# Target swap pentru editare preview (US-006) exista in DOM.
|
||||
assert 'id="detaliu-modal-body"' in html, \
|
||||
"Target #detaliu-modal-body lipseste din base.html"
|
||||
|
||||
Reference in New Issue
Block a user