0/12 selesai APK

10 Debugging & flaky

Menemukan penyebab test merah, bukan menutupinya.

40 menit · 3 konsep · 1 misi

Konsep inti

  1. 10.1

    Baca jejak

    Log dan screenshot tiap run tersimpan.

    ~/.maestro/tests/<tanggal>/
      log + screenshot langkah gagal
  2. 10.2

    Screenshot sendiri

    Tandai kondisi layar sebelum langkah penting.

    - takeScreenshot: sebelum_bayar
  3. 10.3

    Retry seperlunya

    Plester, bukan obat.

    - retry:
        maxRetries: 2
        commands:
          - tapOn:
              id: pay_va_copy_button
Layar order_detail_screen di app Laundry Kiloan
order_detail_screen

Praktik di playground

  1. Jalankan suite penuh 3×
  2. Catat flow yang kadang gagal
  3. Buka screenshot saat gagal

Misi

Temukan flow yang kadang gagal, lalu jelaskan penyebabnya.

Lihat kunci jawabankunci/m10_debugging.yamlLulus di emulator
kunci/m10_debugging.yaml
- launchApp:
    clearState: true
- extendedWaitUntil:
    visible:
      id: login_screen
    timeout: 15000
- runFlow:
    file: subflows/relogin.yaml
    env:
      PHONE: "081100001111"
      PASSWORD: pemilik123
      HOME_ID: owner_home_screen
- tapOn:
    id: owner_walkin_button
- assertVisible:
    id: owner_walkin_screen

# Validasi: nomor wajib benar
- scrollUntilVisible:
    element:
      id: owner_walkin_save_button
    direction: DOWN
- tapOn:
    id: owner_walkin_save_button
- assertVisible:
    id: owner_walkin_error_text
    text: "Nomor WhatsApp tidak valid"

# Nomor terdaftar -> nama otomatis
- scrollUntilVisible:
    element:
      id: owner_walkin_phone_input
    direction: UP
- tapOn:
    id: owner_walkin_phone_input
- inputText: "081211112222"
- hideKeyboard
- assertVisible:
    id: owner_walkin_customer_hint
    text: "Pelanggan terdaftar: Budi Santoso"
- scrollUntilVisible:
    element:
      id: owner_walkin_weight_input
    direction: DOWN
- tapOn:
    id: owner_walkin_service_setrika
- tapOn:
    id: owner_walkin_weight_input
- eraseText: 6
- inputText: "4"
- hideKeyboard
- scrollUntilVisible:
    element:
      id: owner_walkin_save_button
    direction: DOWN
- assertVisible:
    id: owner_walkin_total
    text: "Rp20.000"
- tapOn:
    id: owner_walkin_pay_nanti
- tapOn:
    id: owner_walkin_save_button
- assertVisible:
    id: snackbar_message
    text: "Pesanan 0004 dibuat untuk Budi Santoso"
# Walk-in langsung dapat struk (cetak / kirim WA), lalu tutup
- assertVisible:
    id: owner_receipt_screen
- assertVisible:
    id: owner_receipt_total
    text: "Rp20.000"
- assertVisible:
    id: owner_receipt_status
    text: "BELUM LUNAS"
- tapOn:
    id: owner_receipt_print_button
- tapOn:
    id: owner_receipt_done_button
- tapOn:
    id: owner_nav_orders
- assertVisible:
    id: owner_order_card_status_LDR-0004
    text: "DITERIMA"

# Budi melihat pesanan walk-in & bayar transfer BRI
- runFlow: subflows/logout_owner.yaml
- runFlow:
    file: subflows/relogin.yaml
    env:
      PHONE: "081211112222"
      PASSWORD: laundry123
      HOME_ID: home_screen
- tapOn:
    id: home_active_order_card
- assertVisible:
    id: order_detail_total
    text: "Rp20.000"
- tapOn:
    id: order_pay_button
- tapOn:
    id: pay_method_transfer
- tapOn:
    id: pay_continue_button
- assertVisible:
    id: pay_transfer_screen
- tapOn:
    id: pay_bank_bri
- assertVisible:
    id: pay_va_number
    text: "7712 0812 1111 2222"
# Penyebab flaky: di Android 13+ toast sistem "disalin ke papan klip" bisa
# menutupi snackbar app. Simpan bukti, lalu periksa hal yang tidak tertutup.
- takeScreenshot: sebelum_salin_va
- tapOn:
    id: pay_va_copy_button
- takeScreenshot: sesudah_salin_va
- assertVisible:
    id: pay_va_number
    text: "7712 0812 1111 2222"
- tapOn:
    id: pay_check_status_button
- assertVisible:
    id: pay_receipt_method
    text: "Transfer BRI"
- tapOn:
    id: pay_done_button
- assertVisible:
    id: order_detail_payment
    text: "Lunas, Transfer"
Unduh file

Retry tanpa tahu penyebab menutupi bug asli. Nama flow jangan pakai ":" karena jadi nama folder screenshot di Windows.