Memasang Maestro dan Menjalankan Aliran Pertama Anda
Pasang CLI Maestro, tulis fail aliran YAML yang melancarkan aplikasi dan mengetik butang, jalankannya pada simulator yang sedang berjalan, dan baca laporan test.
Memasang Maestro dan Menjalankan Aliran Pertama Anda ialah pelajaran React Native Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran React Native Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus React Native Academy merangkumi sejumlah 4 pelajaran.
Apakah Maestro?
Maestro ialah rangka kerja ujian UI mudah alih sumber terbuka oleh mobile.dev. Maestro mengawal Simulator iOS dan Emulator Android sebenar dengan mensimulasikan gerak isyarat pengguna sebenar — ketikan, leretan dan penaipan — pada UI natif. Oleh sebab ia menguji binari aplikasi sebenar, Maestro dapat mengesan pepijat yang terlepas daripada ujian unit dan komponen, seperti pendawaian navigasi yang salah atau isu pemaparan khusus platform.
Ujian Maestro ditulis dalam fail YAML yang ringkas, menjadikannya mudah diakses oleh pembangun yang bukan pakar dalam rangka kerja ujian. Setiap fail YAML menerangkan satu aliran: urutan perintah yang dilaksanakan oleh CLI Maestro terhadap aplikasi yang sedang berjalan.
Memasang CLI Maestro
Pasang Maestro melalui skrip shell pada macOS dan Linux. Maestro memuat turun perduaan CLI dan menambahkannya ke PATH anda. Pada Windows, Maestro dijalankan dalam WSL2 dengan emulator Android. Sahkan pemasangan dengan menjalankan maestro --version.
Maestro memerlukan Java 11 atau lebih tinggi pada macOS (untuk pelaksana ujian asas). Jika anda tidak mempunyai Java, pemasang Maestro mencadangkan pemasangannya melalui Homebrew. Pengujian iOS memerlukan Xcode dan app Simulator — keperluan standard untuk sebarang pembangunan iOS.
# Install Maestro (macOS / Linux)
curl -Ls 'https://get.maestro.mobile.dev' | bash
# Reload your shell profile
source ~/.zshrc # or ~/.bashrc
# Verify installation
maestro --version
# Expected: Maestro CLI v1.x.x
# Optional: install the Maestro Studio (visual test recorder)
maestro studioMenulis Fail Aliran Pertama Anda
Aliran Maestro ialah fail YAML. appId peringkat teratas menentukan app yang hendak diuji — gunakan pengecam himpunan untuk iOS (contohnya, com.example.myapp) atau nama pakej untuk Android. Pemisah --- memulakan senarai perintah.
Mulakan dengan perintah launchApp untuk membuka app dari keadaan baharu. Kemudian tambahkan penegasan dan tindakan. Aliran pertama yang paling ringkas hanya membuka app dan mengesahkan bahawa skrin alu-aluan dipaparkan.
# maestro/flows/welcome.yaml
appId: com.example.myapp
---
- launchApp
- assertVisible:
text: 'Welcome to MyApp'
- tapOn:
text: 'Get Started'
- assertVisible:
text: 'Sign In'Menjalankan Aliran
Jalankan aliran Maestro dengan maestro test path/to/flow.yaml. Pastikan simulator atau emulator sedang berjalan dan app telah dipasang padanya sebelum melaksanakan perintah tersebut. Maestro bersambung kepada simulator yang sedang berjalan secara automatik — pemilihan peranti tidak diperlukan apabila hanya terdapat satu peranti.
Maestro memaparkan setiap perintah semasa perintah itu dilaksanakan. Jika berjaya, setiap langkah menunjukkan tanda semak hijau. Jika gagal, Maestro memaparkan perintah yang gagal, tangkapan skrin antara muka pada saat kegagalan, serta mesej ralat. Tangkapan skrin itu amat berguna untuk menyahpepijat sebab penegasan gagal.
# Run a single flow file
maestro test maestro/flows/welcome.yaml
# Run all flows in a directory
maestro test maestro/flows/
# Run with verbose output
maestro test --format junit maestro/flows/login.yaml
# Generate an HTML test report
maestro test --format html --output test-results.html maestro/flows/Perintah tapOn
Perintah tapOn mensimulasikan ketikan jari. Anda boleh mengetik berdasarkan teks (label yang kelihatan), berdasarkan id (testID elemen), atau berdasarkan titik pada skrin yang ditentukan dalam bentuk peratusan. Mengetik berdasarkan teks ialah kaedah yang paling mudah dibaca dan paling tahan terhadap perubahan susun atur.
Jika beberapa elemen mempunyai teks yang sama, tambahkan index untuk menentukan elemen yang hendak digunakan (berindeks bermula daripada 0). Gunakan optional: true untuk menjadikan ketikan bersyarat — ketikan akan dilangkau tanpa menyebabkan kegagalan jika elemen tersebut tiada, yang berguna untuk menutup dialog kebenaran pilihan.
# Tap by visible text
- tapOn:
text: 'Next'
# Tap by testID
- tapOn:
id: 'submit-button'
# Tap by position (50% from left, 90% from top)
- tapOn:
point: '50%,90%'
# Tap second element with the same text
- tapOn:
text: 'Delete'
index: 1
# Optional tap (skips if not found)
- tapOn:
text: 'Allow'
optional: truePerintah inputText
Gunakan inputText untuk menaip teks ke dalam medan input yang sedang difokuskan. Ketik TextInput terlebih dahulu untuk memfokuskannya, kemudian gunakan inputText untuk menaip. Maestro menaip keseluruhan rentetan sekali gus, bukannya aksara demi aksara.
Bagi medan yang memerlukan teks sedia ada dipadamkan terlebih dahulu, gunakan clearText sebelum inputText. Gunakan hideKeyboard selepas menaip untuk menutup papan kekunci perisian, yang mungkin menutupi elemen lain yang perlu anda gunakan.
# Type email address into the focused input
- tapOn:
id: 'email-input'
- inputText: 'user@example.com'
# Clear and retype
- tapOn:
id: 'search-input'
- clearText
- inputText: 'react native'
# Dismiss keyboard
- hideKeyboard
# Tap the search button after keyboard is hidden
- tapOn:
text: 'Search'Melihat Laporan Ujian
Maestro menjana keputusan ujian dalam beberapa format: teks biasa dalam terminal, XML JUnit (untuk sistem penyepaduan berterusan seperti GitHub Actions), atau laporan HTML interaktif. Laporan HTML menyertakan tangkapan skrin bagi setiap langkah, supaya anda boleh menyemak secara visual perkara yang berlaku pada setiap titik dalam aliran dengan mudah.
Apabila ujian gagal, Maestro menyimpan tangkapan skrin skrin pada saat kegagalan. Cari tangkapan skrin kegagalan dalam output untuk memahami sebab penegasan gagal — selalunya skrin menunjukkan pemutar pemuatan dan bukannya kandungan yang dijangka, sekali gus mendedahkan masalah masa.
# Run all tests and save a JUnit XML report
maestro test \
--format junit \
--output results/test-results.xml \
maestro/flows/
# The XML report contains:
# - Test suite name
# - Each test case with pass/fail status
# - Failure messages with screenshot paths
# - Total durationMemahami Susunan Pelaksanaan Aliran
Perintah dalam aliran Maestro dilaksanakan secara berurutan. Maestro menunggu setiap perintah selesai secara automatik sebelum beralih kepada perintah seterusnya. Ketikan menunggu sehingga elemen kelihatan dan stabil sebelum berinteraksi dengannya, manakala penegasan akan dicuba semula sehingga elemen muncul (dengan had masa yang boleh dikonfigurasi).
Had masa lalai untuk assertVisible ialah 5 saat. Jika app anda mengambil masa lebih lama untuk memuatkan skrin (contohnya, app mendapatkan data daripada API yang perlahan), tingkatkan had masa dengan pilihan timeout atau tambahkan perintah waitForAnimationToEnd.
# Increase timeout for a slow-loading screen
- assertVisible:
text: 'Your Dashboard'
timeout: 10000 # 10 seconds instead of default 5
# Wait for animations to finish before asserting
- waitForAnimationToEnd
- assertVisible:
text: 'Profile Loaded'
# Scroll down before asserting an element below the fold
- scroll:
direction: DOWN
- assertVisible:
text: 'Footer'Membuka App dari Keadaan Baharu dengan clearState
Secara lalai, launchApp membawa app ke latar depan jika app itu sudah berjalan (pelancaran hangat). Bagi ujian yang mesti bermula dengan keadaan bersih — tiada pengguna yang telah log masuk dan cache pangkalan data kosong — gunakan clearState: true untuk memadamkan semua data app sebelum membukanya.
Ini sama seperti menyahpasang dan memasang semula app. Gunakannya dalam aliran ujian anda yang paling kritikal untuk memastikan aliran tersebut bermula daripada asas yang boleh dijangka dan tidak bergantung pada data yang ditinggalkan oleh aliran terdahulu.
# maestro/flows/fresh-login.yaml
appId: com.example.myapp
---
# Clear ALL app data (like a fresh install)
- launchApp:
clearState: true
- assertVisible:
text: 'Welcome to MyApp' # Onboarding screen appears
- tapOn:
text: 'Sign In'
- tapOn:
id: 'email-input'
- inputText: 'test@example.com'
- tapOn:
id: 'password-input'
- inputText: 'testpassword'
- tapOn:
text: 'Sign In'
- assertVisible:
text: 'Home'Menyusun Aliran dengan Subaliran
Bagi langkah berulang seperti log masuk sebelum setiap ujian, keluarkan langkah tersebut ke dalam fail YAML subaliran dan rujukkannya dengan runFlow. Dengan ini, setiap aliran ujian kekal tertumpu pada senario khususnya dan persediaan log masuk menjadi satu langkah yang boleh digunakan semula dalam satu baris.
Subaliran berfungsi seperti panggilan fungsi dalam kod — subaliran dilaksanakan sebaris bersama aliran induk. Anda boleh menghantar parameter kepada subaliran menggunakan bahagian env supaya subaliran boleh digunakan semula dengan data yang berbeza (pengguna yang berbeza dan nilai input yang berbeza).
# maestro/flows/subflows/login.yaml
appId: com.example.myapp
---
- tapOn:
id: 'email-input'
- inputText: '${EMAIL}'
- tapOn:
id: 'password-input'
- inputText: '${PASSWORD}'
- tapOn:
text: 'Sign In'
- assertVisible:
text: 'Home'
# maestro/flows/profile.yaml
appId: com.example.myapp
env:
EMAIL: user@test.com
PASSWORD: testpass
---
- launchApp:
clearState: true
- runFlow: subflows/login.yaml
- tapOn:
text: 'Profile'
- assertVisible:
text: 'Edit Profile'Maestro Studio untuk Rakaman Visual
Maestro Studio ialah antara muka web interaktif yang menstrim skrin simulator anda dan membolehkan anda merakam aliran dengan mengklik elemen. Jalankan maestro studio dan penyemak imbas akan dibuka supaya anda boleh mengklik untuk menjana perintah YAML secara automatik.
Ini ialah cara terpantas untuk mencipta aliran pertama anda — rakam laluan berjaya secara interaktif, kemudian semak dan sunting YAML yang dijana untuk menambahkan penegasan serta mengendalikan kes pinggiran. Studio turut menunjukkan pepohon elemen bagi setiap skrin, yang membantu anda mencari testID atau teks terbaik untuk disasarkan.
# Start Maestro Studio
maestro studio
# Opens browser at http://localhost:9999
# - Left panel: live simulator view
# - Click any element to generate a tapOn command
# - Type in input fields to generate inputText commands
# - Right panel: generated YAML that you can copySemakan Pantas
Uji pemahaman anda tentang konsep Pembangunan Mudah Alih React Native daripada pelajaran ini.
Rumusan Pelajaran
Dalam pelajaran ini, anda telah mempelajari: cara memasang Maestro dan menulis fail aliran YAML yang membuka app serta membuat penegasan terhadap kandungan yang kelihatan, cara menggunakan tapOn, inputText dan assertVisible untuk mengendalikan interaksi pengguna dalam aliran, serta cara menggunakan subaliran untuk berkongsi langkah berulang seperti log masuk merentas beberapa aliran ujian. Seterusnya, kita akan menulis penegasan Maestro yang lebih maju dan mengendalikan keadaan antara muka yang dinamik.
Pelajari JavaScript dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Soalan Lazim
Adakah pelajaran “Memasang Maestro dan Menjalankan Aliran Pertama Anda” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran React Native Academy, termasuk “Memasang Maestro dan Menjalankan Aliran Pertama Anda”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus React Native Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Memasang Maestro dan Menjalankan Aliran Pertama Anda”?
Pasang CLI Maestro, tulis fail aliran YAML yang melancarkan aplikasi dan mengetik butang, jalankannya pada simulator yang sedang berjalan, dan baca laporan test. Anda berlatih React Native Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan React Native Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran React Native Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Memasang Maestro dan Menjalankan Aliran Pertama Anda” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran React Native Academy ini?
Ya. Setiap pelajaran React Native Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Memasang Maestro dan Menjalankan Aliran Pertama Anda
- Penegasan dan Menunggu Elemen
- Menguji Perjalanan Pengguna Berbilang Skrin
- Maestro dalam CI dengan GitHub Actions