# ts-mitra-1-02 โ€” ยง1 Bestie Home (offline variant) renders # Spec ref: requirement/flow_mitra.mermaid.md ยง1 + figma BestieHomeOffline (v5.jsx:188) # # Same auth as 1-01 but the mitra is forced OFFLINE in the DB before the # app launches. The status_notifier's GET /api/mitra/status returns # is_online=false on load โ†’ the home renders the offline variant: ๐ŸŒ™ # greeting, ๐Ÿ˜ด OFFLINE card, "Nyalain Status (Online)" CTA, and crucially # NO tiles / NO Pengingat (those are online-only chrome). appId: com.mybestie.mitra env: TEST_PHONE: "+628200000702" MITRA_DISPLAY_NAME: "Maestro Home 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 this mitra OFFLINE so the GET /api/mitra/status that fires on home # mount returns is_online=false. seed_mitra.js exposed MITRA_ID for us. - 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: 10000 # S3a โ†’ S3b โ†’ /home - tapOn: point: "50%, 53%" - inputText: "8200000702" - 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} # Offline variant chrome - extendedWaitUntil: visible: text: "(?s).*Bestie Maestro Home Offline.*" timeout: 15000 # The header greeting suffix flips to ๐ŸŒ™ in the offline variant. - assertVisible: text: "(?s).*๐ŸŒ™.*" - assertVisible: text: "(?s).*Kamu lagi OFFLINE.*" - assertVisible: text: "(?s).*Nyalain Status \\(Online\\).*" # Negative assertions: tiles and Pengingat are online-only chrome. - assertNotVisible: "(?s).*Pengingat.*" - assertNotVisible: "(?s).*Opening protocol.*" - takeScreenshot: ts-mitra-1-02-home-offline