Навигация по тестированию модулей XCode - PullRequest
0 голосов
/ 01 апреля 2020

Я пишу тест, в котором мне нужно проверить, что, когда пользователь нажимает кнопку регистрации, он / она попадает на страницу входа после успешной регистрации.

 func test_should_navigate_to_login_screen_for_successful_registration() {

        let usernameTextField = self.app.textFields["usernameTextField"]
        usernameTextField.tap()
        usernameTextField.typeText("johndoe")

        let passwordTextField = self.app.textFields["passwordTextField"]
        passwordTextField.tap()
        passwordTextField.typeText("password123")

        // register button will navigate to login view when successfull 
        self.app.buttons["registerButton"].tap()

        print(self.app.navigationBars.element.identifier)

        // If I pause the test and then check the result of self.app.navigationBars.element.identifier
        // then it contains the correct value but if I don't then it contains "Create an Account" which is the text of the back button
        XCTAssertEqual(self.app.navigationBars.element.identifier, "BankAccount.LoginView")
    }

проблема заключается в последнем утверждении, которое проверяет значение self.app.navigationBars.element.identifier. Значение не доступно сразу, и поэтому тест не пройден. Я отладил его и подтвердил, что в конечном итоге правильное значение доступно.

Как правильно проверить навигацию в Xcode?

РЕШЕНИЕ (по совету Мэтта в комментарии):

Это работает. Убедитесь, что предоставили accessibilityIdentifier для вашего представления.

забавный c test_should_navigate_to_login_screen_for_successful_registration () {

let usernameTextField = self.app.textFields["usernameTextField"]
usernameTextField.tap()
usernameTextField.typeText("johndoe")

let passwordTextField = self.app.textFields["passwordTextField"]
passwordTextField.tap()
passwordTextField.typeText("password123")

// register button will navigate to login view when successfull
self.app.buttons["registerButton"].tap()

let loginView = app.otherElements["LoginView"]
let loginViewExists = loginView.waitForExistence(timeout: 1.0)


XCTAssert(loginViewExists)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...