Caluru

Caluru — QA Matrix & Test Results

Last updated: 2026-06-23

Automated test summary

Suite Tests Result Command
CaluruTests / MealPlanGeneratorTests 18 PASS xcodebuild test -scheme Caluru -only-testing:CaluruTests
CaluruTests / ProgressiveProfilingMapperTests 1 PASS same
CaluruUITests 2 PASS xcodebuild test -scheme Caluru -only-testing:CaluruUITests
CaluruUITestsLaunchTests 8 (config variants) PASS same
Archive (Release, iphoneos) — PASS xcodebuild archive -scheme Caluru -destination 'generic/platform=iOS'

Total unit tests: 19 passed, 0 failed
Total UI tests: 10 passed, 0 failed

Note: The Xcode scheme is Caluru (project was renamed from GuruDeSalud). Use Caluru.xcodeproj, not GuruDeSalud.xcodeproj.

Unit test coverage

Area Covered by tests? Test class
Meal plan generation (determinism, filters, macros) Yes MealPlanGeneratorTests
Progressive profiling → profile mapping Yes ProgressiveProfilingMapperTests
Onboarding flow No —
Auth (Sign in with Apple) No —
Account deletion No —
Barcode / photo food scan No —
AI Assistant actions No —
Family invites (realtime) No —
Gamification / XP No —
Notifications No —
iCloud sync No —

The empty testExample() stub in CaluruTests was removed. CaluruUITests.testExample() remains as a minimal launch smoke test.

Build fixes applied (2026-06-23)

Before tests could run, compile errors were fixed:

  1. Supabase client optional — Services now use requireClient() via a throwing computed client property (FamilyService, GamificationService, ProfileService, RecipeService, AuthService, AccountResetService, OpenAIProxyService).
  2. AppLog.swift — Added missing import Foundation for Bundle.main.

Manual QA matrix

Execute on a Release build installed from Xcode (or TestFlight) before App Store submission. Mark each row Pass, Fail, or Blocked, and file Linear issues for any P0/P1 failures.

# Flow Steps Device Status Notes
1 Fresh install + onboarding Delete app → launch → complete Duolingo-style flow (Welcome → Goal → Motivations → Skill → Basics → Metrics → Activity → Diet → Targets → Sign In → Name → Username → Nudge → Paywall) Simulator OK Pending  
2 Sign in with Apple Onboarding sign-in → kill app → relaunch → session restored Physical device Pending Requires Apple ID; not testable in CI
3 Barcode scan Scan product → nutrition data → log meal Physical device Pending Camera required
4 Photo food scan Take photo → AI recognition → log meal Physical device + auth Pending OpenAI proxy requires signed-in user
5 AI Assistant Chat → log meal action → create recipe action Auth required Pending  
6 Weekly plan Generate plan → open shopping list Simulator OK Pending Partially covered by unit tests (generator only)
7 Family Create family → invite → accept on second device Auth + 2 devices Pending  
8 Gamification Log meals → earn XP → celebration overlay Simulator OK Pending  
9 Notifications Enable reminders → receive at scheduled time Physical device Pending Wait for scheduled fire time
10 Account deletion Profile → delete account → verify clean state → re-onboard Auth required Pending Destructive; use test Apple ID. Multi-member family cases: QA_DELETE_ACCOUNT_FAMILY.md
10a Account deletion + family (2 members) Owner deletes while member remains → family survives + ownership transfer Auth + 2 accounts Pending See QA_DELETE_ACCOUNT_FAMILY Checklist A
10b Account deletion + family (last member) Solo / last member deletes → family row deleted Auth required Pending See QA_DELETE_ACCOUNT_FAMILY Checklist B
11 iCloud sync Log data on device A → verify on device B 2 devices + iCloud Pending Same Apple ID, iCloud enabled

Severity guide

Priority Definition Action
P0 Crash, data loss, auth broken, cannot complete onboarding Block submission; fix immediately
P1 Core feature broken (scan, assistant, plan) with workaround Fix before submission
P2 Cosmetic / edge case File issue; may ship with known issue

How to run tests locally

export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer

# Unit tests only (fast)
xcodebuild test \
  -project Caluru.xcodeproj \
  -scheme Caluru \
  -destination 'platform=iOS Simulator,name=iPhone 17 Pro' \
  -only-testing:CaluruTests

# Full test suite (unit + UI)
xcodebuild test \
  -project Caluru.xcodeproj \
  -scheme Caluru \
  -destination 'platform=iOS Simulator,name=iPhone 17 Pro'

# Archive (verify Release build)
xcodebuild archive \
  -project Caluru.xcodeproj \
  -scheme Caluru \
  -destination 'generic/platform=iOS' \
  -archivePath ./build/Caluru.xcarchive

Ensure Config.xcconfig exists (copy from Config.xcconfig.example) with valid SUPABASE_URL and SUPABASE_ANON_KEY.


Acceptance criteria checklist