# Canteen Asset Tracker — Full Test Plan ## Areas to Cover ### API Tests (pytest) - [ ] **Backend Health & Auth** — `/health`, `/api/auth/login`, `/api/auth/me`, auth enforcement - [ ] **Assets CRUD** — create, read, update, delete, list, search by machine_id, validation - [ ] **Check-ins** — create with/without GPS, list by asset, cascade on delete - [ ] **Customers CRUD** — create, read, update, delete, list - [ ] **Locations CRUD** — create with customer relation, read, update, delete, list with rooms - [ ] **Rooms CRUD** — create with location relation, read, update, delete, list by location - [ ] **Users CRUD** — create, read, update (role/password), delete, list - [ ] **Geofences CRUD** — create polygon, update, delete, list, point-in-geofence check - [ ] **Proximity** — find assets near GPS point - [ ] **Visits** — create, list by asset, stats - [ ] **Activity Feed** — list with user/limit filters - [ ] **Dashboard Stats** — aggregate counts - [ ] **CSV Exports** — assets, checkins, service-summary - [ ] **File Uploads** — icon upload, photo upload - [ ] **OCR** — image upload and text extraction - [ ] **Settings CRUD** — categories, makes, models, key_names, key_types, badge_types ### Frontend UI Tests (browser) - [ ] **Login page** — renders, accepts admin/changeme, redirects - [ ] **Add Asset tab** — form renders, barcode scan, manual entry, OCR, GPS capture - [ ] **Asset List tab** — shows assets, filter, detail view, CSV import - [ ] **Map tab** — pins, geofences drawn, heatmap, GPS status badge - [ ] **Customers & Locations tab** — lists, CRUD forms - [ ] **Dashboard tab** — stats cards render - [ ] **Reporting tab** — export buttons work - [ ] **Settings tab** — entity lists, add/delete settings - [ ] **Navigation** — drawer open/close, tab switching - [ ] **Dark theme** — consistent styling ### E2E Smoke Test - [ ] **Full workflow** — login → create asset → check in → verify stats → export CSV → delete ## Existing Test Coverage - `smoke_test.sh`: 16 bash-based API smoke tests (health, asset CRUD, checkins, stats, CSV, 404/422 validation) - `tests/test_server.py`: 3209-line pytest suite covering DB schema, v2 migration, seed data, asset CRUD