Prueba: Egresos – Generar Reporte
Objetivo
Validar que el sistema permita generar y descargar reportes de egresos aplicando diferentes filtros (por fecha y por número de registro), y que los archivos en formato PDF y XLS se descarguen correctamente.
Precondiciones
- Usuario autenticado mediante el comando
cy.login(). - Acceso al dashboard del sistema
(/dashboard).. - Existencia de registros de egresos en el sistema que permitan aplicar los filtros configurados.
Pasos Generales
- Ingresar al módulo Egresos
- Abrir el modal de Generar Reporte.
- Activar el filtro deseado:
- Filtrado por fecha (fecha inicial – fecha final).
- Filtrado por número de registro (registro inicial – registro final).
- Completar los valores del filtro.
-
Descargar los reportes disponibles:
-
PDF
-
XLS
-
Cerrar el modal.
Resultado Esperado
- El modal de Generar Reporte de Egresos debe abrirse correctamente.
- Los filtros seleccionados deben aceptar la información ingresada.
- Deben generarse los reportes de egresos en formato PDF y XLS sin errores.
- El modal debe cerrarse correctamente tras la operación.
Explicación Detallada del Código
Configuración de filtros
const filtros = [
{
nombre: "Filtrado por fecha",
tipo: "fecha",
inicial: "2025-08-01",
final: "2025-11-25",
},
{
nombre: "Filtrado por número de registro",
tipo: "registro",
inicial: "001",
final: "010",
},
];
Explicación
- Se definen dos configuraciones de filtro para ejecutar las pruebas de manera dinámica:
tipo: fecha→ rango de fechas inicial y final.tipo: registro→ rango de números de registro.- Se valida que la URL cargada contenga la ruta esperada
/cuentaspagar-egresos.
Iteración sobre escenarios
filtros.forEach((filtro) => {
it(`Debe generar reporte de egresos: ${filtro.nombre} y descargar PDF y XLS`, () => {
// --- Paso 1: Ir al módulo de Egresos ---
cy.visit("/egresos");
cy.url().should("include", "/egresos");
});
});
Explicación
- Con
forEach, se recorre cada escenario definido enfiltro. - Por cada escenario, se genera un
it(...), que representa un caso de prueba independiente - Con
.first().click()se abre el historial del primer registro encontrado. - El nombre del caso
(Debe generar reporte de egresos: ...)se construye según el nombre del filtro - Se navega al módulo
egresos. - Se valida que la URL cargada contenga la ruta esperada
egresos.
Abrir modal de Generar Reporte
// --- Paso 2: Abrir modal de Generar Reporte ---
cy.get('button[data-target="#generarReporteEgresosReportes"]').click();
cy.get("#generarReporteEgresosReportes:visible").should("exist");
Explicación
- Se ubica y hace clic en el botón que abre el modal de reportes.
- Se valida que el modal con id
#generarReporteEgresosReportesse muestre visible en pantalla.
Aplicar filtros y descargar reportes
// --- Paso 3: Activar filtro correspondiente ---
cy.get("#generarReporteEgresosReportes:visible").within(() => {
cy.get(`button[onclick="mostrarFiltroReportes('${filtro.tipo}')"]`).click();
// --- Ingresar valores según tipo de filtro ---
if (filtro.tipo === "fecha") {
cy.get("#fecha-inicial-reportes").clear().type(filtro.inicial);
cy.get("#fecha-final-reportes").clear().type(filtro.final);
} else if (filtro.tipo === "registro") {
cy.get("#registro-inicial-reportes").clear().type(filtro.inicial);
cy.get("#registro-final-reportes").clear().type(filtro.final);
}
// --- Descargar PDF ---
cy.get('img[src*="pdf.png"]').first().click();
// --- Descargar XML (opcional) ---
cy.get('img[src*="xls.png"]').first().click();
});
Explicación
- Dentro del modal se activa el botón correspondiente al filtro (
fechaoregistro). - Según el filtro, se completan los campos de fecha o número de registro.
- Se simula la descarga de los reportes en PDF y XLS haciendo clic en los íconos correspondientes.
Cerrar modal
// --- Cerrar modal si sigue abierto ---
cy.get("#generarReporteEgresosReportes .close").click();
// --- Espera pequeña para evitar bloqueos ---
cy.wait(500);
Explicación
- Se cierra el modal haciendo clic en el botón de cerrar (
.close). - Se añade una breve espera de 500 ms para evitar bloqueos en la interfaz antes de continuar.
Resultados de la ejecución de la prueba
| Escenario | Filtro aplicado | Rango | Formatos descargados | Estado |
|---|---|---|---|---|
| 1 | Filtrado por fecha | 2025-08-01 – 2025-09-25 | PDF, XLS | PASS |
| 2 | Filtrado por número registro | 001 – 010 | PDF, XLS | PASS |