XCTestCase
public extension XCTestCase
XCTestCase extension adds additional methods which allow waiting for existing or visible elements.
Useful if some background activity is being performed in the background that would change appearance
of the application when finished. If this doesn’t happen then test will fail.
Example:
Wait, by default 10 seconds, until the button will be visible (exists and hittable properties will be true).
let button = view.buttons["appearingButton"]
wait(forVisibilityOf: button)
In addition, those extensions support also the IdentifiableByElement protocol which allows to use for example page objects.
Example:
lazy var mainPage: MainPage = MainPage(in: self.app)
wait(forVisibilityOf: mainPage)
-
Wait for an identifiable element to exist in a view hierarchy. After given interval, if element is not found, test fails.
Example:
lazy var mainPage: MainPage = MainPage(in: self.app) wait(forExistanceOf: mainPage)Declaration
Swift
func wait<T>(forExistanceOf element: T, timeout: TimeInterval = XCTestCase.defaultTimeOut, file: StaticString = #file, line: UInt = #line) where T : IdentifiableByElementParameters
elementXCUIElement to wait for.
timeoutWaiting time (default: 10 seconds).
fileCurrent source file.
lineCurrent source line.
-
Wait for an identifiable element to appear in a view hierarchy. After given interval seconds, if element is not found, test fails.
Example:
lazy var mainPage: MainPage = MainPage(in: self.app) wait(forVisibilityOf: mainPage)Declaration
Swift
func wait<T>(forVisibilityOf element: T, timeout: TimeInterval = XCTestCase.defaultTimeOut, file: StaticString = #file, line: UInt = #line) where T : IdentifiableByElementParameters
elementXCUIElement to wait for.
timeoutWaiting time (default: 10 seconds).
fileCurrent source file.
lineCurrent source line.
-
Default timeout used in
waitmethods. By default set to 10 seconds.Declaration
Swift
class var defaultTimeOut: TimeInterval { get }
-
Wait for an UI element to fulfill the predicate. After given time, if the predicate is not fulfilled for a given element, test fails.
Example:
let button = view.buttons["appearingButton"] let existancePredicate = NSPredicate(format: "exists == true") wait(forFulfillmentOf: existancePredicate, for: button)Declaration
Swift
func wait(forFulfillmentOf predicate: NSPredicate, for element: XCUIElement, withFailingMessage message: String = "Failed to fulfill predicate %@ for %@ within %.2f seconds.", timeout: TimeInterval = XCTestCase.defaultTimeOut, file: StaticString = #file, line: UInt = #line)Parameters
predicateNSPredicate to fulfill.
elementXCUIElement to wait for.
messageString as format for failing message. You must use %@ for predicate value, %@ for element value and %f for timeout value.
timeoutWaiting time in seconds (default: 10 seconds).
fileCurrent source file.
lineCurrent source line.
-
Wait for an UI element to exist in a view hierarchy. After given time, if element is not found, test fails.
Example:
let button = view.buttons["appearingButton"] wait(forExistanceOf: button)Declaration
Swift
func wait(forExistanceOf element: XCUIElement, timeout: TimeInterval = XCTestCase.defaultTimeOut, file: StaticString = #file, line: UInt = #line)Parameters
elementXCUIElement to wait for.
timeoutWaiting time in seconds (default: 10 seconds).
fileCurrent source file.
lineCurrent source line.
-
Wait for an UI element to be visible in a view hierarchy. After given time, if the element is still not visible, test fails.
Example:
let button = view.buttons["appearingButton"] wait(forVisibilityOf: button)Declaration
Swift
func wait(forVisibilityOf element: XCUIElement, timeout: TimeInterval = XCTestCase.defaultTimeOut, file: StaticString = #file, line: UInt = #line)Parameters
elementXCUIElement to wait for.
timeoutWaiting time in seconds (default: 10 seconds).
fileCurrent source file.
lineCurrent source line.
-
Wait for an UI element to be not visible in a view hierarchy. After given time, if the element is still visible, test fails.
Example:
let button = view.buttons["appearingButton"] wait(forInvisibilityOf: button)Declaration
Swift
func wait(forInvisibilityOf element: XCUIElement, timeout: TimeInterval = XCTestCase.defaultTimeOut, file: StaticString = #file, line: UInt = #line)Parameters
elementXCUIElement to wait for.
timeoutWaiting time in seconds (default: 10 seconds).
fileCurrent source file.
lineCurrent source line.
XCTestCase Extension Reference