Upgrade to Pro — share decks privately, control downloads, hide ads and more …

UI-тесты для iOS. XCTest. Page Object. Local mock server

Redmadrobot
November 22, 2019

UI-тесты для iOS. XCTest. Page Object. Local mock server

Redmadrobot

November 22, 2019
Tweet

More Decks by Redmadrobot

Other Decks in Technology

Transcript

  1. 3 1. Не нужно устанавливать дополнительные компоненты. Достаточно установить Xcode

    версии 7 или выше 2. Скорость 3. Test Recorder 4. Поддержка tvOS Почему XCTest?
  2. 7 Tests Simulator Device App Я, у которого нет доступа

    к коду приложения XCUIApplication(bundleIdentifier: "app.bundle.id")
  3. 10

  4. 18 Что такое Page Object? Список элементов экрана и действий,

    которые совершаются над этими элементами
  5. 19 e.g. class LoginScreen { /// Заголовок экрана var title:

    XCUIElement { return app.staticTexts["title"] } /// Поле логина var loginField: XCUIElement { return app.textFields["email"] } /// Поле пароля var passwordField: XCUIElement { return app.secureTextFields["password"] } /// Кнопка "Войти" var loginButton: XCUIElement { return app.buttons["login"] } /// Кнопка Помощь var helpButton: XCUIElement { return app.buttons["ic16DpInfoPurple"] } func fillLogin(login: String) -> LoginScreen { loginField.tap() loginField.typeText(login) return self } func fillPassword(password: String) -> LoginScreen { passwordField.tap() passwordField.typeText(password) return self } }
  6. 20 UI-test case Test Base App Proxy for tests Common

    test functions Screen Base Common screen elements Page Objects
  7. 28 func testInvalidCredentials() { addMock(LoginMock.auth_401_invalid_credentials) step(“Попробовать авторизоваться") { loginScreen.login(login: “[email protected]",

    password: “1234567890") assertion("Проверить, что отобразилась ошибка") { assertElementAppears(loginScreen .errorInvalidCredentials) } } } Test example