Prueba: Ingresos – Generar Reporte
Objetivo
Validar que el sistema permita generar reportes de ingresos aplicando distintos filtros (por fecha y por número de registro) y que se puedan descargar en formatos PDF y XLS correctamente.
Precondiciones
- Usuario autenticado mediante el comando
cy.login(). - Acceso al dashboard del sistema
(/dashboard). - Existencia de registros en el módulo Ingresos que puedan ser consultados mediante filtros.
Pasos Generales
- Ingresar al módulo de Ingresos.
- Abrir el modal de Generar Reporte.
- Activar el filtro correspondiente (fecha o registro).
- Completar valores para los filtros.
- Descargar reporte en PDF y XLS.
- Cerrar el modal.
Resultado Esperado
- Los filtros deben aplicarse correctamente según el tipo configurado.
- El sistema debe generar y permitir descargar los reportes en PDF y XLS.
- El modal debe cerrarse al finalizar la operación.
Explicación Detallada del Código
Configuración inicial y filtros
const filtros = [
{
nombre: "Filtrado por fecha",
tipo: "fecha",
inicial: "2025-08-24",
final: "2025-08-26",
},
{
nombre: "Filtrado por número de registro",
tipo: "registro",
inicial: "10",
final: "20",
},
];
Explicación
- Se definen los escenarios de prueba en un arreglo
filtros
| Cada objeto contiene:
nombre→ descripción del filtro.tipo→ determina si el filtro es por fecha o por número de registro.inicialyfinal→ valores que se ingresarán en los campos del modal.
Iteración sobre filtros
filtros.forEach((filtro) => {
it(`Debe generar reporte: ${filtro.nombre} y descargar PDF y XLS`, () => {
// flujo de prueba
});
});
Explicación
- Con
forEach, se recorre cada configuración del arreglofiltros. - Para cada uno, se genera un caso de prueba independiente usando
it(...). - El título del caso se arma dinámicamente según el nombre del filtro.
Abrir modal de reporte
// --- Ir al módulo de Ingresos ---
cy.visit("/ingresos");
cy.url().should("include", "/ingresos");
// --- Abrir modal de Generar Reporte ---
cy.get('[data-target="#generarReporteIngresos"]').click();
cy.get("#generarReporteIngresos:visible").should("exist");
Explicación
- Se navega al módulo de Ingresos.
- Se hace clic en el botón que abre el modal de Generar Reporte.
- Se valida que el modal aparezca visible en pantalla.
Aplicar filtros y descargar reportes
cy.get("#generarReporteIngresos:visible").within(() => {
cy.get(`button[onclick="mostrarFiltro('${filtro.tipo}')"]`).click();
if (filtro.tipo === "fecha") {
cy.get("#fecha-inicial").clear().type(filtro.inicial);
cy.get("#fecha-final").clear().type(filtro.final);
} else if (filtro.tipo === "registro") {
cy.get("#registro-inicial").clear().type(filtro.inicial);
cy.get("#registro-final").clear().type(filtro.final);
}
// --- Descargar PDF ---
cy.get('img[src*="pdf.png"]').first().click();
// --- Descargar XLS ---
cy.get('img[src*="xls.png"]').first().click();
});
Explicación
| Dentro del modal:
- Se activa el filtro dinámico correspondiente con
mostrarFiltro(...). - Si es por fecha, se completan los campos
fecha-inicialyfecha-final. - Si es por registro, se completan
registro-inicialyregistro-final. - Posteriormente, se simula la descarga de los reportes en PDF y XLS, haciendo clic en los íconos correspondientes.
Cerrar modal
// --- Cerrar modal ---
cy.get("#generarReporteIngresos .close").click();
// --- Pequeña espera para evitar bloqueos de UI ---
cy.wait(500);
Explicación
- Se presiona el botón de cierre
(.close)del modal. - Se agrega una breve espera
(500ms)para evitar que la interfaz quede bloqueada entre iteraciones de prueba.
Resultados de la ejecución de la prueba
| Escenario | Tipo de Filtro | Valores | Estado |
|---|---|---|---|
| 1 | Fecha | 2025-08-24 → 2025-08-26 | PASS |
| 2 | Número de registro | 10 → 20 | PASS |