Skip to content

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

  1. Iniciar sesión y acceder al dashboard.
  2. Entrar al módulo Reportes.
  3. Seleccionar el tab Terceros.
  4. Para cada reporte: abrir modal correspondiente.
  5. Seleccionar formato de exportación (PDF o Excel).
  6. Marcar los checkboxes correspondientes a los tipos de terceros.
  7. Generar el reporte en ambos formatos.
  8. Cerrar el modal y validar que se cierre correctamente

Resultado Esperado

  • El tab Terceros se muestra activo y con el contenido cargado.
  • El modal #modalReporteTerceros se 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:

  • select corresponde al desplegable para seleccionar el formato (#formato).
  • valores define los formatos disponibles (pdf, excel).
  • checkboxes agrupa los tipos de terceros a seleccionar.
  • botonGenerar indica 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 (pdf o excel) mediante el comando cy.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() con force: true para 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 PDF Clientes, Proveedores, Empleados PASS
2 Reporte Terceros Excel Clientes, Proveedores, Empleados PASS