diff --git a/docs/qa-testing/DEFECTOS-QA.md b/docs/qa-testing/DEFECTOS-QA.md new file mode 100644 index 0000000..aa92ce8 --- /dev/null +++ b/docs/qa-testing/DEFECTOS-QA.md @@ -0,0 +1,265 @@ +# Reporte de Defectos - Pruebas Manuales QA + +**Fecha:** 2026-01-07 +**Tester:** QA Automation con Playwright +**Ambiente:** k3s (academia.ingeniumcodex.com) +**Estado:** Completado + +--- + +## Resumen Ejecutivo + +| Severidad | Cantidad | Corregidos | +|-----------|----------|------------| +| Critica | 1 | 1 | +| Alta | 1 | 1 | +| Media | 1 | 1 | +| Baja | 1 | 1 | + +**Todos los defectos han sido corregidos y validados.** + +--- + +## DEF-001: SQL Server OOMKilled - Memoria Insuficiente + +### Clasificacion +- **ID:** DEF-001 +- **Severidad:** CRITICA +- **Componente:** Infraestructura / SQL Server +- **Estado:** CORREGIDO + +### Descripcion +SQL Server se reinicia continuamente debido a falta de memoria (OOMKilled). El pod entra en CrashLoopBackOff impidiendo el funcionamiento de la aplicacion. + +### Pasos para Reproducir +1. Desplegar la aplicacion en k3s con los manifiestos originales +2. Esperar 2-3 minutos +3. Observar que SQL Server se reinicia repetidamente + +### Resultado Esperado +SQL Server debe iniciar y permanecer estable sin reinicios. + +### Resultado Actual +- Exit Code: 137 (SIGKILL - OOMKilled) +- SQL Server se reinicia cada ~2 minutos +- Errores en logs: 17300, 17312, 28709 (recursos insuficientes) + +### Evidencia +![Error de conexion](screenshots/01-error-inicial-carga.png) + +### Solucion Implementada +Se modifico `deploy/k3s/sqlserver.yaml`: +- Aumentar memoria limite a 1.5Gi +- Aumentar MSSQL_MEMORY_LIMIT_MB a 1024 +- Aumentar initialDelaySeconds del liveness probe a 120 +- Aumentar failureThreshold a 5 + +**Resultado post-correccion:** SQL Server estable con 691Mi de RAM y 0 reinicios. + +--- + +## DEF-002: Mensajes de Restriccion en Ingles + +### Clasificacion +- **ID:** DEF-002 +- **Severidad:** ALTA +- **Componente:** Frontend / Localizacion +- **Estado:** CORREGIDO + +### Descripcion +Los mensajes de restriccion en la pagina de inscripcion se muestran en ingles en lugar de espanol, rompiendo la consistencia del idioma de la aplicacion. + +### Pasos para Reproducir +1. Navegar a la pagina de inscripcion de un estudiante +2. Inscribir al estudiante en una materia +3. Observar los mensajes de restriccion en las otras materias + +### Resultado Esperado +Los mensajes deben mostrarse en espanol: +- "Ya inscrito" +- "Ya tienes una materia con este profesor" +- "Maximo 3 materias alcanzado" + +### Resultado Actual +Los mensajes se muestran en ingles: +- "Already enrolled" +- "Already have a subject with this professor" +- "Maximum 3 subjects reached" + +### Evidencia +![Mensajes en ingles](screenshots/07-mensajes-en-ingles-defecto.png) +![Maximo materias](screenshots/08-maximo-materias-ingles.png) + +### Soluciones Propuestas + +#### Solucion A: Traducir en el frontend (servicio) +- **Descripcion:** Crear un diccionario de traducciones en el EnrollmentService +- **Pros:** Cambio localizado, rapido de implementar +- **Contras:** Duplica logica de traduccion + +#### Solucion B: Traducir en el backend (GraphQL) +- **Descripcion:** Retornar mensajes en espanol desde la API +- **Pros:** Fuente unica de verdad +- **Contras:** Requiere cambios en backend + +#### Solucion C: Usar i18n en Angular +- **Descripcion:** Implementar sistema de internacionalizacion completo +- **Pros:** Escalable para multiples idiomas +- **Contras:** Mayor complejidad, over-engineering para este caso + +### Solucion Unificada Recomendada +Implementar Solucion A: traducir los mensajes en el frontend ya que la API retorna codigos/mensajes en ingles y el frontend es responsable de la presentacion. + +**Archivo a modificar:** `src/frontend/src/app/features/enrollment/pages/enrollment-page/enrollment-page.component.ts` + +```typescript +private readonly translations: Record = { + 'Already enrolled': 'Ya inscrito', + 'Already have a subject with this professor': 'Ya tienes una materia con este profesor', + 'Maximum 3 subjects reached': 'Maximo 3 materias alcanzado' +}; + +translateMessage(message: string): string { + return this.translations[message] || message; +} +``` + +--- + +## DEF-003: Error Gramatical en Pluralizacion + +### Clasificacion +- **ID:** DEF-003 +- **Severidad:** MEDIA +- **Componente:** Frontend / Pagina Companeros +- **Estado:** CORREGIDO + +### Descripcion +En la pagina de companeros de clase, cuando hay exactamente 1 companero, el texto muestra "1 companeros" (plural) en lugar de "1 companero" (singular). + +### Pasos para Reproducir +1. Crear dos estudiantes +2. Inscribir ambos en la misma materia +3. Ver la pagina de companeros de cualquiera de los dos +4. Observar el contador junto al nombre de la materia + +### Resultado Esperado +- 0 companeros +- 1 companero (singular) +- 2 companeros (plural) + +### Resultado Actual +- 1 companeros (incorrecto) + +### Evidencia +![Error gramatical](screenshots/09-error-gramatical-companeros.png) + +### Soluciones Propuestas + +#### Solucion A: Condicional simple en template +```html +{{ count }} {{ count === 1 ? 'companero' : 'companeros' }} +``` + +#### Solucion B: Pipe de pluralizacion +```typescript +@Pipe({ name: 'pluralize' }) +export class PluralizePipe { + transform(count: number, singular: string, plural: string): string { + return count === 1 ? singular : plural; + } +} +``` + +#### Solucion C: Usar Angular i18n con ICU +```html +{count, plural, =1 {companero} other {companeros}} +``` + +### Solucion Unificada Recomendada +Implementar Solucion A (condicional simple) por ser la mas directa y no requerir cambios estructurales. + +**Archivo a modificar:** `src/frontend/src/app/features/classmates/pages/classmates-page/classmates-page.component.html` + +--- + +## DEF-004: Favicon No Encontrado (404) + +### Clasificacion +- **ID:** DEF-004 +- **Severidad:** BAJA +- **Componente:** Frontend / Assets +- **Estado:** CORREGIDO + +### Descripcion +El navegador intenta cargar `/favicon.ico` pero recibe un error 404. Esto genera errores en la consola del navegador. + +### Pasos para Reproducir +1. Abrir la aplicacion en el navegador +2. Abrir las herramientas de desarrollador (F12) +3. Observar la pestana de red o consola + +### Resultado Esperado +El favicon debe cargarse correctamente o no debe haber referencia al mismo. + +### Resultado Actual +``` +Failed to load resource: the server responded with a status of 404 () +@ https://academia.ingeniumcodex.com/favicon.ico +``` + +### Evidencia +Error visible en consola del navegador durante las pruebas. + +### Soluciones Propuestas + +#### Solucion A: Agregar favicon +- **Descripcion:** Crear y agregar un favicon.ico al proyecto +- **Pros:** Mejora UX, profesionalismo +- **Contras:** Requiere crear el asset + +#### Solucion B: Remover referencia +- **Descripcion:** Quitar la referencia al favicon en index.html +- **Pros:** Elimina el error +- **Contras:** Sin icono en pestanas del navegador + +### Solucion Unificada Recomendada +Implementar Solucion A: crear un favicon simple basado en el logo "S" de la aplicacion. + +**Archivos a modificar:** +- Crear `src/frontend/src/favicon.ico` +- Verificar referencia en `src/frontend/src/index.html` + +--- + +## Capturas de Pantalla + +| Archivo | Descripcion | +|---------|-------------| +| 01-error-inicial-carga.png | Error de conexion al servidor (DEF-001) | +| 02-listado-estudiantes.png | Listado de estudiantes funcionando | +| 03-formulario-nuevo-estudiante.png | Formulario de creacion | +| 04-validacion-email-invalido.png | Validacion de email funcionando | +| 05-estudiante-creado.png | Confirmacion de creacion exitosa | +| 06-pagina-inscripcion.png | Pagina de inscripcion | +| 07-mensajes-en-ingles-defecto.png | Mensajes en ingles (DEF-002) | +| 08-maximo-materias-ingles.png | Mensaje maximo materias en ingles | +| 09-error-gramatical-companeros.png | Error "1 companeros" (DEF-003) | +| 10-dialogo-confirmacion-eliminar.png | Dialogo de confirmacion correcto | +| 11-validacion-mensajes-espanol.png | Mensajes traducidos a espanol (DEF-002 VALIDADO) | +| 12-validacion-pluralizacion.png | Pluralizacion corregida (DEF-003 VALIDADO) | + +--- + +## Historial de Cambios + +| Fecha | Cambio | +|-------|--------| +| 2026-01-07 | Creacion del documento | +| 2026-01-07 | DEF-001 identificado y corregido (SQL Server OOM) | +| 2026-01-07 | DEF-002, DEF-003, DEF-004 identificados | +| 2026-01-07 | Soluciones propuestas para todos los defectos | +| 2026-01-08 | DEF-002 corregido (mensajes traducidos a espanol) | +| 2026-01-08 | DEF-003 corregido (pluralizacion "companero/companeros") | +| 2026-01-08 | DEF-004 corregido (favicon SVG agregado) | +| 2026-01-08 | Todas las correcciones validadas con Playwright | diff --git a/docs/qa-testing/screenshots/01-error-inicial-carga.png b/docs/qa-testing/screenshots/01-error-inicial-carga.png new file mode 100644 index 0000000..299dd3d Binary files /dev/null and b/docs/qa-testing/screenshots/01-error-inicial-carga.png differ diff --git a/docs/qa-testing/screenshots/01-lista-estudiantes.png b/docs/qa-testing/screenshots/01-lista-estudiantes.png new file mode 100644 index 0000000..e60ecf5 Binary files /dev/null and b/docs/qa-testing/screenshots/01-lista-estudiantes.png differ diff --git a/docs/qa-testing/screenshots/02-formulario-nuevo-estudiante.png b/docs/qa-testing/screenshots/02-formulario-nuevo-estudiante.png new file mode 100644 index 0000000..c943bdb Binary files /dev/null and b/docs/qa-testing/screenshots/02-formulario-nuevo-estudiante.png differ diff --git a/docs/qa-testing/screenshots/02-listado-estudiantes.png b/docs/qa-testing/screenshots/02-listado-estudiantes.png new file mode 100644 index 0000000..5649a9b Binary files /dev/null and b/docs/qa-testing/screenshots/02-listado-estudiantes.png differ diff --git a/docs/qa-testing/screenshots/03-formulario-lleno.png b/docs/qa-testing/screenshots/03-formulario-lleno.png new file mode 100644 index 0000000..ae8a6c8 Binary files /dev/null and b/docs/qa-testing/screenshots/03-formulario-lleno.png differ diff --git a/docs/qa-testing/screenshots/03-formulario-nuevo-estudiante.png b/docs/qa-testing/screenshots/03-formulario-nuevo-estudiante.png new file mode 100644 index 0000000..c943bdb Binary files /dev/null and b/docs/qa-testing/screenshots/03-formulario-nuevo-estudiante.png differ diff --git a/docs/qa-testing/screenshots/04-estudiante-creado.png b/docs/qa-testing/screenshots/04-estudiante-creado.png new file mode 100644 index 0000000..0ac1740 Binary files /dev/null and b/docs/qa-testing/screenshots/04-estudiante-creado.png differ diff --git a/docs/qa-testing/screenshots/04-validacion-email-invalido.png b/docs/qa-testing/screenshots/04-validacion-email-invalido.png new file mode 100644 index 0000000..4bac699 Binary files /dev/null and b/docs/qa-testing/screenshots/04-validacion-email-invalido.png differ diff --git a/docs/qa-testing/screenshots/05-error-editar-estudiante.png b/docs/qa-testing/screenshots/05-error-editar-estudiante.png new file mode 100644 index 0000000..7c464f5 Binary files /dev/null and b/docs/qa-testing/screenshots/05-error-editar-estudiante.png differ diff --git a/docs/qa-testing/screenshots/05-estudiante-creado.png b/docs/qa-testing/screenshots/05-estudiante-creado.png new file mode 100644 index 0000000..a834b75 Binary files /dev/null and b/docs/qa-testing/screenshots/05-estudiante-creado.png differ diff --git a/docs/qa-testing/screenshots/06-error-estudiante-no-encontrado.png b/docs/qa-testing/screenshots/06-error-estudiante-no-encontrado.png new file mode 100644 index 0000000..7a1b294 Binary files /dev/null and b/docs/qa-testing/screenshots/06-error-estudiante-no-encontrado.png differ diff --git a/docs/qa-testing/screenshots/06-pagina-inscripcion.png b/docs/qa-testing/screenshots/06-pagina-inscripcion.png new file mode 100644 index 0000000..8a674c0 Binary files /dev/null and b/docs/qa-testing/screenshots/06-pagina-inscripcion.png differ diff --git a/docs/qa-testing/screenshots/07-editar-juan-perez.png b/docs/qa-testing/screenshots/07-editar-juan-perez.png new file mode 100644 index 0000000..fc0b349 Binary files /dev/null and b/docs/qa-testing/screenshots/07-editar-juan-perez.png differ diff --git a/docs/qa-testing/screenshots/07-mensajes-en-ingles-defecto.png b/docs/qa-testing/screenshots/07-mensajes-en-ingles-defecto.png new file mode 100644 index 0000000..c7ae6d5 Binary files /dev/null and b/docs/qa-testing/screenshots/07-mensajes-en-ingles-defecto.png differ diff --git a/docs/qa-testing/screenshots/08-formulario-edicion-juan.png b/docs/qa-testing/screenshots/08-formulario-edicion-juan.png new file mode 100644 index 0000000..b8d939e Binary files /dev/null and b/docs/qa-testing/screenshots/08-formulario-edicion-juan.png differ diff --git a/docs/qa-testing/screenshots/08-maximo-materias-ingles.png b/docs/qa-testing/screenshots/08-maximo-materias-ingles.png new file mode 100644 index 0000000..75fc331 Binary files /dev/null and b/docs/qa-testing/screenshots/08-maximo-materias-ingles.png differ diff --git a/docs/qa-testing/screenshots/09-error-gramatical-companeros.png b/docs/qa-testing/screenshots/09-error-gramatical-companeros.png new file mode 100644 index 0000000..b175579 Binary files /dev/null and b/docs/qa-testing/screenshots/09-error-gramatical-companeros.png differ diff --git a/docs/qa-testing/screenshots/09-estudiante-actualizado.png b/docs/qa-testing/screenshots/09-estudiante-actualizado.png new file mode 100644 index 0000000..1be7522 Binary files /dev/null and b/docs/qa-testing/screenshots/09-estudiante-actualizado.png differ diff --git a/docs/qa-testing/screenshots/10-dialogo-confirmacion-eliminar.png b/docs/qa-testing/screenshots/10-dialogo-confirmacion-eliminar.png new file mode 100644 index 0000000..35d70bd Binary files /dev/null and b/docs/qa-testing/screenshots/10-dialogo-confirmacion-eliminar.png differ diff --git a/docs/qa-testing/screenshots/10-dialogo-confirmar-eliminar.png b/docs/qa-testing/screenshots/10-dialogo-confirmar-eliminar.png new file mode 100644 index 0000000..8c3b0e0 Binary files /dev/null and b/docs/qa-testing/screenshots/10-dialogo-confirmar-eliminar.png differ diff --git a/docs/qa-testing/screenshots/11-estudiante-eliminado.png b/docs/qa-testing/screenshots/11-estudiante-eliminado.png new file mode 100644 index 0000000..599f18d Binary files /dev/null and b/docs/qa-testing/screenshots/11-estudiante-eliminado.png differ diff --git a/docs/qa-testing/screenshots/11-validacion-mensajes-espanol.png b/docs/qa-testing/screenshots/11-validacion-mensajes-espanol.png new file mode 100644 index 0000000..32711aa Binary files /dev/null and b/docs/qa-testing/screenshots/11-validacion-mensajes-espanol.png differ diff --git a/docs/qa-testing/screenshots/12-pagina-inscripcion.png b/docs/qa-testing/screenshots/12-pagina-inscripcion.png new file mode 100644 index 0000000..32a2f50 Binary files /dev/null and b/docs/qa-testing/screenshots/12-pagina-inscripcion.png differ diff --git a/docs/qa-testing/screenshots/12-validacion-pluralizacion.png b/docs/qa-testing/screenshots/12-validacion-pluralizacion.png new file mode 100644 index 0000000..cfdc4b2 Binary files /dev/null and b/docs/qa-testing/screenshots/12-validacion-pluralizacion.png differ diff --git a/docs/qa-testing/screenshots/13-restriccion-profesor-funciona.png b/docs/qa-testing/screenshots/13-restriccion-profesor-funciona.png new file mode 100644 index 0000000..f53c272 Binary files /dev/null and b/docs/qa-testing/screenshots/13-restriccion-profesor-funciona.png differ diff --git a/docs/qa-testing/screenshots/14-limite-3-materias.png b/docs/qa-testing/screenshots/14-limite-3-materias.png new file mode 100644 index 0000000..c2f132d Binary files /dev/null and b/docs/qa-testing/screenshots/14-limite-3-materias.png differ diff --git a/docs/qa-testing/screenshots/15-error-companeros-clase.png b/docs/qa-testing/screenshots/15-error-companeros-clase.png new file mode 100644 index 0000000..771f008 Binary files /dev/null and b/docs/qa-testing/screenshots/15-error-companeros-clase.png differ diff --git a/docs/qa-testing/screenshots/16-error-companeros-juan.png b/docs/qa-testing/screenshots/16-error-companeros-juan.png new file mode 100644 index 0000000..09e9e1e Binary files /dev/null and b/docs/qa-testing/screenshots/16-error-companeros-juan.png differ diff --git a/docs/qa-testing/screenshots/17-companeros-corregido.png b/docs/qa-testing/screenshots/17-companeros-corregido.png new file mode 100644 index 0000000..5db9452 Binary files /dev/null and b/docs/qa-testing/screenshots/17-companeros-corregido.png differ diff --git a/docs/qa-testing/screenshots/18-companeros-andres.png b/docs/qa-testing/screenshots/18-companeros-andres.png new file mode 100644 index 0000000..4c00b31 Binary files /dev/null and b/docs/qa-testing/screenshots/18-companeros-andres.png differ