Ir al contenido
Cargando…

Pruebas

Lista numerada de todo lo verificable desde el sitio. Marca cada punto a mano.

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