# QA de Navegador — admin_alumnos

**Fecha:** 2026-07-14
**Colegio:** Juan XXIII (colegio 11) · **Alumno:** SANTIAGO RIKARDO AROCHA RIVERA (Primer Año / A, cédula 37093340)
**Método:** navegador real (Playwright MCP) siguiendo cada `.md` de `documentacion/modulos/`, forzando también los casos de error.

## Resumen

| Módulo | Camino feliz | Casos de error | Veredicto |
|--------|:---:|:---:|---|
| Boletín de Calificaciones | ✅ | ✅ (1 de 3 ejercido) | OK |
| Comunicados | ⚠️ | — | 2 hallazgos |
| Calendario de Actividades | ✅ | no forzable | OK |
| Calendario de Evaluaciones | ❌ | — | **Bug: endpoint faltante** |
| Chat con Docentes | ❌ | ✅ | **Bug JS confirmado** |
| Corte de Notas | ✅ | ✅ | OK |
| Constancia de Inscripción | ✅ | — | OK |
| Constancia de Estudio | ✅ | — | OK |
| Constancia de Asistencia | ✅ | — | OK |
| Constancia de Promedio | ✅ | — | OK |
| Horario de Clases | — | ✅ | OK (sin horario cargado) |
| Historial de Pagos | ✅ | no forzable | OK |
| Encuestas | ⚠️ parcial | — | OK (sin encuesta pendiente) |
| Docente Guía (`admin_docentes`) | — | — | **No ejercido: requiere sesión docente** |
| Pantalla de Inicio (Home) | ✅ | — | OK |
| Material de Clases (Tareas) | ✅ | ✅ | **Bug: asset filestyle 404** |
| Video Aula | — | ✅ | OK (tabla vacía) |
| Planificación Escolar | — | ✅ | OK (tabla vacía) |
| Mi Perfil | ✅ UI | no forzable | OK (guardado no ejercido) |
| Registrar Pago | ✅ | ✅ | OK (envío no ejercido) |

---

## Boletín de Calificaciones — OK
- Login, menú Calificaciones → Boletín de Notas, tarjeta de datos, período/lapso e impresión: todo OK.
- PDF generado correctamente: `procesos/boletin-liceo.php?lapsom=1&peri=2526`, `content-type: application/pdf`. Routing por grado correcto (Primer Año → liceo).
- Caso de error **ejercido**: "Seleccione el lapso antes de imprimir" ✅.
- Casos **no ejercidos** por falta de datos: "Cargar Foto Primero" (el alumno ya tiene foto) y bloqueo de moroso (el alumno no es moroso, aunque tenga pago pendiente). Lógica presente y correcta en `boletin.php:6` y `:77-85`.

## Comunicados — 2 hallazgos
- Tarjetas (título/fecha/resumen) y modal "Ver más": OK.
- **Doc desactualizada:** el paso 6 del `.md` describe un botón "Ver Todos" que **no existe**. La página migrada ya muestra comunicados generales *y* de docentes juntos (`publicacion.php:36` y `:64`). → Actualizar el `.md`.
- **Adjunto 404 (entorno):** el iframe carga `https://<DOMINIO>/archivos/...pdf` (código correcto, `publicacion.php:39`) pero el archivo no está en el entorno local. Esperado en dev; verificar en producción.

## Calendario de Actividades — OK
- Calendario renderiza, navegación de meses/vistas, 13 actividades.
- Modal de detalle se llena correcto (Comienza/Termina/Título/Descripción) con click real.
- Cosmético: la barrita muestra `8:4 am` (minutos sin cero, formato FullCalendar); el modal sí muestra `08:04`. No funcional.

## Calendario de Evaluaciones — BUG (endpoint faltante)
- Lista de evaluaciones y tooltip: OK (datos embebidos server-side, `cal-evaluaciones.php:23-26`).
- **Modal de detalle roto:** `verEvento()` hace `$.get('../eval-calen-get.php?id=…')` y ese archivo **no existe en todo el repo** → 404 (`cal-evaluaciones.php:229`). Pasos 6-7 del `.md` no funcionan.
- **Fix:** crear/migrar `eval-calen-get.php`, o rellenar el modal desde el array `data` local (hoy `$dataJson` no trae docente ni descripción, habría que ampliarlo).

