XCTestCase: Wait for app to idle XCTestCase: Wait for app to idle ios ios

XCTestCase: Wait for app to idle


Perhaps you have some animation or some other background (or foreground) activity that updates your UI on the main thread frequently. This causes the app to never be "quiesce" - at least on this tab. In our application we had UIView animation with option Repeat. CPU usage was fine and it wasn't a battery drain, but it made the test fail every time. Disabling the animation fixed the issue. I couldn't find a way to force the test not to wait to be idle, so we ended up disabling the animation using #ifdef for the UI test target using runtime arguments as described here: https://stackoverflow.com/a/33466038/168996


let tabBarsQuery = self.app.tabBarslet button = tabBarsQuery.buttons[@"Screen2"]

while writing UI test cases, system taking time to make it hittable so we are creating a predicate for it and waiting for the button.

let predicate = NSPredicate(format: "isHittable == 1") expectation(for: predicate, evaluatedWith: button, handler: nil)waitForExpectations(timeout:10, handler: nil)button.tap()