- Archivo
render.yamlcreado para Render - Configuración de servicio Backend (Python)
- Configuración de servicio Frontend (Static)
- Variables de entorno definidas
- Base de datos en memoria implementada (
database.py) - No hay dependencias de archivos en disco
- Estado se reinicia con cada deploy
- Perfecto para testing automatizado
- 5 usuarios hardcodeados en
constants.py - Sistema de autenticación JWT en
auth.py - Endpoint
/api/auth/loginfuncional - Endpoint
/api/auth/userspara listar usuarios
| Usuario | Password | Comportamiento | Implementado |
|---|---|---|---|
| standard_user | pizza123 | Normal | ✅ |
| locked_out_user | pizza123 | Error 403 login | ✅ |
| problem_user | pizza123 | Imágenes rotas, precios $0 | ✅ |
| performance_glitch_user | pizza123 | Delay 3s en API | ✅ |
| error_user | pizza123 | Error 500 aleatorio | ✅ |
- Middleware implementado en
middleware.py - Validación obligatoria del header
- Error 400 si no se envía
- Soporte para MX, US, CH, JP
- Moneda: $ MXN
- Campo requerido:
colonia - Campo opcional:
propina - Impuestos: 0%
- Moneda: $ USD
- Campo requerido:
zip_code(5 dígitos) - Validación de formato ZIP
- Impuestos: 8% (Sales Tax)
- Moneda: CHF
- Campo requerido:
plz - Impuestos: 0%
- Soporte multi-idioma (de, fr)
- Moneda: ¥ JPY
- Sin decimales en precios
- Campo requerido:
prefectura - Impuestos: 0%
- Formulario de login funcional
- Selector de usuarios pre-definidos
- Manejo de errores (locked_out_user)
- Responsive (mobile/desktop)
- data-testid en elementos
- Grid de pizzas responsive
- Precios según país seleccionado
- Conversión automática de divisas
- Agregar al carrito funcional
- data-testid en cards y botones
- Visible en web (mobile/desktop)
- Menú hamburguesa en mobile
- Selector de país
- Perfil de usuario
- Logout funcional
- Formulario dinámico por país
- Validaciones específicas
- Resumen de orden
- Confirmación exitosa
- data-testid en todos los inputs
- Cart hydration desde GET /api/cart al cargar (web + mobile)
-
username-input,password-input -
login-button,logout-button -
pizza-card-{id},add-to-cart-{id} -
checkout-name-input, etc. -
country-selector,select-country-{code}
-
POST /api/store/market— establecer mercado -
POST /api/cart— inyectar items al carrito (con size opcional) -
GET /api/cart— carrito enriquecido (join con catálogo, precios por mercado) -
POST /api/session/reset— reiniciar sesión -
GET /api/session— leer estado de sesión
- GET /api/cart implementado en backend (test_api.py)
- Enriched response con name, price, image, currency del catálogo
- Frontend web (Checkout.jsx) llama GET /api/cart al montar
- Frontend mobile (CheckoutScreen.tsx) llama GET /api/cart al montar
- Flujo E2E: POST /api/cart → navegar a /checkout → carrito hidratado
-
GET /api/debug/latency-spike- Delay aleatorio 0.5-5s -
GET /api/debug/cpu-load- Fibonacci(35) pesado -
GET /api/debug/metrics- Formato Prometheus -
GET /api/debug/info- Info de debug
- Latency spike funcional
- CPU load funcional
- Métricas Prometheus exportables
- Info de debug completa
- Carpeta
backend/creada - FastAPI implementado (
main.py) - Autenticación JWT (
auth.py) - Base de datos en memoria (
database.py) - Modelos Pydantic (
models.py) - Middleware personalizado (
middleware.py) - Constantes de configuración (
constants.py) - Dockerfile para contenedor
- Carpeta
frontend/creada - React 18 con Vite
- TailwindCSS para estilos
- Zustand para estado global
- Axios para HTTP client
- React Router para navegación
- Componentes responsivos
- Dockerfile + Nginx
-
docker-compose.ymlpara desarrollo local -
render.yamlpara producción en Render -
setup.shscript automatizado -
.gitignorecompleto
- Carpeta
tests/creada - Contract Tests con Schemathesis
- Tests de validación de schema
- Tests de flujo completo
- Tests de comportamientos de usuario
- Tests de endpoints de caos
-
tests/README.mdcon documentación
-
README.md- Documentación principal completa -
QUICKSTART.md- Guía de inicio rápido -
API_EXAMPLES.md- Ejemplos de uso -
CONTRIBUTING.md- Guía de contribución -
LICENSE- Licencia MIT -
PROJECT_SUMMARY.md- Resumen ejecutivo
- Código Python sigue PEP 8
- Código JavaScript usa ES6+
- Type hints en Python
- Comentarios y docstrings
- Nombres descriptivos
- Repositorio inicializado
- 7 commits con mensajes descriptivos
- Conventional Commits format
- .gitignore configurado
- JWT para autenticación
- Passwords no expuestos
- CORS configurado
- Validación de inputs
- Código optimizado
- Sin operaciones bloqueantes
- Caché donde aplica
- Build optimizado
- Login con standard_user
- Login con locked_out_user (debe fallar)
- Ver catálogo en MX
- Cambiar país a US
- Agregar pizzas al carrito
- Checkout en MX con colonia
- Checkout en US con zip_code
- Verificar impuestos en US (8%)
- Probar latency spike endpoint
- Probar CPU load endpoint
- Ejecutar
pytest tests/test_contract.py -v - Verificar todos los tests pasan
- Validar cobertura de endpoints
-
docker-compose up -dexitoso - Backend accesible en :8000
- Frontend accesible en :3000
- API Docs en :8000/api/docs
- Blueprint detectado automáticamente
- Backend desplegado correctamente
- Frontend desplegado correctamente
- URLs públicas funcionando
COMPLETADO AL 100% ✅
- ✅ Todos los requisitos implementados
- ✅ Documentación completa
- ✅ Tests implementados
- ✅ Configuración de despliegue lista
- ✅ Código versionado en Git
Proyecto listo para uso en QA Testing 🍕🧪