Skip to content

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

  1. Ingresar al módulo de Ingresos.
  2. Abrir el modal de Generar Reporte.
  3. Activar el filtro correspondiente (fecha o registro).
  4. Completar valores para los filtros.
  5. Descargar reporte en PDF y XLS.
  6. 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.
  • inicial y final → 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 arreglo filtros.
  • 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-inicial y fecha-final.
  • Si es por registro, se completan registro-inicial y registro-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