Maestro vs Detox Karşılaştırması

Mimariden bağımsız, YAML tabanlı black-box mobil E2E test

VS
Detox

React Native'e özel, Jest tabanlı gray-box senkronize E2E test

20 dk okumaAraçlar

Hızlı Karar

Tek doğru cevap yok. Native + Flutter + RN karışık bir portföy yönetiyorsan Maestro daha az bakım yükü getiriyor: YAML akışları düşük bariyerli, mimariden bağımsız çalıştığı için New Architecture geçişinden etkilenmiyor. Jest/Detox'a yatırım yaptıysan Detox hâlâ makul — ama önce iki şeyi kontrol et: npm `latest` dist-tag'i (GitHub Releases yetmiyor; 20.51.3/20.51.4 farkı) ve kendi RN sürümünde New Architecture senkronizasyonu (#4963 açık).

MaestroDetox
Tam sonucu oku

Puan Karşılaştırması

Grafik yükleniyor...

Detaylı Puanlama

Detaylı Puanlama: Maestro ve Detox — kategori bazında 10 üzerinden puanlar
KategoriMaestroDetox
Performans
8/10
8/10
Öğrenme Kolaylığı
8/10
5/10
Ekosistem
7/10
7/10
Topluluk
7/10
7/10
İş Pazarı
6/10
6/10
Gelecek
9/10
5/10

Artıları & Eksileri

Maestro

Artıları

  • Deklaratif YAML flow'lar — kod bilmeyen QA uzmanları bile test yazıp değiştirebiliyor
  • Native iOS/Android, Flutter ve React Native'de aynı sözdizimiyle çalışıyor
  • Tek binary CLI kurulumu — native build konfigürasyonu gerektirmiyor
  • OS erişilebilirlik katmanına dayandığı için framework iç mimari değişikliklerinden (New Architecture gibi) etkilenmiyor
  • Maestro Cloud'da her koşum video kaydı + log + flake-detection ile saklanıyor
  • Expo/EAS Workflows'a resmi olarak entegre (Insights dashboard, retry_failed_only)
  • Apache 2.0 lisansı ile local katman tamamen ücretsiz
  • Aktif commit kadansı — son push 18 Eylül 2026

Eksileri

  • YAML'de karmaşık koşullu mantık (çok dallanan senaryolar) JS/TS kadar doğal ifade edilemiyor
  • Android API 35/36 desteği hâlâ yok — resmi QuickStart yalnızca 29/30/31/33/34 listeliyor
  • Maestro Cloud ücretli ($250/cihaz/ay) — büyük ölçekte maliyet artabilir
  • Black-box mimari, uygulamanın iç state'ine (Redux store, native modül state'i) doğrudan erişim vermiyor
  • Görsel/erişilebilirlik tabanlı bekleme, Detox'un otomatik idle-senkronizasyonu kadar 'sıfır bekleme kodu' garantisi vermiyor
  • Google Maps gibi bazı native bileşenlerde Cloud'a özel bilinen sorunlar var (Apache HTTP legacy hatası)

En Uygun

Native + Flutter + React Native karışık portföyü olan ekiplerManuel QA'nın test akışı yazıp bakımını yapması gereken organizasyonlarNew Architecture'a geçmiş veya geçmeyi planlayan React Native projeleriHızlı kurulum ve video-tabanlı Cloud debug isteyen CI pipeline'larıExpo/EAS Workflows kullanan projeler

Detox

Artıları

  • Otomatik senkronizasyon — ağ isteği/animasyon bitene kadar bekleyip sleep() kodunu ortadan kaldırıyor
  • JS/TS ve Jest ile tam programatik esneklik, karmaşık koşullu senaryolar doğal yazılabiliyor
  • Modern async/await API'si sayesinde IDE breakpoint'leri asenkron testlerde beklendiği gibi çalışıyor
  • MIT lisansı ile tamamen ücretsiz, resmi bulut maliyeti yok
  • Wix'in 2016'dan beri süren kurumsal kullanımı — uzun vadeli production track record
  • Ayrıntılı senkronizasyon debug logları ile 'neden idle olmadı' sorusuna doğrudan cevap veriyor

