Pruebas
Lista numerada de todo lo verificable desde el sitio. Marca cada punto a mano.
Preparación
Sección titulada «Preparación»Backend en modo dev (AUTH_MODE=dev) con la base sembrada (curso rob272,
token_manifiesto = sha256 de dev-manifiesto-token), y el sitio con
npm run dev en http://localhost:4321.
1. Manifiesto generado
Sección titulada «1. Manifiesto generado»npm run buildtermina sin errores.- Existe
public/manifiesto.json. - Contiene
curso_id: "rob272", 3 plantillas y 3 logros. - Cada plantilla trae
codigo(el texto completo del módulo) yhash(64 caracteres hex).
2. Manifiesto enviado
Sección titulada «2. Manifiesto enviado»npm run manifiesto:enviarrespondeHTTP 200.- La respuesta reporta
plantillas: { creadas: 3, ... }ylogros: { creados: 3, ... }. - Volver a enviarlo reporta
creadas: 0yactualizadas: 0(mismo hash).
3. Login dev
Sección titulada «3. Login dev»- Sin sesión, en la franja bajo la cabecera aparece el formulario correo + nombre y el botón “Entrar (dev)”.
- Entrar con
ana@eafit.edu.co/Ana Pérezreemplaza el formulario por el nombre y el botón “Salir”. - Recargar la página conserva la sesión (token en
localStorage, claveaula_token). - “Salir” vuelve a mostrar el formulario.
- Con el backend apagado, intentar entrar muestra un mensaje legible, no una carga infinita.
4. Consentimiento de datos
Sección titulada «4. Consentimiento de datos»- En el primer login de un correo nuevo aparece el aviso de tratamiento de datos.
- El aviso dice qué se guarda, para qué, y que se conserva entre semestres.
- “Acepto” hace desaparecer el aviso.
- Salir y volver a entrar con el mismo correo ya no muestra el aviso.
5. Ejercicio con sesión
Sección titulada «5. Ejercicio con sesión»- En Semana 1 · En clase aparecen dos ejercicios con enunciado y valores numéricos (nada de
{{L1}}). - Recargar la página cambia los valores (semilla nueva en cada carga).
- Responder mal el paramétrico: aparece “Incorrecto”, la respuesta correcta y el bloque de retroalimentación.
- Responder bien: aparece “¡Correcto!” y los puntos obtenidos (10 + bonus la primera vez).
- El ejercicio de opción múltiple muestra 4 radios con las definiciones DH barajadas.
6. Nueva instancia
Sección titulada «6. Nueva instancia»- Tras un fallo aparece el botón “Nueva instancia”.
- Pulsarlo cambia los valores del enunciado y limpia el resultado.
- El nuevo intento se registra igual que el anterior.
7. Sin sesión
Sección titulada «7. Sin sesión»- Sin haber entrado, el ejercicio se genera y se puede responder igual.
- Tras responder aparece “Inicia sesión para registrar tu intento”.
- El veredicto correcto/incorrecto es el mismo que daría el backend (verificación local).
8. Variante LLM
Sección titulada «8. Variante LLM»- Con el backend sin variantes (
LLM_PROVEEDORESvacío), el enunciado mostrado es el base del módulo. - Cargar una variante en la base de datos y recargar: el enunciado cambia de redacción pero los valores numéricos son los mismos.
- Con el endpoint de variante fallando, el ejercicio sigue mostrando el enunciado base y nada se rompe.
9. Polling y barra de clase
Sección titulada «9. Polling y barra de clase»- Con sesión y sin clase abierta, no aparece ninguna barra.
- El profesor abre la clase de la semana 1 desde el panel; en ≤ 5 s aparece “Clase abierta · semana 1”.
- En la pestaña Red del navegador se ve una petición a
/cursos/rob272/estadocada ~5 s. - Al cerrar la clase, la barra desaparece en ≤ 5 s.
- Al cambiar de página, el polling anterior se detiene (no se acumulan temporizadores).
10. Ejercicio sincronizado
Sección titulada «10. Ejercicio sincronizado»- El profesor publica un sincronizado; el sitio muestra el aviso destacado “📣 Ejercicio sincronizado”.
- El enunciado del sincronizado es idéntico en dos navegadores distintos (misma semilla).
- El resto de la página sigue usable mientras el sincronizado está activo (no bloquea).
- Responder el sincronizado registra el intento y el panel del profesor cuenta la respuesta.
11. Progreso y logros
Sección titulada «11. Progreso y logros»- Mi progreso muestra puntos, racha e intentos/aciertos.
- Muestra “Semana 1: N de 2 completadas” y “Semana 2: N de 1”.
- Tras el primer acierto aparece el logro 🎯 Primer acierto entre los obtenidos.
- Los logros aún no ganados salen en gris con “(pendiente)”.
- La tabla lista las 3 plantillas con su estado ✅/pendiente.
12. Prerrequisitos
Sección titulada «12. Prerrequisitos»- En Semana 2 · En clase, sin haber completado la semana 1, aparece el aviso de prerrequisito.
- El aviso no impide responder (el curso es formativo).
- Tras completar
semana-1/cinematica-2r, el aviso desaparece al recargar.
13. Retroalimentación
Sección titulada «13. Retroalimentación»- Tras responder con sesión aparece el control de dificultad 1–5 y el campo de comentario.
- Enviar responde con “Gracias por tu comentario”.
- El comentario aparece en
GET /cursos/rob272/retroalimentaciondesde el panel.
14. Degradación con el backend apagado
Sección titulada «14. Degradación con el backend apagado»- Apagar el backend. Semana 1 · Antes de clase se ve completa e igual que antes.
- Semana 1 · En clase: los ejercicios se generan y se pueden responder (verificación local).
- Al intentar registrar un intento con sesión aparece “No se pudo conectar con el servidor de ejercicios, intenta más tarde”.
- Ninguna isla se queda cargando para siempre ni tumba el resto de la página.
- La navegación del sitio sigue funcionando normalmente.
15. Login apagado por fecha de fin
Sección titulada «15. Login apagado por fecha de fin»- Poner
CURSO_FECHA_FIN=2020-01-01en.envy ejecutarnpm run build. - En el sitio construido (
npm run preview), en lugar del botón/formulario aparece “Este curso ya finalizó”. - Poner
CURSO_FECHA_FIN=(vacía) y reconstruir: el login vuelve. - Poner
CURSO_FECHA_FIN= la fecha de hoy y reconstruir: el login sigue disponible (la fecha es inclusiva). - Cambiar la variable sin reconstruir no cambia nada: el valor quedó congelado en el HTML.