# ts-mitra-1-01 — §1 Bestie Home (online variant) renders end-to-end # Spec ref: requirement/flow_mitra.mermaid.md §1 + figma BestieHome (v4.jsx:417) # # Walks: seed active mitra → reset OTP → S3a → S3b → /home → assert online # variant chrome (greeting, tiles, status card, Ganti Status CTA, Pengingat, # BestieTabBar). Screenshot at the end so this also serves as a design-review # evidence baseline for Stage 7. # # A successful login lands on /home with the mitra already ONLINE — the # status_notifier's load() seeds StatusLoadedData(isOnline:true) for any # mitra that's been online in this dev DB, and the maestro test mitras are # left online by prior runs. To make this test deterministic regardless of # prior state, we reset-all-mitras-online before launching. appId: com.mybestie.mitra env: TEST_PHONE: "+628200000701" MITRA_DISPLAY_NAME: "Maestro Home Online" 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 — request OTP. - tapOn: point: "50%, 53%" - inputText: "8200000701" - 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} # Home renders — wait for the greeting then assert the rest of the chrome. - extendedWaitUntil: visible: text: "(?s).*Bestie Maestro Home Online.*" timeout: 15000 - assertVisible: text: "(?s).*Kamu lagi (ONLINE|OFFLINE).*" - assertVisible: text: "(?s).*Undangan.*" - assertVisible: text: "(?s).*Perpanjang.*" - assertVisible: text: "(?s).*(Ganti Status|Nyalain Status).*" - assertVisible: text: "(?s).*Pengingat.*" - assertVisible: text: "(?s).*Opening protocol.*" # BestieTabBar: Home / Chat / Profil - assertVisible: text: "(?s).*Home.*" - assertVisible: text: "(?s).*Chat.*" - assertVisible: text: "(?s).*Profil.*" - takeScreenshot: ts-mitra-1-01-home-online