| T-085 |
Cat 29 |
XSS — payload en form de perfil debe escaparse al render |
✅ PASS
|
XSS payload no ejecutó (window.__xss undefined). No echo crudo del <script> fuera de input value. save_attempted=True. Campo revertido. |
 |
| T-086 |
Cat 29 |
Auth — /dashboard sin sesión redirige a /login |
✅ PASS
|
Sin auth, /dashboard redirige a /login. final_url=https://eco.lpdi.co/login |
 |
| T-087 |
Cat 29 |
IDOR — editar entity ajena → 403/404 (no UPDATE) |
✅ PASS
|
Endpoints rechazan operaciones sobre IDs ajenos. delete=403 edit_put=404. own_startup=b43ebe74-29b6-4f02-8543-3a9268d507d0 |
 |
| T-088 |
Cat 29 |
Rate limiting login (Supabase Auth — visual + arquitectura) |
⚠️ PARTIAL
|
Login form presente y operativo (email/password/submit OK, attempts=5). Rate limit FE message visto=False. Supabase Auth aplica rate limit server-side (no simulable desde FE sin acceso al endpoint /auth/v1). |
 |
| T-089 |
Cat 30 |
Responsive — /ecosistema viewport 375x812 sin overflow horizontal |
✅ PASS
|
375px: sin overflow horizontal, contenido visible. overflow=False |
 |
| T-090 |
Cat 30 |
Responsive — sidebar dashboard 375px (colapsable o drawer) |
⚠️ PARTIAL
|
Sin overflow pero sidebar visible y sin toggle detectado. Layout puede ser tablet-friendly pero no mobile-optimized. |
 |
| T-091 |
Cat 30 |
Responsive — formulario edición en 375px (inputs full-width, sin overflow) |
✅ PASS
|
Form 375px: 4 inputs visibles, ninguno overflow, sin scroll horizontal |
 |
| T-092 |
Cat 31 |
Navegación — ecosistema → perfil público (click + URL match) |
⚠️ PARTIAL
|
Click intentado pero URL no cambió. count=1 |
 |
| T-093 |
Cat 31 |
Navegación — browser back desde perfil regresa a ecosistema |
⚠️ PARTIAL
|
Sin cards para forward → back |
|
| T-094 |
Cat 31 |
Navegación — breadcrumbs o nav-trail en subpáginas dashboard |
⚠️ PARTIAL
|
Sin breadcrumb tradicional pero hay título de página + back link (patrón alternativo válido). has_back=True has_h1=True |
 |
| T-095 |
Cat 32 |
Edge — chars especiales: emoji + acentos + Ñ persisten correctamente |
✅ PASS
|
Input acepta UTF-8 + emoji + acentos correctamente. read_back == payload |
 |
| T-096 |
Cat 32 |
Edge — longitud: input maneja 2000 chars (truncado o aceptado) |
✅ PASS
|
Input maneja longitud. len(read_back)=100 maxlength=100. Sin crash ni overflow visual. |
 |
| T-097 |
Cat 32 |
Edge — submit con campos required vacíos → validación bloquea |
⚠️ PARTIAL
|
No se halló required input con valor. count_req=0 |
|
| T-098 |
Cat 32 |
Edge — email inválido (sin @) → validación bloquea |
⚠️ PARTIAL
|
No se encontró input[type=email] en /signup ni /login |
 |
| T-099 |
Cat 33 |
Performance — /ecosistema DCL < 3s wallclock |
✅ PASS
|
DCL=1.04s networkidle=1.58s navtiming.dcl=1033ms navtiming.load=1068ms |
 |
| T-100 |
Cat 33 |
Performance — /dashboard DCL < 2s wallclock |
✅ PASS
|
DCL=0.79s networkidle=1.32s navtiming.dcl=790ms navtiming.load=814ms |
 |
| T-101 |
Cat 34 |
Admin — /dashboard/consulta/startups carga sin error |
✅ PASS
|
Ruta carga con contenido. url=https://eco.lpdi.co/dashboard/consulta/startups |
 |
| T-102 |
Cat 34 |
Admin — /dashboard/consulta/icg carga sin error |
✅ PASS
|
Ruta carga con contenido. url=https://eco.lpdi.co/dashboard/consulta/icg |
 |