6

したがって、React NativeプロジェクトでXCode UIテストを実行しようとしています。私の目標は、fastlane/snapshotを使って自分のアプリのスクリーンショットを取得することです。React-Nativeプロジェクトで「60秒以内にアプリケーションが静止しない」

私は最終的に私が望むことをするために私のアプリをスクリプトする方法を考え出しました。残念ながら、app.otherElements["mainButton"].tap()を呼び出した後には、App failed to quiesce within 60sメッセージが表示されることがあります。

私が人間と言うことができる限り、私のアプリは静的で、何も更新やアニメーション化していないようです。しかし、UIテストが検出ヒューリスティックにどのようなものを使用しているかはわかりません。そのため、内部状態やスレッドのチェックを使用している可能性があります。

UIテストで何かが完了したと見なされないようにするネイティブ動作があると思われます。残念ながら、どのUIテストが実際に行っているかを確認する能力がなくても、React Nativeを掘り下げて修正する必要があるかどうかはわかりません。 :(

任意の助けいただければ幸い

+0

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

答えて

1

ビュー持つ問題について 上記のリンクからの回避策と背面のアニメーションを有効に

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

にし、viewWillDisappearでアニメーションを無効にする行を:!

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

あなたのテストでは、XCUIApplicationを拡張して変数を設定し、セットアップメソッド呼び出しでそのlaunchvariables関数を呼び出します

extension XCUIApplication { 
    func launchTestsWithEnvironmentVariables() { 
      launchEnvironment = [ 
       "UITEST_DISABLE_ANIMATIONS" : "YES" 
      ] 
    self.launch() 
    } 
} 




override func setUp() { 
     super.setUp() 
     continueAfterFailure = false 
     XCUIApplication().launchTestsWithEnvironmentVariables() 
    } 




func testblahblah { 

これは、その特定のビューのアニメーションを無効にする環境変数を設定します。欠点があるのは、そのビューのアニメーションをテストしていないということだけです。ハッキーの回避策は、今のところ動作します。それは本当に私のために

+0

恐ろしいを助けた

PS、そんなにありがとう!私は(AppDelegate.m'の 'UIViewController'を使っているので)それらを固定する' UIViewController'サブクラスはありませんでした。私は 'AppDelegate'の' didFinishLaunchingWithOptions'の中に無効化コードを貼り付けましたが、これはうまく機能しました。 (私は他のビューのために再び有効にする理由がなかったので、アプリケーションの実行中は無効にした) –

関連する問題