Skip to content

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

  1. Ingresar al módulo Egresos
  2. Abrir el modal de Generar Reporte.
  3. Activar el filtro deseado:
  4. Filtrado por fecha (fecha inicial – fecha final).
  5. Filtrado por número de registro (registro inicial – registro final).
  6. Completar los valores del filtro.
  7. Descargar los reportes disponibles:

  8. PDF

  9. XLS

  10. 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 en filtro.
  • 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 #generarReporteEgresosReportes se 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 (fecha o registro).
  • 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