- Abrir la app en el navegador (cualquier dispositivo)
- Abrir DevTools (F12 o Cmd+Option+I)
- Ir a la pestaña "Application" (o "Aplicación")
- Verificar:
- ✅ En "Manifest": Debería aparecer "Shop Trip" con los iconos
- ✅ En "Service Workers": Debería aparecer
/sw.jscomo activo - ✅ En "Storage" → "Cache Storage": Debería haber un cache "shop-trip-v1"
- Abrir Safari en iPhone (no Chrome u otros navegadores)
- Navegar a tu app (debe ser HTTPS)
- Esperar 3 segundos - Debería aparecer un card en la esquina inferior con instrucciones
- Seguir las instrucciones:
- Tocar el botón "Compartir" (Share) en Safari
- Desplazarse hacia abajo
- Seleccionar "Agregar a pantalla de inicio"
- Tocar "Agregar"
- Verificar instalación:
- Debería aparecer un ícono en la pantalla de inicio
- Al abrir, no debería verse la barra de direcciones de Safari
- Abrir Chrome en Android
- Navegar a tu app
- Debería aparecer un banner preguntando si quieres instalar
- O tocar el menú (3 puntos) → "Instalar app"
- Verificar: La app debería aparecer como una app instalada
Después de instalar, verificar que está en modo standalone:
-
Abrir la app desde la pantalla de inicio
-
Abrir la consola (si es posible)
-
Ejecutar:
window.matchMedia("(display-mode: standalone)").matches
Debería retornar
true -
Verificar visualmente:
- ❌ NO debería verse la barra de direcciones
- ❌ NO debería verse el botón de "atrás" del navegador
- ✅ Debería verse como una app nativa
- Abrir DevTools → Application → Service Workers
- Verificar:
- Estado: "activated and is running"
- Scope:
/ - Archivo:
/sw.js
- Instalar la app como PWA (pasos anteriores)
- Otorgar permisos de notificaciones (botón de campana en el header)
- Abrir la app en otra pestaña/dispositivo
- Crear un producto o viaje
- Verificar:
- ✅ Debería aparecer una notificación push
- ✅ Debería aparecer un toast en la esquina superior derecha
- ✅ Debería aparecer un badge en el título:
(1) Shop Trip
- Instalar la app como PWA
- Abrir la app una vez (para que cachee recursos)
- Activar modo avión o desconectar WiFi
- Abrir la app nuevamente
- Verificar: Debería cargar parcialmente (al menos el shell de la app)
// Verificar si está en modo standalone
window.matchMedia("(display-mode: standalone)").matches
// Verificar Service Worker
navigator.serviceWorker.getRegistration().then(reg => console.log(reg))
// Verificar cache
caches.keys().then(keys => console.log(keys))
// Verificar notificaciones
Notification.permission
// Verificar si es iOS
/iPad|iPhone|iPod/.test(navigator.userAgent)- La app está servida por HTTPS
- El archivo
public/manifest.jsonexiste - El archivo
public/sw.jsexiste - Los iconos existen (
/icon.svg,/apple-icon.svg)
- El manifest se carga correctamente
- El Service Worker se registra
- El prompt de instalación aparece (iOS después de 3 segundos)
- La app se puede instalar en iPhone
- La app se puede instalar en Android
- La app abre en modo standalone después de instalar
- Las notificaciones del navegador funcionan cuando la app está abierta
- El badge en el título se actualiza correctamente
- Los toasts aparecen en la esquina superior derecha
- Las notificaciones push funcionan cuando está instalada como PWA (iOS 16.4+)
- Los recursos básicos se cachean
- La app funciona parcialmente offline
- Verifica que estés usando Safari en iPhone
- Verifica que la app esté servida por HTTPS
- Espera al menos 3 segundos después de cargar
- Verifica que
public/sw.jsexista - Verifica que la app esté servida por HTTPS
- Revisa la consola para errores
- Verifica que hayas otorgado permisos
- Verifica que las VAPID keys estén configuradas
- En iOS: Verifica que la app esté instalada como PWA (iOS 16.4+)
- Probar en un iPhone real (no simulador)
- Verificar que las notificaciones push funcionen cuando la app está cerrada
- Probar el funcionamiento offline
- Verificar que el cache funcione correctamente