I am writing test UI test case for following UI
I want to test on Login click whether I am navigating correctly on Dashboard screen or not.
Is there any method to do this?
My current testing code is like
func testExample() {
let usernameTextField = app.textFields["Username"]
usernameTextField.tap()
usernameTextField.typeText("[email protected]")
let passwordTextField = app.textFields["Password"]
passwordTextField.tap()
passwordTextField.typeText("abc123")
app.buttons["Login" ].tap()
//let loginButton = app.staticTexts["Login"]
//XCTAssertEqual(loginButton.exists, true)
app.navigationBars["UIView"].buttons["Back"].tap()
}
UI Tests can become really fragile when depending on text values. What I encourage you to do is to set the Accessibility Identifier for your ViewController's view
. That way, even if you change the title or change the whole layout, you can still be sure you're in the correct Page/Screen/View.
class DashVC: UIViewController {
override func viewDidLoad() {
view.accessibilityIdentifier = "view_dashboard"
}
}
func test_login_withValidInput_goesDashBoard() {
let app = XCUIApplication()
//...
app.buttons["Login" ].tap()
let dashBoardView = app.otherElements["view_dashboard"]
let dashBoardShown = dashBoardView.waitForExistence(timeout: 5)
XCTAssert(dashBoardShown)
}
Try this
app.buttons["Login - Login"].tap()
XCTAssertEqual(app.navigationBars.element.identifier, "appname.CalculationView") //If your second view controller is SecondViewController, your identifier is appname.SecondView.Like that my second view controller is CalculationViewController so my identifier is CalculationView
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With