Eksileri

  • Yalnızca React Native'i resmi olarak destekliyor — native-only veya Flutter projelerinde kullanılamıyor
  • React Native New Architecture (Fabric/bridgeless) ile açık, çözülmemiş bir senkronizasyon bug'ı var (#4963)
  • Sonsuz timer/animasyon içeren ekranlarda otomatik senkronizasyon timeout ile testi FAIL ediyor
  • npm build/native konfigürasyon kurulumu Maestro'ya göre daha fazla adım gerektiriyor
  • Resmi ücretli bir bulut/cihaz farmı yok — kendi CI altyapısı veya üçüncü taraf servis gerekiyor
  • Test yazımı JS/TS bilgisi gerektirdiği için kod bilmeyen manuel QA'nın doğrudan katkısı sınırlı

En Uygun

Saf React Native projeleri (New Architecture'a henüz geçmemiş veya geçişi doğrulanmış)Zaten büyük bir Detox test paketine ve Jest altyapısına yatırım yapmış ekiplerKarmaşık, çok dallanan koşullu test senaryoları yazan geliştirici-ağırlıklı ekiplerIDE breakpoint tabanlı debug alışkanlığı olan RN geliştiricileriKendi CI/cihaz altyapısını zaten işleten, ek bulut maliyeti istemeyen ekipler

Kod Karşılaştırması

Maestro
# Maestro - Login flow + assertion (YAML)
appId: com.example.myapp
---
- launchApp
- tapOn:
    id: "email_input"
- inputText: "[email protected]"
- tapOn:
    id: "password_input"
- inputText: "SuperSecret123"
- tapOn:
    text: "Sign In"
- extendedWaitUntil:
    visible:
      text: "Welcome back"
    timeout: 10000
- takeScreenshot: login-success

# Maestro - Flutter uygulamasında Semantics tabanlı element bulma
appId: com.example.flutterapp
---
- launchApp
- tapOn:
    text: "Get Started"
- assertVisible:
    id: "onboarding_complete_badge"

# Maestro - JS ile koşullu mantık (evalScript kaçış kapısı)
appId: com.example.myapp
---
- launchApp
- copyTextFrom:
    id: "plan_badge"
- evalScript: ${output.isPremium = maestro.copiedText === "PREMIUM"}
- runFlow:
    when:
      true: ${output.isPremium}
    file: premium-onboarding.yaml
Detox
// Detox - Login flow + assertion (Jest, JS/TS)
describe('Login flow', () => {
  beforeAll(async () => {
    await device.launchApp();
  });

  beforeEach(async () => {
    await device.reloadReactNative();
  });

  it('should sign in and show welcome message', async () => {
    await element(by.id('email_input')).typeText('[email protected]');
    await element(by.id('password_input')).typeText('SuperSecret123');
    await element(by.text('Sign In')).tap();

    await waitFor(element(by.text('Welcome back')))
      .toBeVisible()
      .withTimeout(10000);
  });

  it('should show error on invalid credentials', async () => {
    await element(by.id('email_input')).typeText('[email protected]');
    await element(by.id('password_input')).typeText('wrongpass');
    await element(by.text('Sign In')).tap();

    await expect(element(by.text('Invalid email or password'))).toBeVisible();
  });
});

// Detox - Senkronizasyon sorunlu ekranda whitelist/disable örneği
it('should handle screen with continuous animation', async () => {
  await device.disableSynchronization();
  await element(by.id('animated_banner')).tap();
  await device.enableSynchronization();
});

Sonuç

Tek doğru cevap yok. Native + Flutter + RN karışık bir portföy yönetiyorsan Maestro daha az bakım yükü getiriyor: YAML akışları düşük bariyerli, mimariden bağımsız çalıştığı için New Architecture geçişinden etkilenmiyor. Jest/Detox'a yatırım yaptıysan Detox hâlâ makul — ama önce iki şeyi kontrol et: npm `latest` dist-tag'i (GitHub Releases yetmiyor; 20.51.3/20.51.4 farkı) ve kendi RN sürümünde New Architecture senkronizasyonu (#4963 açık).

Ücretsiz Danışmanlık Al
SSS

Sıkça Sorulan Sorular

Tek doğru cevap yok: Detox yalnızca React Native'e özel gray-box senkronizasyon sunuyor (resmi docs: wix.github.io/Detox); çok-platformlu (native+Flutter+RN) portföyde veya hızlı kurulum isteyen ekiplerde Maestro'nun erişilebilirlik-tabanlı, framework-bağımsız yaklaşımı (docs.maestro.dev) daha az bakım yükü getiriyor. RN'e New Architecture ile derinlemesine entegre olmuş, mevcut Detox yatırımı büyük ekiplerde geçiş maliyeti bu sorunun önüne geçebilir.

Giriş

Mobil ekibinde E2E test aracı seçimi artık yalnızca "hangisi daha hızlı yazılır" sorusu değil — CI faturasını, flaky test yükünü ve React Native'in Yeni Mimari (Fabric/bridgeless) geçişiyle uyumu etkileyen bir mimari karar. Expo, 24 Haziran 2026'da EAS Workflows'taki Maestro entegrasyonuna flaky-flow tespiti ve otomatik yeniden deneme ekledi; 11 Ağustos 2026'da çıkan React Native 0.87 ise Strict TypeScript API'yi varsayılan yaptı. Seçenekler kutupta duruyor. Maestro, erişilebilirlik katmanı üzerinden çalışan black-box bir araç: deklaratif YAML akışları yazarsın, uygulamanın içine hiç dokunmaz — native iOS/Android, Flutter ve React Native'de aynı mantıkla çalışır. Detox ise tersi: Jest üzerine kurulu JS/TS gray-box bir framework, RN köprüsüne erişip otomatik senkronizasyon yapar — güçlü ama yalnızca React Native'e özel. İkisini sekiz başlıkta karşılaştırıyoruz: yazım modeli, flakiness, framework kapsamı, kurulum, bulut maliyeti, bakım canlılığı, debugging ve New Architecture uyumu.

Karşılaştırma Matrisi

Karşılaştırma Matrisi: Maestro / Detox
ÖzellikMaestroDetox
Test yazım diliDeklaratif YAMLJS/TS (Jest)
Mimari yaklaşımBlack-box (erişilebilirlik katmanı)Gray-box (RN köprüsüne erişim)
Framework kapsamıNative + Flutter + RN (Öne çıkan)Yalnızca React Native
SenkronizasyonGörsel/erişilebilirlik tabanlı retryOtomatik idle-bekleme (Öne çıkan)
New Architecture uyumuMimariden bağımsız (Öne çıkan)Açık bug (#4963, RN 0.85.3)
LisansApache 2.0MIT
GitHub yıldız (23 Eyl 2026)15.768 (Öne çıkan)12.027
Son commit (23 Eyl 2026)2026-09-18 (Öne çıkan)2026-09-07
Güncel sürümCLI 2.10.0 (31 Ağu 2026) (Öne çıkan)npm latest 20.51.4; ayrıca 21.0.0-alpha.1 (4 Eyl 2026)
Bulut çalıştırmaMaestro Cloud, $250/cihaz/ay (Öne çıkan)Resmi bulut yok, 3. taraf gerekir
Kurulum karmaşıklığıTek binary CLI (Öne çıkan)npm + native build konfigürasyonu
Debugging tarzıCloud video kaydı + logIDE breakpoint + async/await
CI entegrasyon örnekleri (resmi)EAS Workflows (native entegre)Travis CI / Bitrise / Azure DevOps (resmi CI hazırlık sayfası)
Manuel QA erişimiKod bilmeden flow yazılabilir (Öne çıkan)JS/TS bilgisi gerekir

Derinlemesine İnceleme

Maestro

Genel Bakış

Maestro, mobile-dev-inc tarafından geliştirilen açık kaynak (Apache 2.0) bir mobil E2E test aracıdır. Uygulamanın kaynak koduna veya native köprüsüne hiç dokunmaz — işletim sisteminin erişilebilirlik katmanı üzerinden ekranı okur ve etkileşim kurar. Resmi dokümantasyon bu black-box mimarinin "native iOS/Android, React Native ve Flutter arasında tutarlı bir deneyim" verdiğini söylüyor: aynı deklaratif YAML sözdizimini üçünde de kullanırsın. Test, bir akış dosyasında appId ve komut listesi (tapOn, inputText, assertVisible) şeklinde ilerliyor; bu yapı, kod bilmeyen manuel test uzmanlarının da bakım yapabilmesini sağlıyor. Local katman (CLI, Maestro Studio, MCP entegrasyonu) ücretsiz; Maestro Cloud ise cihaz başına aylık ücretli bir bulut çalıştırma, video/log ve flake-detection katmanı sunuyor. 23 Eylül 2026 okumasıyla GitHub'da ~15,8 bin yıldız, son push 18 Eylül 2026.

Ekosistem

Paket yöneticisi
Tek binary CLI kurulumu (curl script / Homebrew)
Geliştirme ortamı
Maestro Studio (bağımsız uygulama)VS Code + Maestro eklentisi
Popüler kütüphaneler
Maestro Cloud SDKMaestro MCP entegrasyonuEAS Workflows maestro job
GitHub yıldızı
15,768

Detox

Genel Bakış

Detox, Wix tarafından 2016'dan beri geliştirilen açık kaynak (MIT) bir framework; resmi dokümantasyonu kendini "React Native mobil uygulamaları için E2E test framework'ü" olarak tanımlıyor. Jest üzerine kurulu, JS/TS ile yazılan gray-box bir mimarisi var: React Native köprüsüne doğrudan erişiyor, ağ istekleri, animasyonlar ve JS thread boşalana kadar otomatik bekleyip sleep() kodlarını gereksiz kılıyor. Bu güç bir bedelle geliyor: senkronizasyon RN'in iç yapısına reflection ile bağımlı, Yeni Mimari'ye (Fabric/bridgeless) geçiş bu mekanizmayı kırabiliyor — wix/Detox #4963 (2 Temmuz 2026'da açıldı, 3 Eylül 2026'da hâlâ açık) RN 0.85.3'te somut örneğini belgeliyor. Resmi bir ücretli bulut/cihaz farmı yok; CI'ı kendin kurarsın. 23 Eylül 2026'da ~12 bin yıldız, 1.911 fork, 210 açık issue, son push 7 Eylül 2026; npm latest 20.51.4 iken GitHub Releases'teki son not 20.51.3 (30 Mayıs 2026).

Ekosistem

Paket yöneticisi
npm (detox paketi, Jest peer-dependency)
Geliştirme ortamı
VS Code + Jest eklentisiWebStorm
Popüler kütüphaneler
Jestdetox-cli@config-plugins/detox (Expo config plugin)
GitHub yıldızı
12,027

Teknik Analiz

Test yazım modeli: YAML akış vs JS/TS gray-box

Maestro'da bir test, appId ve bir dizi komuttan (tapOn, inputText, assertVisible) oluşan deklaratif bir YAML dosyasıdır. Resmi dokümantasyon bunu bilerek "hem geliştirici hem manuel test uzmanı tarafından bakımı yapılabilir" diye konumlandırıyor. Bu, test yazma hızını artırır ama karmaşık koşullu mantık (örneğin "eğer bu ekran görünüyorsa X yap, yoksa Y") YAML'de JS kadar doğal ifade edilemez; Maestro bunun için runFlow ve JS betikleme (evalScript) gibi kaçış kapıları sunar. Detox tarafında test, Jest'in describe/it bloklarıyla yazılan sıradan bir JS/TS dosyasıdır — element(by.id(...)).tap() gibi bir API kullanır ve async/await ile yazılır. Bu "gray-box" yaklaşım, Detox'a uygulamanın React Native köprüsüne erişim sağlar: senkronizasyon, native modül çağrıları ve state kontrolü için doğrudan koda erişebilir. Ekipte zaten güçlü JS/TS geçmişi olan React Native geliştiricileri için bu daha doğal hissettirir; ama test yazımı manuel QA'nın erişim alanının dışına çıkar — her flow bir kod değişikliği gibi review edilmeli. Kısacası: Maestro düşük giriş bariyeri + sınırlı programatik esneklik sunarken, Detox yüksek programatik güç + geliştirici-bağımlı bakım getiriyor.

Flakiness ve senkronizasyon yaklaşımı

Detox'un imza özelliği otomatik senkronizasyon: ağ istekleri bitene, animasyonlar durana ve JS thread boşalana kadar bekleyip sonraki komutu çalıştırır. Bu, sleep(2000) gibi kırılgan bekleme kodlarını gereksiz kılar — ama resmi troubleshooting sayfası bedelini yazıyor: sonsuz döngüdeki bir timer veya sürekli animasyon varsa Detox hiç "idle" olamaz ve test timeout ile düşer; bu durumları Detox'a elle tanıtman gerekir (disable sync). Maestro black-box olduğu için iç-durum senkronizasyonu yapmaz; ekranın görsel/erişilebilirlik durumuna bakarak bekler — assertVisible otomatik retry yapar, daha uzun beklemeler için extendedWaitUntil komutu vardır. Flakiness'i CLI'da değil Maestro Cloud katmanında ele alır: her koşum video + log ile saklanır, tekrarlayan hatalar "flaky flow" diye işaretlenir; bu insights katmanı Expo/EAS Workflows'a da taşındı (Production/Enterprise planlarıyla sınırlı). Somut kanıt: wix/Detox #4963 (2 Temmuz 2026'da açıldı, hâlâ açık), RN 0.85.3 + bridgeless/Fabric'te FabricUIManagerIdlingResources reflection katmanının NoSuchFieldException fırlattığını belgeliyor — ilk .tap() çağrısında patlıyor. Yani Detox'un asıl avantajı, RN'in iç mimarisi değiştikçe kırılıyor.

Framework bağımsızlığı: kapsam farkı en büyük ayrım

Bu kriterde iki araç arasında en net fark var. Maestro'nun resmi dokümantasyonu ("How Maestro Works") aracın black-box mimarisini açıkça "Native iOS/Android, React Native, Flutter arasında tutarlı bir deneyim" sağladığı şeklinde tanımlıyor; Flutter desteği ayrı bir sayfada belgelenmiş — Semantics Tree üzerinden çalışıyor (semanticLabel/identifier, Flutter 3.19+ gerektiriyor) ve "first-class citizen" olarak konumlandırılıyor. Teknik nedeni basit: Maestro kaynak koda hiç bakmıyor, yalnızca erişilebilirlik katmanını okuyor — bu da onu native Kotlin/Swift, Compose, Flutter ve RN arasında aynı YAML sözdizimiyle taşınabilir kılıyor. Detox'un resmi giriş sayfası ise kapsamını net şekilde çiziyor: "open-source E2E testing framework for React Native mobile applications." Native-only projeler veya Flutter uygulamaları için Detox resmi bir destek sunmuyor — tüm API'si (device.reloadReactNative() gibi) React Native'in kendi runtime'ına kenetli. Sonuç: çoklu framework portföyü (native iOS + Flutter + RN aynı ekipte) yöneten bir organizasyon için Maestro hepsini tek test diliyle kapsıyor; Detox'u seçersen RN dışındaki her uygulama için ayrı bir E2E stratejisi kurman gerekir.

Kurulum, CI'a bağlama süresi ve bulut maliyeti

Maestro CLI tek bir binary olarak dağıtılıyor; Maestro Studio için platform-özel installer var. Resmi QuickStart sayfası desteklenen Android API seviyelerini tek tek listeliyor: 29, 30, 31, 33 ve 34 — 32 bu listede yok. API 35/36 için verilen "Q2 2026" hedefi ise 23 Eylül 2026 itibarıyla geçmiş durumda ve doküman hâlâ eski listeyi gösteriyor; en yeni Android sürümlerini hedefliyorsan uyumluluğu kendin doğrulamalısın. Bulut tarafında local katman (CLI + Studio + MCP) ücretsiz ve açık kaynak; Maestro Cloud ise resmi fiyatlandırma sayfasında cihaz başına aylık 250 dolar, kurumsal plan özel fiyatlandırmalı. Detox kurulumu npm paketi üzerinden gelir (detox + Jest peer-dependency) ve native build konfigürasyonu (Android Gradle + iOS Xcode projesi) gerektirir — CLI kurulumu tek komut ama proje entegrasyonu daha fazla adım ister. Detox'un resmi ücretli bir bulut/plan sayfası bulunmuyor: kendi CI runner'ını ya da üçüncü taraf bir cihaz çiftliğini kendin kurmak zorundasın. Maliyet böylece değişken oluyor — küçük ekipte ücretsiz, büyük ölçekte altyapı yatırımı. Pratik özet: Maestro "kur ve Cloud'a öde" modeli sunarken, Detox "kur ve kendi CI altyapını inşa et" modeline dayanıyor.

Sürüm/bakım canlılığı (23 Eylül 2026 itibarıyla)

GitHub API'den canlı çekilen verilere göre Maestro (mobile-dev-inc/Maestro) 15.768 yıldız ve 969 fork ile, Detox'a (wix/Detox) göre — 12.027 yıldız, 1.911 fork, 210 açık issue — daha yüksek yıldız sayısına ve daha taze commit kadansına sahip: Maestro'nun son push'u 18 Eylül 2026, Detox'un ise 7 Eylül 2026. Detox'un daha yüksek fork/yıldız oranı, uzun süreli kurumsal kullanım (Wix, 2016'dan beri) izini gösteriyor. Release tarafında dikkat edilmesi gereken bir uyumsuzluk var: Detox'un GitHub Releases sekmesindeki en güncel sürüm notu 20.51.3 (30 Mayıs 2026, iOS/Android/senkronizasyon stabilite yamaları) iken npm registry'deki latest dist-tag 20.51.4 — bu sürüm için ayrı bir GitHub Release notu bulunmuyor. Yani yalnızca GitHub Releases sekmesine bakan bir ekip, Detox'un ne kadar güncel olduğunu yanlış değerlendirebilir; npm registry her zaman ikinci bir doğrulama noktası olmalı. Maestro'nun release kadansı ise aylık patch düzeyinde ve GitHub Releases sekmesiyle birebir örtüşüyor (CLI 2.10.0, 31 Ağustos 2026). Her iki proje de "terk edilmiş" değil — ikisi de Eylül 2026'da aktif commit alıyor — ama bakım sinyalini okurken tek bir sayfaya güvenmemek gerekiyor.

Debugging ve hata raporu kalitesi

Maestro Cloud'da her test koşumu adım adım video kaydı, detaylı log ve flake-detection ile birlikte saklanıyor — resmi anasayfa bunu ürünün merkezi vaadi olarak sunuyor: bir test kırıldığında hangi adımda, hangi ekranda başarısız olduğunu video üzerinden doğrudan görebiliyorsun. CLI seviyesinde ise Maestro Studio, flow'u adım adım interaktif çalıştırıp canlı ekran görüntüsü gösteren bir geliştirme modu sağlıyor. Detox tarafında resmi dokümantasyon "debuggable" özelliğini modern async/await API'sine bağlıyor: asenkron testlerde breakpoint'ler beklendiği gibi çalışıyor (klasik callback-tabanlı test framework'lerinde bu genelde sorunludur), ayrıca senkronizasyon sorunlarını teşhis etmek için ayrıntılı debug logları sunuyor — bir test "idle" durumuna neden geçemediğini (bekleyen network isteği, animasyon, timer) log'da gösteriyor. Özetle: Maestro'nun debugging deneyimi görsel ve Cloud-katmanına bağlı (yerel CLI'da bu derinlikte resmi bir belgeye rastlanmadı); Detox'un debugging deneyimi kod-seviyesinde ve IDE breakpoint'leriyle doğrudan entegre. Video-öncelikli bir debug alışkanlığı olan ekip Maestro'yu, IDE'de adım adım izlemeyi tercih eden bir ekip Detox'u daha rahat bulacaktır.

React Native New Architecture uyumu

Bu, 2026 yazının en somut ayrım noktası. Maestro mimariden tamamen bağımsız çalışıyor: erişilebilirlik katmanı üzerinden okuduğu için RN'in Fabric render'ı veya bridgeless moda geçişi, Maestro'nun test etme biçimini değiştirmiyor — resmi dokümantasyon bu mimariyi "black-box" diye tanımlıyor ve New Architecture'a özel bir uyarı içermiyor. Detox'ta durum farklı: wix/Detox reposundaki #4963 numaralı açık issue, RN 0.85.3'te New Architecture (bridgeless/Fabric) etkinken Detox'un senkronizasyon mekanizmasının FabricUIManagerIdlingResources.getMountItemDispatcher çağrısında NoSuchFieldException fırlattığını gösteriyor — sorun private bir alana (mMountItemDispatcher) reflection ile erişmeye çalışırken RN'in iç yapısının değişmesinden kaynaklanıyor. Issue 2 Temmuz 2026'da açıldı ve 3 Eylül 2026 itibarıyla hâlâ çözülmemişti; yani Detox'un "otomatik senkronizasyon" USP'si, tam da New Architecture'a geçen ekiplerin ihtiyaç duyduğu anda kırılıyor. Pratik sonuç: New Architecture'a geçmeyi planlayan veya zaten geçmiş bir RN ekibi, Detox'u seçmeden önce kendi RN sürümünde bu senkronizasyon davranışını mutlaka test etmeli; aksi halde ilk .tap() çağrısında testler kırmızıya düşebilir.

Hangi Senaryoda Hangisi

Ekipte native iOS/Android, Flutter ve React Native uygulamaları bir arada var

Öneri: Maestro seç

Tek YAML sözdizimiyle tüm framework'leri erişilebilirlik katmanı üzerinden test edebiliyorsun; Detox yalnızca RN'i kapsıyor, diğerleri için ayrı bir araç gerekir.

Saf React Native projesi, New Architecture (Fabric/bridgeless) zaten aktif

Öneri: Maestro'yu öncelikle dene, Detox'u yalnızca kendi RN sürümünde POC ile doğruladıktan sonra kullan

wix/Detox #4963 açık bug'ı bridgeless/Fabric ile senkronizasyon hatası veriyor; Maestro mimariden bağımsız çalıştığı için bu riski taşımıyor.

Ekipte manuel QA uzmanları var ve kod yazmadan test akışı eklemeleri gerekiyor

Öneri: Maestro seç

YAML flow'lar deklaratif ve okunabilir; resmi dokümantasyon bunu QA-dostu olarak konumlandırıyor. Detox'ta her flow bir JS/TS kod değişikliği.

Mevcut büyük bir Detox test paketi var, RN sürümü stabil ve New Architecture'a henüz geçilmedi

Öneri: Detox'ta kal

Geçiş maliyeti (mevcut yüzlerce test dosyasını YAML'e taşımak) genelde kazanılan avantajdan büyük; New Architecture'a geçiş planlanana kadar risk düşük.

Bütçe kısıtlı, kendi CI altyapısı zaten var ve ek bulut harcaması istenmiyor

Öneri: Detox seç veya Maestro'yu yalnızca local CLI ile kullan (Cloud'suz)

Detox'un resmi ücretli bulut planı yok; Maestro'nun local katmanı da ücretsiz ama Cloud katmanı $250/cihaz/ay — bütçe kısıtında ikisi de Cloud'suz çalıştırılabilir.

Karmaşık, çok dallanan koşullu test senaryoları (dinamik state'e göre farklı akış)

Öneri: Detox seç

JS/TS'nin tam programatik gücü, YAML'in deklaratif sınırlarından daha esnek koşullu mantık kurmaya izin veriyor.

Video-tabanlı debug ve flake-tespiti isteyen, CI'da onlarca paralel cihazda test koşan büyük ekip

Öneri: Maestro Cloud seç

Her koşum video + log + flake-detection ile saklanıyor; EAS Workflows entegrasyonu (Insights dashboard) bu süreci daha da otomatikleştiriyor (Production/Enterprise planında).

Yaygın Tuzaklar

  • Maestro Cloud'da Google Maps içeren ekranlar çöküyor (lokal cihazda çalışıyor)

    Maestro

    Çözüm

    google_apis emülatör imajında org.apache.http.ProtocolVersion NoClassDefFoundError alınıyor; AndroidManifest.xml'de legacy Apache HTTP kütüphanesini android:required="false" olarak deklare et.

  • Yanlış appId kullanımı — uygulama Maestro'da başlamıyor veya 'not installed' hatası veriyor

    Maestro

    Çözüm

    adb shell pm list packages (Android) veya xcrun simctl listapps booted (iOS) ile doğru appId'yi doğrula, flow dosyasına birebir kopyala.

  • New Architecture (bridgeless/Fabric) etkinken Detox testleri ilk .tap() çağrısında NoSuchFieldException ile çöküyor

    Detox

    Çözüm

    wix/Detox #4963 bug'ı henüz çözülmedi; kendi RN sürümünde küçük bir POC ile senkronizasyonu doğrula, gerekirse geçici olarak Detox'un sync mekanizmasını devre dışı bırakıp manuel bekleme ekle veya Maestro'ya geç.

  • Detox'ta sonsuz döngü/timer veya sürekli animasyon içeren ekranlarda test timeout ile FAIL oluyor

    Detox

    Çözüm

    Sorunlu bileşeni Detox'un senkronizasyon whitelist'ine ekle veya device.disableSynchronization() ile ilgili adımda senkronizasyonu geçici kapat.

  • Detox'un bakım canlılığı yalnızca GitHub Releases sekmesine bakılarak yanlış değerlendiriliyor

    Detox

    Çözüm

    npm registry'deki latest dist-tag'i ayrıca kontrol et (registry.npmjs.org/detox/latest) — GitHub Release notu her zaman en güncel npm sürümüyle eşleşmeyebilir.

Geçiş Kılavuzu

Detox'tan Maestro'ya geçiş

Tahmini süre: Orta ölçekli bir test paketi (20-40 flow) için 2-4 sprint; büyük paketlerde kademeli/paralel yürütme önerilir
  1. 1Mevcut Detox test paketindeki en kritik 3-5 kullanıcı akışını (login, checkout, ana navigasyon) önceliklendir
  2. 2Her akış için kullanılan selector'ları (testID) çıkar — Maestro da aynı testID'leri accessibility identifier olarak okuyabiliyor
  3. 3Maestro CLI'yi kur (tek binary) ve maestro test ile ilk basit flow'u (örn. login ekranı) YAML olarak yaz
  4. 4Detox'taki karmaşık koşullu mantığı (if/else senaryoları) Maestro'nun runFlow + evalScript kaçış kapılarıyla karşıla
  5. 5Paralel çalıştır: aynı akışı hem Detox hem Maestro'da bir sprint boyunca çalıştırıp sonuçları karşılaştır (yanlış negatif/pozitif kontrolü)
  6. 6CI pipeline'ına Maestro adımını ekle (Maestro Cloud veya kendi runner'ında), Detox adımını devre dışı bırakmadan izle
  7. 7Flaky oranı ve koşum süresi stabilize olunca Detox job'ını CI'dan kaldır, kalan test dosyalarını kademeli taşı
  8. 8Ekip içi bir referans doküman (ADR) ile hangi senaryoların hâlâ Detox'ta kalabileceğini (varsa) belgeleştir

Gelecek Öngörüsü

Maestro

Maestro, EAS Workflows entegrasyonu üzerinden büyümeye devam ediyor — 24 Haziran 2026'da eklenen Insights dashboard (flaky-flow tespiti, P90 süre, hata-mesajına-göre gruplama) ve retry_failed_only varsayılanı bunun en somut kanıtı. CLI tarafında ise QuickStart dokümanı 23 Eylül 2026 itibarıyla hâlâ yalnızca API 29/30/31/33/34 listeliyor ve 35/36 için verdiği Q2 2026 hedefi geçmiş durumda (docs.maestro.dev/get-started/quickstart) — Android 15/16 hedefleyen ekipler için bu hâlâ açık bir soru. Aktif commit kadansı (son push 18 Eylül 2026) ve 23 Eylül 2026 okumasıyla ~15,8 bin GitHub yıldızı projenin canlılığını gösteriyor.

Detox

Detox, Wix'in kurumsal kullanımı sayesinde stabilite yamalarıyla (20.51.3/20.51.4) aktif bakımda kalmaya devam ediyor; npm'de ayrıca 21.0.0-alpha.1 (4 Eylül 2026) yayımlanmış durumda, yani 20.x yamalarının yanında bir ana-sürüm hattı da açık (registry.npmjs.org/detox dist-tags). Ancak React Native'in New Architecture'a geçişi Detox'un senkronizasyon mimarisi için açık bir teknik borç yarattı (#4963, hâlâ çözülmedi). Bu bug'ın çözülme hızı, Detox'un RN 0.87+ ekosisteminde ne kadar güvenilir kalacağının önümüzdeki aylardaki en önemli göstergesi olacak.

Altın Bilgi

En değerli çıkarım pazarlama materyalinde görünmüyor: Detox'un rekabet avantajı olan otomatik senkronizasyon, aynı zamanda en kırılgan noktası. Detox, React Native'in iç yapısına reflection ile erişip "ne zaman idle" olduğunu anlıyor; sleep() kodlarını gereksiz kıldığı için iyi, ama RN'in iç mimarisi (Fabric, bridgeless) değiştikçe o katman kırılıyor — wix/Detox #4963 bunun 23 Eylül 2026'da hâlâ açık bir bug olduğunu gösteriyor. Ders: "bugün hangi özellikleri var" yetmiyor; "bu aracın gücü hangi katmana bağımlı ve o katman ne sıklıkla değişiyor" diye sormalısın. Detox'un gücü RN'in iç API'sine (sık değişen katman), Maestro'nunki OS erişilebilirlik standardına (yavaş değişen katman) bağlı.

İlgili Blog Yazıları

Tüm Yazıları Gör

İlgili Projeler

Tüm Projeleri Gör

İlgili İçerik