## Chat con Docentes — BUG (JS confirmado)
- Tarjetas (11 docentes), modal, historial y caso de error ("Por favor, escriba un mensaje antes de enviar"): OK.
- **Envío roto visualmente:** `verChat` define 6 parámetros (`chat-docentes.php:142`) pero tras enviar se llama con 5, sin `lin` (`:174`). Con `lin=undefined`, la línea `:149` (sin `?.`, a diferencia de `:148`) lanza `TypeError: null.classList` y aborta antes del refresco del historial (`:157`).
- El mensaje **sí se guarda** (servidor devuelve `isSuccessful`, el textarea se vacía en `:173`), pero el historial nunca se refresca → el alumno cree que no se envió. Paso 8 del `.md` falla.
- **Fix mínimo:** envolver el bloque `:148-156` en `if (lin) { … }` — al reenviar (sin `lin`) se salta el re-marcado de la tarjeta y va directo al refresco.

## Corte de Notas — OK
- Misma estructura que Boletín: foto, período, lapso, botón "Imprimir Corte de Notas".
- Caso de error **ejercido**: "Seleccione el lapso antes de imprimir" ✅.
- PDF generado: `procesos/corte-notas.php?lapsom=1&peri=2526`, `application/pdf`.

## Constancias (Inscripción / Estudio / Asistencia / Promedio) — OK
- Las 4 generan PDF (`application/pdf`) en pestaña nueva:
  - Inscripción → `procesos/cons-ins.php`
  - Estudio → `procesos/cons-est.php`
  - Asistencia → `procesos/cons-asi.php` (con formulario fecha + motivo; fecha de hoy prellenada)
  - Promedio → `procesos/cons-prom.php` (SANTIAGO es bachillerato, la ve)
- Sin advertencias de datos faltantes ni bloqueo por deuda (el alumno no es moroso; el $300 pendiente no bloquea).
- Casos de error del `.md` (advertencias amarillas de perfil incompleto, bloqueo por deuda/moroso) **no ejercidos**: este alumno tiene el perfil completo y no es moroso.

## Horario de Clases — OK (caso de error)
- Muestra el mensaje exacto del `.md`: "Horario aún no publicado / El horario de clases para el período 2025-2026 aún no está disponible."
- Camino feliz (ver la imagen del horario) **no ejercible**: no hay horario cargado para este grado/sección en el entorno.
- Nota menor: la foto del alumno carga desde `https://<DOMINIO>/fotoalu/37093340.png` (dominio del colegio); puede dar 404 en local igual que los adjuntos de Comunicados. Cosmético.

## Historial de Pagos — OK
- Tabla "Pagos Procesados" con columnas Factura / Fecha / Concepto / Monto Bs., 10 filas.
- Buscador (DataTables) **ejercido**: filtra correctamente por número de factura.

## Encuestas — OK (parcial)
- 1 encuesta ("Cupo, Reservar o Retirar para el 2025-2026"), ya respondida (botón celeste impresora → `procesos/encuesta-pdf.php?encuesta=1`).
- "Ver respuesta" **ejercido**: genera PDF (`application/pdf`).
- Flujo de **responder** (pasos 4-7: formulario, Siguiente, Enviar) **no ejercible**: no hay encuestas pendientes (lila) para este alumno.

## Docente Guía — NO EJERCIDO (requiere sesión docente)
- `admin_docentes/docente-guia.php` exige `cargo > 1` (docente); la sesión de QA es de alumno, así que no se pudo probar en navegador. Requiere credenciales de un docente que sea **docente guía** de alguna sección.
- **Observación de código a verificar** (no confirmada): el filtro Sección/Lapso usa `<select name="grado">` cuyo `value` es solo `cod_grado` (`docente-guia.php:115`), mientras `seccion` viaja en un `<input type="hidden">` con el valor inicial fijo (`:120`). Si un docente es guía de **varias secciones**, cambiar el select de grado no actualiza la sección → el submit GET podría caer en `!$esGuia` → "No tienes acceso como docente guía a esa sección". Confirmar con un docente multi-sección.

