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
- Iniciar sesión en el sistema.
- Ingresar al módulo Productos.
- Abrir el modal de Agregar producto.
- Completar todos los campos requeridos
- Guardar el producto.
- 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.
Navegación al módulo de 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
#ingresoModalse 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 |