# ts-mitra-A-10 — §A.3 60s resend cooldown timer on S3b
# Spec ref: requirement/flow_mitra.mermaid.md §A.3
#
# After arriving on S3b the local timer (otp_screen.dart::_startCooldown,
# 60s default) keeps the resend tap disabled. The label cycles
# "kirim ulang dalam Ns" → "kirim ulang kode" once the cooldown reaches 0.
#
# What we test (deterministically, without waiting 60s in CI):
#   1. On first land, the label reads "kirim ulang dalam Ns" (disabled state)
#   2. The label is NOT "kirim ulang kode" yet
#
# The 60-second wait + enabled-tap + resend-fires-new-request branch is
# documented but skipped — a `waitForAnimationToEnd: { timeout: 65000 }`
# wedge would block the CI for a full minute on every run. Reasonable trade:
# the post-resend behavior is exercised by ts-mitra-A-06's full back-and-
# retry path, which uses reset_phone.js (the server-side equivalent of "the
# 60s passed and the cooldown is gone").
appId: com.mybestie.mitra
env:
  TEST_PHONE: "+628200000a10"
  MITRA_DISPLAY_NAME: "Maestro Cooldown"
  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: "true"
      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 → S3b
- tapOn:
    point: "50%, 53%"
- inputText: "8200000a10"
- tapOn: "(?s).*kirim kode.*"
- extendedWaitUntil:
    visible:
      text: "(?s).*masukin 6 digit kode.*"
    timeout: 10000

# Cooldown label is visible immediately on mount — "kirim ulang dalam Ns".
# Tolerate either digit count (60s → 1s) by matching the "dalam" word + the
# trailing 's'.
- extendedWaitUntil:
    visible:
      text: "(?s).*kirim ulang dalam.*s.*"
    timeout: 5000

# The enabled label "kirim ulang kode" (no "dalam") must NOT be visible.
- assertNotVisible: "(?s).*kirim ulang kode.*"

- takeScreenshot: ts-mitra-A-10-cooldown-disabled
