# ts-mitra-A-09 — §A.2 OTP_EXPIRED → "Kode kedaluwarsa" popup
# Spec ref: requirement/flow_mitra.mermaid.md §A.2 (410 OTP_EXPIRED branch)
#
# Spec wants: wait 5+ min after the OTP is generated, then submit the (now
# stale) code → backend returns 410 OTP_EXPIRED → `_showResetDialog()` shows
# "Kode kedaluwarsa" AlertDialog with the "Minta kode baru" CTA.
#
# TODO: needs a force-expire-otp helper. The backend's internal _test routes
# (backend/src/routes/internal/_test.routes.js) expose helpers for payment,
# pairing, session, and mitra status — but NOT for OTP expiry. The OTP_TTL is
# 5 minutes (config.service.js:215), which is too slow for CI. Until a
# `POST /internal/_test/force-expire-otp` (or a flag on /seed-mitra) lands,
# this flow is intentionally skipped.
#
# When the helper exists, the body of this flow would be:
#   1. Seed mitra → request OTP → S3b
#   2. POST /internal/_test/force-expire-otp { phone } (sets otp_requests row
#      expires_at = NOW() - INTERVAL '1 minute', leaves used_at null so the
#      "expired" branch fires — not OTP_USED)
#   3. peek_otp.js → submit the (now stale) code → backend returns
#      410 OTP_EXPIRED
#   4. assertVisible "Kode kedaluwarsa"
#   5. tap "Minta kode baru" → S3a
#
# The wait-5-min path is rejected as a CI option deliberately. This file is
# left as a structural placeholder so the test plan stays visible.
appId: com.mybestie.mitra
---
# Empty body — this flow only runs after the force-expire-otp endpoint lands.
# `maestro test` on this file will pass trivially (no steps), so the suite
# remains green; replace with the steps above once the helper exists.
- launchApp:
    clearState: false
- takeScreenshot: ts-mitra-A-09-skipped-pending-force-expire-otp
