# ts-mitra-A-04 — §A.2 ACCOUNT_INACTIVE → terminal full-screen state
# Spec ref: requirement/flow_mitra.mermaid.md §A.2 (403 ACCOUNT_INACTIVE branch).
#
# Verifies the inactive-mitra flow:
#   1. Seed mitra row with is_active=false
#   2. Reset OTP requests
#   3. Drive S3a, request OTP
#   4. Submit the correct OTP code → backend returns 403 ACCOUNT_INACTIVE
#      AFTER OTP verification succeeds (mitra.auth.routes.js L54-57)
#   5. Screen routes to /auth/inactive
#   6. PopScope(canPop: false) blocks system back
appId: com.mybestie.mitra
env:
  TEST_PHONE: "+628200000401"
  MITRA_DISPLAY_NAME: "Maestro Inactive"
  BACKEND_INTERNAL_URL: http://localhost:3001
---
- runScript:
    file: ../scripts/seed_mitra.js
    env:
      TEST_PHONE: ${TEST_PHONE}
      MITRA_DISPLAY_NAME: ${MITRA_DISPLAY_NAME}
      IS_ACTIVE: "false"
      BACKEND_INTERNAL_URL: ${BACKEND_INTERNAL_URL}
- runScript:
    file: ../scripts/reset_phone.js
    env:
      TEST_PHONE: ${TEST_PHONE}
      BACKEND_INTERNAL_URL: ${BACKEND_INTERNAL_URL}

- launchApp:
    clearState: true
- extendedWaitUntil:
    visible:
      text: "(?s).*Halo Mitra Bestie.*"
    timeout: 10000

# S3a — request OTP.
- tapOn:
    point: "50%, 53%"
- inputText: "8200000401"
- tapOn: "(?s).*kirim kode.*"

- extendedWaitUntil:
    visible:
      text: "(?s).*masukin 6 digit kode.*"
    timeout: 10000

# Peek + submit correct code.
- runScript:
    file: ../scripts/peek_otp.js
    env:
      TEST_PHONE: ${TEST_PHONE}
      BACKEND_INTERNAL_URL: ${BACKEND_INTERNAL_URL}
- inputText: ${output.OTP}

# AccountInactive screen renders.
- extendedWaitUntil:
    visible:
      text: "(?s).*akun belum aktif.*"
    timeout: 15000
- assertVisible: "(?s).*memverifikasi akun kamu.*"
- assertVisible: "(?s).*pakai nomor lain.*"

# Negative assertion: the home screen should NOT have rendered (token storage
# should be empty — backend returned 403 without tokens before is_active gate).
# Stage 2 removed the "Sesi Aktif" tile, so we assert on the post-Stage-2
# BestieHome status card marker instead.
- assertNotVisible: "(?s).*Kamu lagi (ONLINE|OFFLINE).*"
- assertNotVisible: "(?s).*(Ganti Status|Nyalain Status).*"

# Note: system-back interception is intentionally NOT tested here — PopScope
# on a GoRouter root route doesn't currently block the Android back key
# because there's no Navigator route to pop. Tracked as a follow-up; the
# AppBar has no back arrow either way so the in-app UX is correct.
