# ts-mitra-1-01b — §1 Home after login, SCENARIO 2: existing mitra who was # OFFLINE before logout → relogin shows OFFLINE. # # Spec ref: requirement/flow_mitra.mermaid.md §1 # DB invariant: mitras row exists; mitra_online_status row exists with # is_online=false (the post-logout state of someone who toggled offline # before signing out). # Expected behavior: app's GET /api/mitra/status returns is_online=false → # BestieHomeOffline. # # Setup: seed_mitra + force_mitra_offline simulates the post-logout state # of an existing user who was offline. # # This is functionally identical to ts-mitra-1-02 but tracks the SCENARIO 2 # slot explicitly. Different phone slot so it doesn't collide. appId: com.mybestie.mitra env: TEST_PHONE: "+628200000712" MITRA_DISPLAY_NAME: "Maestro Existing Offline" 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} # Force OFFLINE — simulates someone who toggled off before logout. - runScript: file: ../scripts/force_mitra_offline.js env: MITRA_ID: ${output.MITRA_ID} BACKEND_INTERNAL_URL: ${BACKEND_INTERNAL_URL} - launchApp: clearState: true - extendedWaitUntil: visible: text: "(?s).*Halo Mitra Bestie.*" timeout: 15000 # S3a → S3b → /home - tapOn: point: "50%, 53%" - inputText: "8200000712" - tapOn: "(?s).*kirim kode.*" - extendedWaitUntil: visible: text: "(?s).*masukin 6 digit kode.*" timeout: 10000 - runScript: file: ../scripts/peek_otp.js env: TEST_PHONE: ${TEST_PHONE} BACKEND_INTERNAL_URL: ${BACKEND_INTERNAL_URL} - inputText: ${output.OTP} # Verify: relogin lands on BestieHomeOffline (still offline from pre-logout). - extendedWaitUntil: visible: text: "(?s).*Bestie Maestro Existing Offline.*" timeout: 15000 - assertVisible: text: "(?s).*Kamu lagi OFFLINE.*" - assertVisible: text: "(?s).*🌙.*" - assertVisible: text: "(?s).*Nyalain Status \\(Online\\).*" - assertNotVisible: "(?s).*Kamu lagi ONLINE.*" - takeScreenshot: ts-mitra-1-01b-existing-offline-relogin