6

projesinde "Uygulama 60s içinde sorgulanamadı" Böylece, React Native projemde bir XCode UI Testi çalıştırmaya çalışıyorum. Amacım, uygulamamın ekran görüntülerini almak için fastlane/snapshot'ı kullanmak.React-Native projesi

Sonunda istediğim şeyi yapmak için uygulamamı nasıl komut dosyası oluşturacağımı anladım. Ne yazık ki, uygulama, app.otherElements["mainButton"].tap() numaralı telefonu aradıktan sonra bir App failed to quiesce within 60s numaralı mesaja takılıyor.

İnsan olarak anlatabildiğim kadarıyla, uygulamam statik ve hiçbir şey güncellenmiyor veya animasyon vermiyor gibi görünüyor. Ancak UI Testinin algılama sezgisi için ne kullandığını açık değilim, bu yüzden bazı dahili durum veya kontrol konularını kullanıyor olabilir.

UI Testinin işleri bittiği gibi görmesini engelleyen bazı React Native davranışları olduğundan şüpheleniyorum. Ne yazık ki, UI Testlerinin ne yaptığını görmek için herhangi bir gerçek yetenek olmadan, bunu düzeltmek için Yerele Yerlestirmek için nereye ihtiyacım olduğuna bile emin değilim. :(

Herhangi bir yardım mutluluk duyacağız

+0

http://www.openradar.me/25562105 https://forums.developer.apple.com/thread/6503 – Che

cevap

1

görünümü olan sorunlar için yukarıdaki linkten geçici çözüm ve yeniden animasyonlar açmak

viewWillAppear: 
- (void) viewWillAppear: (BOOL)animated { 
    if ([[[NSProcessInfo processInfo] environment][@"UITEST_DISABLE_ANIMATIONS"] isEqualToString:@"YES"]) { 
     [UIView setAnimationsEnabled:NO]; 
    } 
} 

ve viewWillDisappear animasyonları devre dışı bırakmak için bir satırı:!

Testlerinizde XCUIApplication öğesini genişletin ve değişkenleri ayarlayın. Daha sonra kurulum yönteminizde bu launchvariables işlevini çağırın

Bu, söz konusu partikül görünümü için animasyonları devre dışı bırakacak bir çevresel değişkeni ayarlar. Sadece olumsuz, eğer o şey için bir şey varsa, o manzara için animasyonları test etmeyeceksin. Hacky geçici çözüm ama şimdilik çalışıyor.

PS gerçekten benim için yardımcı

+0

Müthiş, çok teşekkür ederim! Onları içine almak için bir "UIViewController" alt sınıfı yoktu ("AppDelegate.m" içinde bir "UIViewController" stok kullandığım). Ancak benim için iyi çalıştı, benim 'AppDelegate' '' didFinishLaunchingWithOptions' içinde engelleyici kodu yapıştı. (Diğer görünümler için onları yeniden etkinleştirmek için herhangi bir nedenim olmadığından uygulama çalıştırması süresince onları devre dışı bıraktım) –