Writing User Interface Testing is different from Unit Testing from some aspect. When we write User Interface Testing, we actually tell to XCUIElements to the screen swiping, the button tap, the keyboard tap that is shortly user interactions rather than performing programmatic tests against a certain API.
Before diving deeply, If you don’t have any test scheme, please apply those instructions step by step.
File > New > Target.. in Xcode and select a “UI testing bundle”, and then edit your apps scheme to run your UI tests when testing, by going to
Product > Scheme > Edit Scheme.. in Xcode and adding your UI testing bundle under “Test”
Our aim is user login flow testing to type both username textfield, password textfield to test keyword, tap Done button in LoginViewController and then navigate WelcomeViewController respectively.
First, we need to define an accessibility identifier of UIElement that is corresponding to XCUIElements.
Now, we define a XCUIApplication type property to accessing all XCUIElements that is called app.
This method is used for initializing app property and setting up some configurations such as setting false to continueAfterFailure is for when we encounter a failure case our test should be stopped cause of test cost, adding launch argument to adjustment of the test state.
Before we realize expected user interactions, we need to call launch() method.After that, we can check used elements are dislayed after app is launching to using XCTAssertTrue().As we can see in the extension, app property has XCUIElement type property such as: Buttons, TextFields, SecureTextFields etc.We can access one of them for using accessibility identifiers.
For showing all interactions as we expect, we need to uncheck all options inside
> Simulator > I/O > Keyboard..
Finally, we completed all steps.
Complete project is here, https://github.com/TolgaTaner/UITestExample
Follow me if you enjoy to read 👋