Prueba: Reportes – Terceros (Beta)
Objetivo
Validar que el sistema genere correctamente los reportes asociados al módulo de Tercerps, y exportar los resultados en los formatos PDF y Excel, asegurando el correcto funcionamiento de los checkboxes, el selector de formato y el cierre del modal sin errores.
Precondiciones
- Usuario autenticado mediante el comando
cy.login(). - Acceso al dashboard del sistema
(/dashboard).. - Acceso al módulo de Reportes mediante la ruta
/reports - El tab Terceros debe estar disponible y activable (
#terceros-tab) - El modal asociado al reporte debe existir en el DOM (#modalReporteTerceros).
- Los checkboxes de selección (Clientes, Proveedores, Empleados) deben estar visibles en el modal.
Pasos Generales
- Iniciar sesión y acceder al dashboard.
- Entrar al módulo Reportes.
- Seleccionar el tab Terceros.
- Para cada reporte: abrir modal correspondiente.
- Seleccionar formato de exportación (PDF o Excel).
- Marcar los checkboxes correspondientes a los tipos de terceros.
- Generar el reporte en ambos formatos.
- Cerrar el modal y validar que se cierre correctamente
Resultado Esperado
- El tab Terceros se muestra activo y con el contenido cargado.
- El modal
#modalReporteTercerosse abre correctamente al hacer clic en el botón correspondiente. - Los checkboxes se pueden seleccionar sin errores.
- El selector de formato (
#formato) permite elegir entre “pdf” y “excel”. - Al presionar el botón de generar, se inicia la descarga del reporte correspondiente.
- El modal se cierra correctamente tras finalizar el proceso, sin dejar elementos visibles en el DOM.
Explicación Detallada del Código
Visitar Modulo de reportes y Validación del tab activo
cy.visit("/reports");
cy.get("#terceros-tab").click({ force: true });
it("Debe estar en el tab de Terceros", () => {
cy.get("#terceros-tab").should("have.class", "active");
});
Explicación
- Se visita el módulo Reportes y se activa el tab Terceros mediante un clic forzado (
{ force: true }). - Se localiza el tab con el identificador
#terceros-tab - La condición
have.class('active')asegura que el sistema esté mostrando el contenido del módulo Ventas.
Definición de los reportes y escenarios de prueba
const reportes = [
{
nombre: "Reporte Terceros",
dataTarget: "#modalReporteTerceros",
escenarios: [
{
tipo: "formato",
select: "#formato",
valores: ["pdf", "excel"],
checkboxes: [
{ id: "#clientes", nombre: "Clientes" },
{ id: "#proveedores", nombre: "Proveedores" },
{ id: "#empleados", nombre: "Empleados" },
],
botonGenerar: ".btn.btn-primary",
},
],
},
];
Explicación
- Se define un arreglo reportes que describe los distintos reportes asociados al tab Terceros.
| Cada objeto contiene:
nombre: nombre del reporte (en este caso, “Reporte Terceros”).dataTarget: identificador del modal que se abrirá.escenarios: conjunto de configuraciones para ejecutar pruebas con distintos formatos y selecciones.
| Dentro de cada escenario:
selectcorresponde al desplegable para seleccionar el formato (#formato).valoresdefine los formatos disponibles (pdf, excel).checkboxesagrupa los tipos de terceros a seleccionar.botonGenerarindica el botón que ejecuta la generación del reporte.
Apertura del modal y selección de formato
cy.get(`[data-target="${reporte.dataTarget}"]`).click({ force: true });
cy.get(escenario.select).select(formato, { force: true });
Explicación
- Se localiza y hace clic en el botón que abre el modal correspondiente al reporte de terceros.
- Luego, se selecciona el formato deseado en el menú desplegable (
pdfoexcel) mediante el comandocy.select(). - El uso de
{ force: true }garantiza la interacción incluso si el modal tiene transiciones o capas de estilo activas.
Marcado de checkboxes y verificación
escenario.checkboxes.forEach((check) => {
cy.get(check.id).check({ force: true }).should("be.checked");
});
Explicación
- Se recorren los checkboxes definidos en el escenario (Clientes, Proveedores y Empleados).
- Para cada uno, se ejecuta
.check()conforce: truepara asegurar que el elemento se marque aunque esté oculto parcialmente por capas de UI. - Se verifica con
.should("be.checked")que la acción se haya aplicado correctamente.
Generación del reporte y cierre del modal
cy.get(escenario.botonGenerar).click({ force: true });
cy.get('.modal.show [aria-label="Close"]').last().click({ force: true });
cy.wait(1000);
Explicación
- Una vez seleccionados los filtros y el formato, se hace clic en el botón principal (
.btn.btn-primary) para generar el reporte. - Posteriormente, se cierra el modal utilizando el botón con atributo
aria-label="Close". - El
cy.wait(1000)asegura un breve tiempo de espera para que se complete la acción de cierre y se descarguen los archivos correctamente.
Resultados de la ejecución de la prueba
| Escenario | Reporte | Formato | Tipos de Terceros Seleccionados | Estado |
|---|---|---|---|---|
| 1 | Reporte Terceros | Clientes, Proveedores, Empleados | PASS | |
| 2 | Reporte Terceros | Excel | Clientes, Proveedores, Empleados | PASS |