10 KiB
Testguide – testa hela appen i er infra, före namn och App Store
Målgrupp: du och eventuella testare. Förutsätter att staging är uppe via
first-deploy.sh(se OPENCLAW-DEPLOY-PROMPT.md). Namn behövs inte; App Store behövs inte.
Tre saker går att testa, i stigande ordning av "känns som riktig app"
| Yta | Hur | Kräver |
|---|---|---|
| 1. API:t | Swagger UI i webbläsaren | Bara servern |
| 2. Adminpanelen | Webbläsare | Bara servern |
| 3. Mobilappen i din telefon | Expo Go (gratis app) eller sidladdad Android-APK | Telefon + se nedan |
1. API:t – 5 minuter
Öppna http://<server>:4000/docs – alla 110+ endpoints, körbara direkt i
webbläsaren. Snabbaste vitalkontrollen:
curl -s http://<server>:4000/healthz # {"ok":true,...}
curl -s http://<server>:4000/readyz # {"ok":true,...}
2. Adminpanelen – 10 minuter
cd apps/admin/dist && python3 -m http.server 5173
Öppna http://<server>:5173. Skapa ett admin-konto:
# 1. Registrera via API:t (eller appen), 2. ge admin-roll i databasen:
psql "$DATABASE_URL" -c "UPDATE users SET role='admin' WHERE email='din@mejl.se';"
OBS: sätt CORS_ORIGINS=http://<server>:5173 i .env och starta om API:t,
annars blockeras webbläsaranrop. (Mobilappen berörs inte av CORS.)
Testa: systemöversikt (hälsa/köer), användare, feature flags, prenumerations- grant, auditloggen, 2FA-aktivering på ditt konto.
3. Mobilappen i telefonen – det riktiga testet
Alternativ A: Expo Go (enklast – 10 minuter, funkar för iPhone OCH Android)
-
Installera Expo Go (gratis, App Store/Google Play) på telefonen.
-
På en dator med repot (kan vara din laptop – appen ska bara PEKA på er infra):
pnpm install API_BASE_URL=http://<server>:4000 pnpm mobile:start # Telefon på annat nätverk än datorn? Lägg till --tunnel: # API_BASE_URL=https://<staging-domän> pnpm --filter @app/mobile exec expo start --tunnel -
Skanna QR-koden med telefonen (kamera-appen på iPhone, Expo Go på Android).
-
Appen öppnas i telefonen och pratar med ER server.
Krav: telefonen måste kunna NÅ API_BASE_URL – samma wifi som servern,
eller en exponerad staging-domän med TLS. Testa i telefonens webbläsare:
öppna http://<server>:4000/healthz – svarar den där, funkar appen.
Alternativ B: Android-APK (känns exakt som en riktig app, ingen dator vid test)
Kräver ett gratis Expo-konto (inte Google/Apple):
cd apps/mobile
# Sätt er staging-URL i eas.json under "preview".env.API_BASE_URL först!
npx eas login
npx eas build --platform android --profile preview
Bygget ger en .apk-länk – skicka till testarna, installera direkt på
Android-telefoner ("okända källor" godkänns vid installation). iPhone på
detta sätt kräver Apple-konto → det väntar tills butiksfasen, använd Expo Go.
Kör hellre allt PÅ RIKTIGT (rekommenderat)
Mockarna är bara reservläge. Med era nycklar körs allt äkta från start –
se "PÅ RIKTIGT FRÅN START" i OPENCLAW-DEPLOY-PROMPT.md (REQUIRE_REAL=1
gör det till en grind). Då är AAMOS-svaren äkta, mejlen landar i riktiga
inkorgar och bilderna i riktig S3. Avsnittet nedan gäller ENDAST om ni
medvetet kör utan nycklar.
Om ni ändå kör mock-läge tillfälligt
Staging kör då AAMOS_MODE=mock: skanningar ger realistiska men påhittade
svar (samma varje gång – bl.a. en osäker vara som kräver bekräftelse, för
att öva gransknings-UX:et). Det är avsiktligt: allt RUNT AI:n testas på
riktigt – flöden, lager, kvitton i minor units, korrigeringar. När riktiga
AAMOS kopplas (AAMOS_MODE=http + nyckel) blir svaren äkta utan att något
annat ändras. Mejl: staging kör EMAIL_MODE=log – verifierings- och
återställningsmejl hamnar i logs/api.log i stället för i inkorgar
(sök på mailer:log för att hämta länkarna).
Manuellt testprotokoll (ca 30 min per språk)
| # | Gör | Förväntat |
|---|---|---|
| 1 | Installera/öppna appen på telefon med svenska som systemspråk | UI på svenska direkt |
| 2 | Registrera konto, gå igenom onboarding (mål, allergier – välj t.ex. gluten, hushåll, läge) | Trial startar; hushåll skapat |
| 3 | Hemma-fliken → lägg till varor manuellt (t.ex. pasta 500 g, färs 400 g, lök 3 st) | Lagret visar varorna med rätt enheter |
| 4 | "Vad ska vi äta?" | Förslag med förklaringar; rätter med dina allergener syns ALDRIG |
| 5 | Öppna ett recept → skala portioner → "Laga nu" → cooking mode → klart → logga | Ingredienser dras från lagret; måltiden syns i Min dag |
| 6 | Skanna → Kyl → ta bild | Mock-svar med varor; minst en "Osäker – kontrollera"; godkänn → lagret uppdateras |
| 7 | Inköpslista: lägg till varor, bocka av, "Avsluta köprundan" | Avbockade varor hamnar i lagret |
| 8 | Matlådor: laga recept med portioner till lådor | Lådan syns med "ät senast"-datum |
| 9 | Budget på Hemma-fliken | Belopp i kr, vettiga summor |
| 10 | Profil → byt språk till Español | HELA appen byter direkt, utan omstart |
| 11 | Sök ingrediens på spanska ("ajo") | Träffar Ajo (vitlök) |
| 12 | Profil → "Vad appen vet om mig" | Minnesvyn med rubriker på valt språk; pausa/radera fungerar |
| 13 | Logga ut → "Glömt lösenord?" → hämta länken ur logs/api.log → återställ |
Nytt lösenord funkar; gamla sessioner utloggade |
| 14 | Profil → Exportera min data | JSON-export levereras |
| 15 | Byt telefonens systemspråk till danska, avinstallera + installera om (Expo Go: rensa), registrera nytt konto | Appen och välkomstmejlet (i loggen) på danska, DKK-defaults |
| 16 | Mjölkprincipen: ge en vara "Bäst före" i går (datumtyp väljs i skanningsgranskningen) och en annan "Sista förbrukningsdag" i går | Bäst före-varan: gul tagg "Passerat bäst före – lukta och smaka", finns kvar i recept/förslag och räddas först. Sista förbrukning-varan: röd "Utgången". Ingen kasseras automatiskt |
Upprepa 1–5 på engelska/tyska/valfritt språk stickprovsvis.
Buggrapportmall
Skärm/steg: (t.ex. protokoll #6, skanningsgranskning)
Språk: sv/en/…
Förväntat: …
Faktiskt: …
Correlation-ID: (syns i API-svar vid fel – gör felsökning exakt)
När testet är klart
- Namnbeslut →
brand.config.json(runbook:namnbyte.md). - Riktiga AAMOS →
pnpm eval:aamosmot produktion (lanseringsplanen fas 2). - Butikskonton → EAS production-bygge → TestFlight/intern testning → granskning.