ioskendev / ioskendev/MdEditorRepository
Lesson 3.8 Working on bugs after code review
- 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.