SwiftbookTeam5 / MdEditor

0 stars 0 forks source link

Поправить UI тесты для Login #87

Closed aleksandra-riazanova closed 8 months ago

aleksandra-riazanova commented 8 months ago

Предложения:

private func makeSUT() -> (LoginScreenObject, XCUIApplication) {
        let app = XCUIApplication()
        let screen = LoginScreenObject(app: app)
        app.launch()

        return (screen, app)
    }    

    func test_login_withValidCredentials_shouldBeTodoListAppeared() {
        let (sut, app) = makeSUT()
        sut
            .isLoginScreen()
            .set(login: LoginCredentials.valid.login)
            .set(password: LoginCredentials.valid.password)
            .login()

        TodoListScreenObject(app: app)
            .isTodoList()
    }

    func test_login_withInvalidCredentials_shouldBeAlert() {
        let (sut, _) = makeSUT()
        sut
            .isLoginScreen()
            .set(login: LoginCredentials.invalid.login)
            .set(password: LoginCredentials.invalid.password)
            .login()
            .closeAlert()
    }

private enum LoginCredentials {
    static let valid: (login: String, password: String) = ("Admin", "pa$$32!")
    static let invalid: (login: String, password: String) = ("wrongLogin", "wrongPass")
}

как пропускать экран

    private func makeSUT() -> TodoListScreenObject {
        let app = XCUIApplication()
        let screen = TodoListScreenObject(app: app)
        app.launchArguments.append(LaunchArguments.enableTesting.rawValue)
        app.launchArguments.append("-skipLogin") // пропустить экран авторизации
        app.launch()

        return screen
    }

в AppCoordinator

    override func start() {
#if DEBUG
        if CommandLine.arguments.contains("-skipLogin") {
            runMainFlow()
            return
        }
#endif
        runLoginFlow()
    }