CI'da Mobil Testler
TestFly'ın kendi iş akışı .github/workflows/mobile-emulator-smoke.yml (Mobile Emulator Smoke) çalışan bir şablondur. development'a mobil kodu veya örnekleri değiştiren push'larda ve elle tetiklenince çalışır. Ana CI iş akışını hiçbir zaman engellemez.
| İş | Runner | Ne yapar |
|---|---|---|
| Android emulator smoke (API 30, 34) | KVM'li ubuntu-latest | reactivecircus/android-emulator-runner ile bir emülatör açar, scripts/ci/android-mobile-smoke.sh çalıştırır |
| iOS simulator smoke | macos-latest | bir iPhone simülatörü açar, scripts/ci/ios-mobile-smoke.sh çalıştırır |
Bir işin adımları
-
Java 21 ve Node;
npm install -g [email protected](denediğiniz sürümü sabitleyin). -
Derleme:
mvn -DskipTests install. -
Cihazı açın. Android: KVM'yi etkinleştirin, ardından
disable-animations: trueile emülatör runner'ı. iOS:xcrun simctl boot <udid>vexcrun simctl bootstatus <udid> -b. -
mobilecli'yi başlatın ve
server.info'yu bekleyin. Betikler, logunu (target/mobilecli-server.log) saklamak için onu açıkça başlatır;autoStartServerile TestFly da başlatırdı. -
Ajanı kurun:
mobilecli agent install --device <id>. -
Yalnızca iOS: DeviceKit'i ısıtın. Yeni bir simülatördeki ilk ekran okuması, DeviceKit açılırken bir dakikadan uzun sürebilir. Betik, Maven çalışmadan önce görünüm ağacını 180 sn sınırla bir kez okur:
curl -sf --max-time 180 -X POST http://localhost:12000/rpc -H 'Content-Type: application/json' \
-d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"device.dump.ui\",\"params\":{\"deviceId\":\"$udid\"}}" -
Testleri cihaz kimliğiyle çalıştırın:
MOBILE_DEVICE_ID=<id> mvn test -Dtestfly.profile=<profil> -Dtest=<Sınıf>. -
İş başarısız olsa da
target/surefire-reports/,target/reports/screenshots/ve mobilecli logunu artifact olarak yükleyin.
İpuçları
- CI'daki emülatörler yavaş oturur: örnek profiller
actionMs: 30000,pollMs: 500,rpcMs: 60000kullanır. - Ayarlar uygulamasının metinleri cihaz diline bağlıdır; CI imajları İngilizcedir.
Skippedtest bildiren bir iş cihaza ulaşmamıştır; bunu başarısızlık sayın.- Cihaz kimlikleri: Android'de AVD adı (
mobilecli devicesçıktısından), iOS'ta simülatör UDID'si. - Login testinin gizli bilgileri CI'ın secret deposuna konur ve teste ortam değişkeni olarak ulaşır.