Files
Cibello-app/docs/25-testguide.md
T
2026-08-05 19:21:11 +07:00

10 KiB
Raw Blame History

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)

  1. Installera Expo Go (gratis, App Store/Google Play) på telefonen.

  2. 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
    
  3. Skanna QR-koden med telefonen (kamera-appen på iPhone, Expo Go på Android).

  4. 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 15 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

  1. Namnbeslut → brand.config.json (runbook: namnbyte.md).
  2. Riktiga AAMOS → pnpm eval:aamos mot produktion (lanseringsplanen fas 2).
  3. Butikskonton → EAS production-bygge → TestFlight/intern testning → granskning.