09 Multi-peran
Menguji satu cerita yang melibatkan pelanggan dan pemilik.
Konsep inti
- 09.1
Ganti peran
launchApp ulang menghapus data in-memory.
- runFlow: subflows/logout_customer.yaml - runFlow: file: subflows/relogin.yaml - 09.2
Kondisi
Jalankan langkah hanya bila perlu.
- runFlow: when: visible: id: login_screen file: subflows/login.yaml - 09.3
Satu cerita
Pelanggan pesan → pemilik timbang → pelanggan bayar.
# 1 pemilik 2 pelanggan 3 bayar

owner_orders_screenPraktik di playground
- Pemilik mencatat pesanan walk-in
- Pelanggan membuka pesanannya
- Pelanggan membayar via VA
Misi
Catat walk-in sebagai pemilik, lalu bayar transfer VA sebagai Budi.
Lihat kunci jawabankunci/m09_multi_role.yamlLulus di emulator
kunci/m09_multi_role.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"
- tapOn:
id: pay_va_copy_button
- assertVisible:
id: snackbar_message
text: "Nomor VA disalin"
- 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"Flow yang bergantung pada flow lain berubah hasil saat urutan berubah.