I am writing UITest cases for my app using XCTest. App makes several server calls in the homescreen. I could not navigate to next screen. Automation often stays idle for 1 min o
My suggestion would be to help you use one of these two methods below. The first awaits an element appears on the screen. The second element is awaiting hittable. But in any case these methods help you, maybe you can use the method sleep(param). Like sleep(5)
. Waits for 5 seconds
import XCTest
class BaseTestCase: XCTestCase {
func waitForElementToAppear(element: XCUIElement, timeout: NSTimeInterval = 60, file: String = #file, line: UInt = #line) {
let existsPredicate = NSPredicate(format: "exists == true")
expectationForPredicate(existsPredicate,
evaluatedWithObject: element, handler: nil)
waitForExpectationsWithTimeout(timeout) { (error) -> Void in
if (error != nil) {
let message = "Failed to find \(element) after \(timeout) seconds."
self.recordFailureWithDescription(message, inFile: file, atLine: line, expected: true)
}
}
}
func waitForHittable(element: XCUIElement, timeout: NSTimeInterval = 70, file: String = #file, line: UInt = #line) {
let existsPredicate = NSPredicate(format: "hittable == 1")
expectationForPredicate(existsPredicate, evaluatedWithObject: element, handler: nil)
waitForExpectationsWithTimeout(timeout) { (error) -> Void in
if (error != nil) {
let message = "Failed to find \(element) after \(timeout) seconds."
self.recordFailureWithDescription(message,
inFile: file, atLine: line, expected: true)
}
}
}
}
I hope to have helped in some way
I have set arguments in UI test class
let app = XCUIApplication()
app.launchArguments = ["NoAnimations"]
app.launch()
In my Appdelegate's didFinishLaunchingWithOptions method I made a check
NSArray *args = [NSProcessInfo processInfo].arguments;
for (NSString *arg in args){
if ([arg isEqualToString:@"NoAnimations"]){
[UIView setAnimationsEnabled:false];
}
}
So now all over my app there wont be any animation and my app is no more blocked. This reduced my automation time from 25mins to 2mins.