ioskendev / ioskendev/MdEditorRepository

Lesson 3.8 Working on bugs after code review

Open
#55 0 comments 0 reactions 1 assignee Claimed by @repakuku View on GitHub
Dominant language
Swift
Stars
2
Forks
0
PR merge metrics
No merged PRs in 30d

Description

вы это не используете для подготовки тестовых данных, тогда оно зачем?
❌✅ LoginScreenObject
assert(navigationBarTitle, [.contains("Authorization")])
assert(navigationBarTitle, [.contains("Tasks")])
это захардкоженные данные
в вашем способе проверки надо было ссылаться на L10n.Login.title и L10n.TodoList.title, но вы также забыли указать в манифесте каталог ресурсов для таргета UI тестов resources: ["\(ProjectSettings.projectName)/Resources/**"],
❌✅ TodoListScreenObject
по причине выше, вам не нужно: app.launchArguments += ["-AppleLanguages", "(en)"]
тестовые данные в приватные свойства или в приватное расширение:
private enum LoginCredentials {
static let valid: (login: String, password: String) = ("Admin", "pa$$32!")
static let invalid: (login: String, password: String) = ("invalidUsername", "invalidPassword")
}
❌ TodoListScreenObject
те же ошибки, что и выше
легко изменить перевод или ввести новые секции и вам надо менять тесты
набрасаю, как можно было назвать методы и получить данные
@discardableResult
func checkSectionsTitle() -> Self

let section0 = tableView.otherElements[AccessibilityIdentifier.section(index: 0).description]
let section1 = tableView.otherElements[AccessibilityIdentifier.section(index: 1).description]

@discardableResult
func checkCellsInfo() -> Self

let cell = tableView.cells[AccessibilityIdentifier.cell(section: 0, row: 0).description]
let titleTask = cell.staticTexts.element(boundBy: 0).label
let deadlineTask = cell.staticTexts.element(boundBy: 1).label

@discardableResult
func tapOnCell() -> Self

let cell = tableView.cells[AccessibilityIdentifier.cell(section: 0, row: 0).description]
❌ TodoListUITests
те же ошибки
надо было сразу открывать нужный экран
как пропускать экран и использовать фабричный метод
private func makeSUT() -> TodoListScreenObject {
let app = XCUIApplication()
let screen = TodoListScreenObject(app: app)
app.launchArguments.append("-skipLogin") // пропустить экран авторизации
app.launch()

return screen
}

// в AppCoordinator
override func start() {
#if DEBUG
if CommandLine.arguments.contains("-skipLogin") {
runMainFlow()

window?.rootViewController = navigationController
window?.makeKeyAndVisible()
return
}
#endif
runLoginFlow()
}
❌ Выполнение задания
К сожалению, ваше решение оказалось сильно захардкоженным, скорее всего из-за невнимаельности при создании таргета тестов. Другие тесты отсутствовали.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.