1908e98012807ebb1d35223761ec8c3696bbd19f
Closes the Stage 10 acceptance criterion §10.11 #13 (Maestro coverage). - New dev-only `POST /internal/_test/seed-pending-payment` — inserts a payment_sessions row in `pending` status with expires_at 20m out, so the Pembayaran sub-tab has a deterministic row to render. Body accepts { phone, isExtension?, amount?, durationMinutes?, mode? }. Gated on NODE_ENV != 'production' like the other test routes. - New Maestro helper script `seed_pending_payment.js` mirrors the existing seed_history_session pattern. - New flow `09_chat_tab.yaml`: cold-start onboarding → home (returning view) → seed completed session + seed pending payment → tap "💬 chat" bottom-nav → lands on /chat/aktif via redirect → assert "aktif" / "pembayaran" / "selesai" pills + empty-state copy → tap pembayaran → assert "menunggu pembayaran sesi" + "bayar Rp..." → tap selesai → assert "X menit" duration row → tap row → assert "Transkrip Chat" appbar → back → still on /chat/selesai. Maestro parsed the YAML cleanly and started executing against the device; full run requires backend + online mitra in dev DB (same pre-reqs as flows 03/05/06/08). - TECH_DEBT entry: Stage 10 retired the standalone bestie-history list screen, which means (a) the "curhat lagi" targeted-payment entry point has no UI affordance anywhere in the app — its plumbing in payment_notifier / payment_screen is now orphaned, and (b) the Stage 8 flow `08_returning_targeted.yaml` will fail at `assertVisible: "Riwayat Chat"` because it expects the deleted screen. Three fix paths listed in the entry for product to pick. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Description
No description provided
Languages
JavaScript
48.9%
Dart
45.7%
C++
1.4%
CMake
1.1%
HTML
0.9%
Other
1.9%