## Pantalla de Inicio (Home) — OK
- Saludo "Bienvenido, SANTIAGO RIKARDO"; las 4 tarjetas: Estado de Pagos (amarillo/"Pendiente: $300,00"), Grado/Sección (Primer Año/A), Período Activo (2025-2026), Mensajes Nuevos (0).
- "Accesos Rápidos" con los 8 botones y menú lateral completo. Coincide con el `.md`.

## Material de Clases (Tareas) — OK con BUG (asset faltante)
- Tabla con selector de momento y columnas correctas; 1 tarea ("Prueba de carga de material", Castellano, status "PENDIENTE POR ENTREGAR").
- Modal ojito (`verTarea`) **ejercido**: muestra datos + iframe al `.docx` (mensaje "Archivo descargado a su dispositivo" para archivos no visualizables).
- Modal "Enviar Tarea al Docente" abre; caso de error **ejercido**: "Adjunte Archivos" (SweetAlert) ✅.
- **Bug (asset no migrado):** `bootstrap-filestyle.min.js` da **404** (`../assets/bootstrap_filestyle_2_1_0/src/…`, no existe en el repo) → `$(...).filestyle is not a function` (`material.php:497` y `:499`). El botón estilizado "Buscar Archivos" no se renderiza; el `<input type="file" class="filestyle">` sigue siendo funcional como input nativo, pero la excepción JS puede afectar init posterior. → Migrar el asset o quitar la dependencia.
- Otros 404 cosméticos: `/imagenes/app.jpg`, `/comprimePdf.png`, `/loader.gif` (assets bajo raíz, faltan en dev).
- Envío real de tarea (sube archivo + notifica al docente) **no ejercido** (write/upload; sin autorización, como el chat).

## Video Aula — OK (tabla vacía)
- Tabla vacía ("Ningún dato disponible"), columnas correctas (Fecha/Materia/Docente/Título/Lapso/Acción). Caso de error del `.md` (tabla vacía) confirmado.
- Ver video / marcar como visto **no ejercible**: no hay videos publicados.

## Planificación Escolar — OK (tabla vacía)
- Selector de momento **ejercido** (recarga `?lapVer=2`); 1er y 2do momento vacíos. Columnas correctas (Fecha/Título/Materia/Acción).
- Modal ojito **no ejercible**: no hay planificación cargada.

## Mi Perfil — OK (UI; guardado no ejercido)
- Todas las tarjetas del `.md`: Fotografías (Foto Alumno / Foto Representante / ¿Cómo Capturar Foto?), Datos del Estudiante, Representante, Madre, Padre, Contactos de Emergencia, botón "Guardar Cambios" (79 campos).
- "Guardar Cambios" **no ejercido**: escribe en la BD del alumno real; no se disparó para no alterar datos.

## Registrar Pago — OK (envío no ejercido)
- Las 3 tarjetas (Datos del Estudiante, Cálculo del Monto, Datos del Pago), 3 selects (tip_opera/ban_recep/banco_emi), botón "Enviar Pago".
- Caso de error **ejercido**: con campos de texto llenos y selects vacíos → SweetAlert "Seleccione tipo de Operación" (`registrar-pago.php:278`). Validación devuelve false, no escribe.
- Envío real **no ejercido**: notifica por correo a administración + registra; sin autorización.

---

## Notas
- Quedó **1 registro de prueba QA en la BD** (mensaje al docente MIOXARA RODRIGUEZ), enviado con autorización explícita.
- No se aplicó ningún fix; este documento es solo reporte.
- **Pendientes de datos/permisos:** Docente Guía (sesión docente), envío real de Tarea/Pago/Perfil (writes/email), responder encuesta (sin pendientes), ver video/planificación/horario (sin contenido cargado).
