Skip to content

Prueba: Productos – Registrar Ingreso

Objetivo

Validar que el sistema permita registrar un producto correctamente mediante el formulario de Gestión Financiera → Productos, generando un nombre dinámico y asegurando que todos los campos requeridos se completen y se guarden sin errores.

Precondiciones

  • Usuario autenticado mediante el comando cy.login().
  • Acceso al dashboard del sistema (/dashboard)..
  • Existencia del módulo de productos habilitado y accesible desde /productos.

Pasos Generales

  1. Iniciar sesión en el sistema.
  2. Ingresar al módulo Productos.
  3. Abrir el modal de Agregar producto.
  4. Completar todos los campos requeridos
  5. Guardar el producto.
  6. Verificar que el modal se cierre correctamente tras el registro exitoso.

Resultado Esperado

  • El sistema debe abrir correctamente el modal de registro de producto.
  • El nombre del producto debe generarse dinámicamente.
  • Los campos de cantidad, precio de compra y precio de venta deben aceptar solo valores válidos.
  • Al guardar, el producto debe registrarse y el modal debe cerrarse automáticamente.

Explicación Detallada del Código

Generación de variables

const timestamp = Date.now();
const nombreProducto = `P_${timestamp}`;
const cantidadProducto = "22";
const precioCompra = "50000";
const precioVenta = "60000";

Explicación

  • Se crea un nombre de producto único usando Date.now(), garantizando que cada ejecución tenga un identificador distinto (P_1234567890).
  • Se definen valores base para cantidad y precios, simulando un registro.

cy.visit("/productos");
cy.url().should("include", "/productos");

Explicación

  • Se navega directamente al módulo de Productos.
  • Se valida mediante cy.url().should("include", "/productos") que la URL actual corresponda al módulo esperado, confirmando la correcta navegación.

Apertura del modal de registro

cy.get('button.btn-agregar[data-target="#ingresoModal"]')
  .should("be.visible")
  .click();

cy.get("#ingresoModal").should("be.visible");

Explicación

  • Se localiza el botón “Agregar producto” por su atributo data-target.
  • Se verifica que el botón esté visible antes de hacer clic.
  • Tras hacer clic, se valida que el modal de ingreso #ingresoModal se muestre correctamente en pantalla.

Llenado de datos del producto

cy.get('#ingresoModal input[name="nombreProducto"]').type(nombreProducto);

// Código se selecciona sin escribir
cy.get('#ingresoModal input[name="codigoProducto"]').click();
cy.get("#sugerencia-codigo").should("exist");

cy.get('#ingresoModal input[name="cantidadP"]').type(cantidadProducto);
cy.get('#ingresoModal input[name="precioCompra_formatted"]').type(precioCompra);
cy.get('#ingresoModal input[name="precioProducto_formatted"]').type(
  precioVenta
);

Explicación

  • nombreProducto → campo principal donde se escribe el nombre dinámico generado.
  • codigoProducto → campo de código que genera sugerencias automáticas al hacer clic.
  • #sugerencia-codigo → elemento que confirma que el sistema ofrece una sugerencia disponible.

| Se completan los campos:

  • Cantidad (cantidadP)
  • Precio de Compra (precioCompra_formatted)
  • Precio de Venta (precioProducto_formatted)

Guardar el producto y verificar cierre del modal

cy.get('#ingresoModal button.btn.btn-primary[type="submit"]').click();
cy.get("#ingresoModal").should("not.be.visible");

Explicación

  • Se hace clic en el botón principal de Guardar (type="submit").
  • Tras el envío, se valida que el modal se haya cerrado automáticamente con should("not.be.visible")

Resultados de la ejecución de la prueba

Escenario Acción Principal Nombre Generado Cantidad Precio Compra Precio Venta Estado
1 Registrar producto nuevo P_<timestamp> 22 50,000 60,000 PASS