Как и вы, я искал в интернете изысканное решение этой проблемы.
Как и вы, я не нашел ни одного.
Таким образом, пока кто-то намного умнее меня не поймет это, я реализовал в своих тестах следующее:
import Foundation
import XCTest
extension XCUIApplication {
//Hardware keyboard makes tests fail. Reporting from these failures is ambiguous. This function is intended to fix that issue (for now, until we figure out something better)
public func keyboardReadyCheck() {
if !self.keys["S"].waitForExistence(timeout: 3) {
XCTFail("The software keyboard could not be found. Use XCode Simulator settings to turn off hardware keyboard (Keyboard shortcut COMMAND + SHIFT + K while simulator has focus)")
}
}
}
Это позволяет мне набрасывать XCUIApplication.keyboardReadyCheck
на протяжении всех тестов, что приведет к немедленному отказу, если аппаратная клавиатура включена.
Это не очень хорошее решение, но оно намного быстрее, чем наблюдение за запуском всего пакета и тайм-аутом на глупых вещах, которые он не может найти, и создание отчетов с "target not hittable" или "element not found", и я нам нужно выяснить, что случилось.