QA & Testing Standard (Farmacias Vallenar)
Objetivo
Mantener la integridad del ERP de misión crítica asegurando que cada nueva pieza de lógica tenga cobertura de tests automática. Está prohibido generar código de negocio sin su contraparte de prueba.
Reglas de Decisión (Unitario vs E2E)
Antes de escribir el test, analiza qué estás modificando:
- •
¿Es Lógica de Negocio Pura? (Ej: cálculos de impuestos, validación de RUT, reglas de stock FEFO).
- •Acción: Crea un Test Unitario en
tests/actions/otests/domain/. - •Herramienta:
Vitest. - •Requisito: DEBES usar Mocks para la base de datos. No toques la DB real en tests unitarios.
- •Acción: Crea un Test Unitario en
- •
¿Es un Flujo Crítico de Usuario? (Ej: Cajero cierra una venta, Bodeguero rechaza un pedido).
- •Acción: Crea un Test E2E en
tests/e2e/. - •Herramienta:
Playwright. - •Requisito: Usa el helper de login existente:
import { loginAsManager } from './helpers/login'.
- •Acción: Crea un Test E2E en
Instrucciones de Generación
- •Estructura Espejo: Si creas
src/actions/inventory.ts, debes crear o actualizartests/actions/inventory.test.ts. - •Patrón AAA: Escribe los tests siguiendo el patrón "Arrange, Act, Assert".
- •Manejo de Errores: No pruebes solo el "camino feliz". Debes escribir un test case para cuando la operación falla (ej. "Stock insuficiente lanza error").
Restricciones (Constraints)
- •PROHIBIDO usar
anyen los tests. Define los tipos de TypeScript correctamente. - •PROHIBIDO comentar tests que fallan para que pasen. Si falla, arregla el código.
- •PROHIBIDO hacer
console.logdentro de los tests.
Ejemplo de Uso
Input del Usuario: "Crea una función para calcular el descuento de tercera edad."
Output del Agente:
- •Genera
src/domain/discounts.tscon la lógica. - •Genera automáticamente
tests/domain/discounts.test.tscon casos para:- •Edad < 60 (Sin descuento)
- •Edad > 60 (Con descuento)
- •Edad inválida (Error)