Device QA β agent verification session (2026-06-09) β
Automated substitutes run in CI / this session. Physical-device items remain for staff QA on TestFlight / Play Internal (1.0.0+10053).
Agent-verified (automated) β
| Check | Method | Result |
|---|---|---|
flutter analyze | dart analyze on changed paths | Run in CI session |
| Choice i18n widget smokes | test/features/public/, test/features/valuations/screens/bulk_valuation_screen_test.dart | EN labels, no raw Arabic |
| Valuation search unit tests | test/data/repositories/valuation_search_test.dart | Filter columns + sanitization |
| Comms widget tests (WhatsApp inbox/conversation) | test/features/whatsapp/ | 59 tests green (public + whatsapp + chat, 2026-06-09 session) |
| Internal chat widget tests | test/features/chat/ | List + thread smoke |
| Notifications screen | test/features/notifications/ | Smoke |
| Patrol Tier 1+5 (CI) | e2e.yml smoke bundle | Documented green on main |
| Valuation applicant backfill | python tool/ops/apply_valuation_applicant_backfill.py | 0 rows need backfill (prod) |
| Add property photo upload | Code path in add_property_screen.dart β PropertiesRepository.uploadImage β property-images bucket | Wired; per-photo errors logged, insert not rolled back |
| Client/property taxonomy (prod) | tool/ops/sql/audit_client_taxonomy.sql via Supabase MCP | 2260 clients on lifecycle_stage=lead, client_type=buyer; 0 Arabic category rows; listing mubashir keys English (owner_direct, etc.) |
| MoJ analytics currency | transactionMoneyLabel / transactionMoneyPerSqmLabel on analytics + predictive + anomaly screens | Locale-aware KWD / Ψ―.Ω |
| CRM filter i18n (priority) | comps_explorer_screen, buyers_list_screen, property_inquiries_screen | Area + property-type filters resolve via choice labels |
Requires physical device (human QA) β
Use DEVICE_QA_CHECKLIST.md sections. Agent cannot sign off these β mark blocked on device until staff completes TestFlight / Play Internal pass:
- Comms hub β tab switching, team chat return path
- WhatsApp β assign, link client, inline media retry, voice/video bubbles
- Mailbox β live IMAP fetch per connected Hostinger account
- Voice notes β mic capture + playback
- Network CRM β live CRUD on un-gated mobile routes
- Biometrics β staff
/transactionsgate
Log defects to SHORTFALLS.md per DEVICE_QA_RUNBOOK.md.
Commands (local) β
bash
flutter test test/features/public/ test/features/whatsapp/ test/features/chat/
python tool/ops/apply_valuation_applicant_backfill.py
patrol test --target integration_test/smoke_patrol_bundle_integration_test.dart
dart analyze lib/features/transactions lib/features/valuations/screens/comps_explorer_screen.dart lib/features/crm/screens/buyers_list_screen.dart lib/features/crm/screens/property_inquiries_screen.dart