✅ Validación por phases

QA Checklist

Escenarios de end-to-end que debes validar en tu teléfono para considerar cada phase como terminada. Tus checks se guardan en este browser.

P0

Bootstrap — Verificación inicial

Confirmar que el entorno está listo antes de escribir la primera pantalla.

0/4
📱
Herramienta: Expo Go en tu teléfono
Instala Expo Go desde App Store o Play Store antes de empezar.
Setup
P0-01
Abrir Expo Go → Escanear QR del dev server
La pantalla de carga aparece, la app carga sin errores en rojo
Setup
P0-02
Guardar un cambio en el código (ej: cambiar un texto)
La app actualiza automáticamente en el teléfono en menos de 3 segundos (Fast Refresh)
Setup
P0-03
Verificar que la URL del backend responde
GET /health (o cualquier endpoint) retorna 200 desde el teléfono
Setup
P0-04
Navegar entre las 4 tabs del bottom bar
Cada tab navega sin crash. Las tabs activas se destacan visualmente.
P1

Foundation — Auth & Dashboard Base

El usuario puede crear cuenta, iniciar sesión y ver su dashboard.

0/10
Happy path
P1-01
Ir a Registro → llenar email y contraseña válidos → tocar "Crear cuenta"
Redirige al dashboard. El nombre/email del usuario aparece en el menú.
Edge case
P1-02
Intentar registrar con el mismo email dos veces
Mensaje de error: "Este email ya está en uso" (sin crash)
Happy path
P1-03
Login con email y contraseña correctos
Redirige al dashboard. El estado de sesión persiste si cierras y abres la app.
Edge case
P1-04
Login con contraseña incorrecta
Mensaje de error visible. No redirige al dashboard.
Happy path
P1-05
Tocar "Olvidé mi contraseña" → ingresar email → tocar enviar
Mensaje de confirmación "Revisa tu correo". Email llega con link.
Happy path
P1-06
Cerrar sesión desde el menú
Redirige a login. Abrir la app de nuevo muestra login (no dashboard).
Edge case
P1-07
Abrir la app sin conexión a internet, con sesión activa
El dashboard carga (con datos en caché o pantalla de error amigable). No crash.
Happy path
P1-08
Ver el dashboard con al menos un presupuesto creado
Cards de categoría visibles con barra de progreso, monto gastado y restante.
Happy path
P1-09
Tocar la flecha "←" para ir al período anterior
Las fechas del período cambian. Los datos se actualizan para ese período.
Happy path
P1-10
Estando en un período pasado, tocar "Período actual"
Vuelve al período actual con sus datos correctos.
P2

Budgets Core

Crear, editar y gestionar presupuestos por categoría.

0/9
Happy path
P2-01
Usuario nuevo sin presupuestos → el wizard aparece automáticamente
El CTA "Crea tu primer presupuesto" es visible en el dashboard.
Happy path
P2-02
Completar el wizard: seleccionar categorías y montos → confirmar
Los presupuestos aparecen en el dashboard con las barras de progreso en 0%.
Happy path
P2-03
Tocar "+" → crear un presupuesto nuevo para una categoría
El presupuesto aparece en la lista inmediatamente sin recargar.
Happy path
P2-04
Tocar un presupuesto → editar el monto → guardar
El nuevo monto y el porcentaje de progreso se actualizan al instante.
Happy path
P2-05
Editar el nombre de una categoría
El nombre nuevo aparece en el presupuesto Y en todas las transacciones asociadas.
Edge case
P2-06
Eliminar un presupuesto que tiene transacciones asociadas
Sheet de confirmación. Al confirmar: presupuesto y sus transacciones desaparecen.
Happy path
P2-07
Cambiar el tipo de período a "día 15 del mes"
El navegador de período muestra fechas "15 ene – 14 feb" en lugar de "1–31 ene".
Happy path
P2-08
Ir al siguiente mes (sin presupuestos) → tocar "Copiar del mes anterior"
Los presupuestos del mes anterior aparecen en el mes nuevo con los mismos montos.
Happy path
P2-09
Cambiar la moneda predeterminada en configuración
Los montos en el dashboard cambian al símbolo de la nueva moneda.
P3

Transactions Core

Registrar, buscar, editar y categorizar transacciones.

0/10
Happy path
P3-01
Tocar el FAB "+" → llenar el formulario de gasto → guardar
La transacción aparece en la lista. La barra de progreso del presupuesto afectado sube.
Happy path
P3-02
Agregar 15+ transacciones → hacer scroll hasta el fondo de la lista
Más transacciones cargan automáticamente (infinite scroll). Sin botón "Ver más".
Happy path
P3-03
Escribir un texto en el buscador
La lista se filtra en tiempo real mostrando solo coincidencias. Borrar el texto restaura la lista completa.
Happy path
P3-04
Tocar una transacción → editar el monto → guardar
El monto actualizado aparece en la lista. El presupuesto afectado recalcula su progreso.
Happy path
P3-05
Deslizar una transacción a la izquierda (swipe) → confirmar eliminar
Transacción desaparece. La barra del presupuesto baja el monto correspondiente.
Edge case
P3-06
Agregar una transacción sin asignar categoría
Aparece en la sección "Sin categoría" del dashboard. No impacta ningún presupuesto.
Happy path
P3-07
Desde "Sin categoría", asignar una categoría a una transacción
Desaparece de "Sin categoría". Aparece en transacciones recientes y el presupuesto sube.
Happy path
P3-08
Ver el dashboard con transacciones sin categoría pendientes
Banner visible al tope con el número de pendientes. Tap lleva a la sección.
Edge case
P3-09
Agregar una transacción y asignarla a una categoría que no tiene presupuesto
Se ofrece crear un nuevo presupuesto para esa categoría en el mismo flujo.
Edge case
P3-10
Intentar enviar el formulario de nueva transacción sin monto
Error de validación visible en el campo. No se envía al servidor.
P4

