🧪 Guía de Pruebas - Módulo 3: Teams & Evaluation
Fecha: 31 de diciembre, 2025
Estado: ✅ Core y UI completados
📋 Requisitos Previos
Usuarios Necesarios
Necesitas crear los siguientes usuarios con sus respectivos roles:
-
ADMIN (1 usuario)
- Email:
admin@test.com(o el que prefieras) - Rol:
ADMIN - Cómo crearlo: Usa el script
scripts/create-admin.tso manualmente en la DB
- Email:
-
ORGANIZER (1 usuario)
- Email:
organizer@test.com - Rol:
ORGANIZER - Cómo crearlo: Regístrate normalmente y cambia el rol a ORGANIZER desde
/admin/users
- Email:
-
JUDGE (2-3 usuarios)
- Email:
judge1@test.com,judge2@test.com, etc. - Rol:
JUDGE - Cómo crearlo: Regístrate normalmente y cambia el rol a JUDGE desde
/admin/users
- Email:
-
PARTICIPANT (3-5 usuarios)
- Email:
participant1@test.com,participant2@test.com, etc. - Rol:
PARTICIPANT(por defecto) - Cómo crearlo: Regístrate normalmente
- Email:
🎯 Flujo de Pruebas Completo
FASE 1: Preparación (ORGANIZER/ADMIN)
-
Iniciar sesión como ORGANIZER o ADMIN
- Email:
organizer@test.comoadmin@test.com - Ir a:
/dashboard
- Email:
-
Crear un Hackathon
- Ir a:
/admin/hackathons/create(enlace en navbar: "Crear Hackathon") - Completar formulario:
- Nombre: "Hackathon de Prueba"
- Slug:
hackathon-prueba - Descripción: "Un hackathon para probar el sistema"
- Fechas importantes:
- Apertura Registro: HOY (para poder registrarse)
- Cierre Registro: MAÑANA
- Inicio: MAÑANA + 1 día
- Fin: MAÑANA + 2 días
- Deadline Submissions: MAÑANA + 2 días (mismo día que fin)
- Inicio Evaluación: MAÑANA + 3 días
- Fin Evaluación: MAÑANA + 4 días
- Tamaño equipo: Min 1, Max 5
- Agregar al menos 2 criterios de evaluación
- Click en "Crear Hackathon"
- ✅ Debería redirigir a
/admin/hackathons/hackathon-prueba/dashboard
- Ir a:
-
Publicar el Hackathon
- En el dashboard, click en "Publicar Hackathon" (si está en DRAFT)
- O ir a la página pública:
/hackathons/hackathon-prueba - Click en "Publicar Hackathon" (botón visible solo para ORGANIZER/ADMIN)
-
Verificar que el hackathon está en REGISTRATION
- El estado debería cambiar a "Abierto a Registro"
- ✅ Verificar en la página pública
FASE 2: Registro y Equipos (PARTICIPANT)
-
Iniciar sesión como PARTICIPANT 1
- Email:
participant1@test.com - Ir a:
/hackathons(enlace en navbar) - ✅ Debería ver el hackathon "Hackathon de Prueba"
- Email:
-
Registrarse en el Hackathon
- Click en el hackathon para ver detalles
- Click en "Registrarse en este Hackathon"
- ✅ Debería mostrar "✅ Estás registrado en este hackathon"
-
Crear un Equipo
- En la página de detalle del hackathon, debería aparecer sección "Acciones"
- Click en "Crear Equipo"
- Completar:
- Nombre: "Equipo Innovador"
- Descripción: "Un equipo para innovar"
- Click en "Crear Equipo"
- ✅ Debería mostrar el código de invitación (ej:
ABC123) - ¡IMPORTANTE! Copiar este código
-
Ver Detalle del Equipo
- Click en "Volver al Hackathon"
- En la sección "Acciones", debería aparecer "Ya perteneces a un equipo"
- Click en "Ver mi equipo →"
- ✅ Debería mostrar:
- Nombre del equipo
- Código de invitación
- Miembros (solo tú por ahora)
- Botón "Enviar Submission" (deshabilitado hasta RUNNING)
-
Iniciar sesión como PARTICIPANT 2
- Email:
participant2@test.com - Ir a:
/hackathons/hackathon-prueba - Registrarse en el hackathon
- Email:
-
Unirse a un Equipo
- En la página de detalle, click en "Unirse a un Equipo"
- Ingresar el código de invitación copiado anteriormente (ej:
ABC123) - Click en "Unirse al Equipo"
- ✅ Debería mostrar mensaje de éxito y redirigir
- Volver a la página de detalle del equipo
- ✅ Debería mostrar 2 miembros ahora
-
Probar límites
- Intentar crear otro equipo con PARTICIPANT 2
- ✅ Debería dar error: "Ya perteneces a un equipo"
- Intentar unirse al mismo equipo otra vez
- ✅ Debería dar error: "Ya eres miembro de este equipo"
FASE 3: Submissions (PARTICIPANT)
IMPORTANTE: Para probar submissions, el hackathon debe estar en estado RUNNING.
-
Cambiar estado del hackathon a RUNNING
- Opción 1: Esperar a que el cron job lo cambie automáticamente
- Opción 2: Editar las fechas del hackathon para que
startsAtsea en el pasado - Opción 3: Ejecutar manualmente:
pnpm cron:test
-
Crear Submission
- Iniciar sesión como PARTICIPANT 1 o 2 (miembro del equipo)
- Ir a:
/hackathons/hackathon-prueba - Click en "Ver mi equipo →"
- Click en "Enviar Submission"
- Completar formulario:
- Título: "Mi Proyecto Innovador"
- Descripción: "Una descripción detallada del proyecto..."
- Repo URL:
https://github.com/usuario/proyecto - Demo URL:
https://demo.example.com - Links adicionales (opcional):
- Video:
https://youtube.com/watch?v=123
- Video:
- Click en "Enviar Submission"
- ✅ Debería redirigir y mostrar la submission en el detalle del equipo
-
Editar Submission
- Volver al detalle del equipo
- Click en "Ver Submission →"
- O ir directamente a:
/hackathons/hackathon-prueba/teams/[teamId]/submit - Editar algún campo
- Click en "Actualizar Submission"
- ✅ Debería actualizar correctamente
-
Ver Lista de Submissions (solo cuando está en JUDGING o FINISHED)
- Cambiar estado del hackathon a JUDGING (editar fechas o esperar cron)
- Ir a:
/hackathons/hackathon-prueba/submissions - ✅ Debería mostrar todas las submissions
- Click en una submission
- ✅ Debería mostrar detalle completo
FASE 4: Gestión de Jueces (ORGANIZER/ADMIN)
-
Iniciar sesión como ORGANIZER o ADMIN
- Email:
organizer@test.comoadmin@test.com - Ir a:
/admin/hackathons/hackathon-prueba/dashboard - Click en "Gestionar Jueces" (botón nuevo en "Acciones")
- Email:
-
Asignar Jueces
- En el campo de búsqueda, escribir el email de un JUDGE:
judge1@test.com - Click en "Buscar"
- ✅ Debería mostrar el usuario encontrado
- Click en "Asignar"
- ✅ Debería aparecer en la lista de "Jueces Asignados"
- En el campo de búsqueda, escribir el email de un JUDGE:
-
Asignar más jueces
- Repetir con
judge2@test.com - ✅ Debería tener 2 jueces asignados
- Repetir con
-
Remover un Juez
- Click en "Remover" junto a un juez
- Confirmar
- ✅ Debería desaparecer de la lista
-
Probar validaciones
- Intentar asignar un PARTICIPANT como juez
- ✅ Debería dar error: "debe tener rol JUDGE"
- Intentar asignar un juez que ya participa en el hackathon (tiene equipo)
- ✅ Debería dar error: "ya participa en este hackathon"
FASE 5: Evaluación (JUDGE)
IMPORTANTE: Para probar evaluación, el hackathon debe estar en estado JUDGING.
-
Cambiar estado del hackathon a JUDGING
- Editar fechas o esperar cron job
- O ejecutar:
pnpm cron:test
-
Iniciar sesión como JUDGE
- Email:
judge1@test.com - Ir a:
/judge/hackathons/hackathon-prueba(si está implementado) - O ir directamente a:
/hackathons/hackathon-prueba/submissions - ✅ Debería ver las submissions
- Email:
-
Evaluar una Submission
- Click en una submission
- Ir a:
/judge/hackathons/hackathon-prueba/submissions/[submissionId]/evaluate(si está implementado) - O usar la acción directamente desde el código
- Puntuar cada criterio:
- Criterio 1: 8/10
- Criterio 2: 7/10
- Agregar comentarios opcionales
- Click en "Enviar Puntuación"
- ✅ Debería guardar correctamente
FASE 6: Leaderboard (Público)
- Ver Leaderboard
- Ir a:
/hackathons/hackathon-prueba/leaderboard(si está implementado) - ✅ Debería mostrar equipos ordenados por puntaje ponderado
- ✅ Debería mostrar:
- Posición
- Nombre del equipo
- Puntaje ponderado
- Puntaje total
- Máximo posible
- Ir a:
🔍 Verificaciones de Seguridad
✅ Verificadas Automáticamente
-
RBAC en todas las páginas
- ✅ Todas las páginas usan Client Components con
useUser() - ✅ No hay llamadas a
auth()en Server Components (excepto la página pública que ya estaba) - ✅ Todas las Server Actions reciben
currentUserIdcomo parámetro
- ✅ Todas las páginas usan Client Components con
-
Validaciones
- ✅ Solo PARTICIPANT puede crear/unirse a equipos
- ✅ Solo PARTICIPANT puede crear/editar submissions
- ✅ Solo ORGANIZER/ADMIN puede asignar jueces
- ✅ Solo JUDGE puede puntuar submissions
- ✅ Validación de fechas en todas las acciones
📍 URLs Importantes
Para PARTICIPANT
/hackathons- Lista de hackathons públicos/hackathons/[slug]- Detalle del hackathon/hackathons/[slug]/teams/create- Crear equipo/hackathons/[slug]/teams/join- Unirse a equipo/hackathons/[slug]/teams/[teamId]- Detalle del equipo/hackathons/[slug]/teams/[teamId]/submit- Crear/editar submission/hackathons/[slug]/submissions- Lista de submissions (solo JUDGING/FINISHED)/hackathons/[slug]/submissions/[submissionId]- Detalle de submission
Para ORGANIZER/ADMIN
/organizer/hackathons- Mis hackathons/admin/hackathons/create- Crear hackathon/admin/hackathons/[slug]/dashboard- Dashboard del hackathon/admin/hackathons/[slug]/judges- Gestionar jueces/admin/hackathons/[slug]- Editar hackathon
Para JUDGE
/judge/hackathons/[slug]- Panel de juez (pendiente)/judge/hackathons/[slug]/submissions/[submissionId]/evaluate- Evaluar submission (pendiente)
Público
/hackathons/[slug]/leaderboard- Leaderboard (pendiente)
⚠️ Notas Importantes
-
Estados del Hackathon:
DRAFT→ Solo visible para ORGANIZER/ADMINREGISTRATION→ Visible públicamente, permite registro y creación de equiposRUNNING→ Permite crear/editar submissionsJUDGING→ Permite evaluar submissions, visible públicamenteFINISHED→ Todo visible, leaderboard disponible
-
Cron Job:
- Los cambios de estado son automáticos según las fechas
- Para probar localmente:
pnpm cron:test - Asegúrate de que el servidor esté corriendo (
pnpm dev)
-
Enlaces en Navbar:
- ✅ Dashboard (todos)
- ✅ Gestión de Usuarios (ADMIN)
- ✅ Mis Hackathons (ORGANIZER/ADMIN)
- ✅ Crear Hackathon (ORGANIZER/ADMIN)
- ✅ Hackathons (PARTICIPANT)
- ⚠️ Enlaces a teams/submissions están en la página de detalle del hackathon (no en navbar)
🐛 Problemas Conocidos
Ninguno hasta el momento. Si encuentras algún error, verifica:
- Que el usuario tenga el rol correcto
- Que el hackathon esté en el estado correcto
- Que el usuario esté registrado (para PARTICIPANT)
- Que las fechas sean correctas
Última Actualización: 31 de diciembre, 2025