Gmail / Penny Integration

Conectar Gmail y verificar que Penny detecta transacciones end-to-end.

0/8
⚠️
Requiere Development Build — Expo Go ya no sirve
El OAuth nativo de Google no funciona en Expo Go. Necesitas el .apk o .ipa generado por EAS instalado en tu teléfono.
Happy path
P4-01
Tocar "Conectar Gmail" → se abre Chrome/Safari nativo (no un WebView dentro del app)
El browser del sistema se abre con la pantalla de autorización de Google.
Happy path
P4-02
Autorizar acceso a Gmail en Google → la app retoma automáticamente
El app vuelve al primer plano via deep link. El header muestra "Gmail conectado ✓".
E2E real
P4-03
Enviar un email de prueba al Gmail conectado simulando un aviso bancario (con monto y descripción)
En menos de 2 minutos, la transacción aparece en la sección "Sin categoría" del dashboard.
Happy path
P4-04
Ver el indicador de estado en el header del dashboard
Muestra uno de los 3 estados: "Conectado" / "Sincronizando" / "Error" con el ícono correspondiente.
Happy path
P4-05
Ir a Gmail Settings → tocar "Pausar monitoreo"
El estado cambia a "Pausado". Nuevos emails bancarios no generan transacciones.
Happy path
P4-06
Tocar "Reanudar monitoreo"
El estado vuelve a "Conectado". Penny retoma la detección.
Happy path
P4-07
Tocar "Desconectar cuenta Gmail" → confirmar
La cuenta desaparece de Gmail Settings. El header no muestra estado de Gmail.
Edge case
P4-08
Cancelar el OAuth de Google (tocar "Atrás" en el browser)
El app regresa sin cambios. No hay error ni crash. Gmail sigue desconectado.
P5

Push Notifications & Native Mobile

Notificaciones de presupuesto, biometría y preferencias.

0/10
🔔
Requiere nuevo Development Build con módulos nativos
expo-notifications y expo-local-authentication deben estar en el binario. EAS Build necesita las credenciales FCM/APNs cargadas.
Happy path
P5-01
Primera vez que abres la app → aparece el diálogo de permisos de notificación del OS
Diálogo nativo de iOS/Android visible. Al aceptar, el push token se registra en el backend.
E2E real
P5-02
Gastar el 80%+ de una categoría (vía email bancario o manualmente) y cerrar la app
Llega una notificación push con el nombre de la categoría y el porcentaje gastado.
E2E real
P5-03
Superar el 100% de una categoría
Llega una notificación urgente ("Presupuesto agotado"). Es visualmente diferente a la de 80%.
Happy path
P5-04
Tocar la notificación push mientras la app está en segundo plano
La app abre directamente en la pantalla del presupuesto afectado (deep link de notificación).
Happy path
P5-05
En Configuración → Notificaciones → desactivar para una categoría específica → gastar >80%
No llega push para esa categoría. Las demás categorías sí siguen recibiendo notificaciones.
Happy path
P5-06
Cambiar el umbral de una categoría de 80% a 50% → gastar 55% de esa categoría
Llega notificación al pasar el 50% (el umbral nuevo, no el 80% anterior).
Happy path
P5-07
En Configuración → Seguridad → activar Face ID / Touch ID
La próxima vez que abras la app, aparece el diálogo biométrico del OS en lugar de la pantalla de login.
Edge case
P5-08
Fallar la biometría 3 veces
El OS bloquea biometría y aparece la opción de ingresar con PIN o contraseña.
Edge case
P5-09
JWT expirado (simular vaciando SecureStore) + biometría activa
La biometría no desbloquea. Redirige al login completo con email y contraseña.
Happy path
P5-10
Configurar PIN de 6 dígitos → cerrar app → abrir → ingresar PIN
PIN correcto desbloquea la app. PIN incorrecto muestra error. 5 intentos fallidos → login completo.
P6

Polish & Advanced Features

Drag & drop, offline, temas y exportación de datos.

0/8
Happy path
P6-01
Mantener presionado un presupuesto y arrastrarlo a otra posición
El orden se actualiza visualmente. Al recargar la app, el nuevo orden persiste.
E2E real
P6-02
Desactivar WiFi y datos → agregar una transacción
La transacción se guarda localmente con un badge "Pendiente de sync". La app no crashea.
E2E real
P6-03
Reactivar WiFi (con la transacción offline pendiente)
La transacción se sincroniza automáticamente. El badge "Pendiente" desaparece. Aparece en el servidor.
Happy path
P6-04
Tocar "Exportar datos" en el menú
El Share Sheet nativo de iOS/Android se abre con el archivo JSON listo para compartir o guardar.
Happy path
P6-05
Activar tema claro desde el menú
Toda la UI cambia a modo claro. Texto, fondos y botones son legibles. La preferencia persiste al reabrir.
Happy path
P6-06
Copiar presupuestos del período anterior al actual
Todos los presupuestos del mes anterior aparecen en el mes actual con los mismos montos.
Edge case
P6-07
Limpiar todas las transacciones desde el menú
Confirmación explícita requerida. Al confirmar: lista vacía y barras de progreso en 0%.
Edge case
P6-08
Agregar 3 transacciones offline → cerrar la app → reabrir sin conexión → reconectar
Las 3 transacciones siguen pendientes al reabrir. Al reconectar, las 3 se sincronizan correctamente.