```
extension XCUIApplication {
var keyboard: XCUIElement? {
let keyboard = keyboards.element(boundBy: 0)
return (keyboard.exists && keyboard.isHittable) ? keyboard : nil
}
var isKeyboardVisible: Bool { keyboard != nil }
var isKeyboardHidden: Bool { !isKeyboardVisible }
func closeKeyboard() {
guard let keyboard else { return }
let hideKeyboardButton = keyboard.buttons["Hide keyboard"]
if hideKeyboardButton.exists && hideKeyboardButton.isHittable {
hideKeyboardButton.tap()
} else {
let firstKey = keys.element(boundBy: 0)
if firstKey.exists {
typeText("\n")
}
}
}
}
```
```
extension XCUIApplication {
var keyboard: XCUIElement? {
let keyboard = keyboards.element(boundBy: 0)
return (keyboard.exists && keyboard.isHittable) ? keyboard : nil
}
var isKeyboardVisible: Bool { keyboard != nil }
var isKeyboardHidden: Bool { !isKeyboardVisible }
func closeKeyboard() {
guard let keyboard else { return }
let hideKeyboardButton = keyboard.buttons["Hide keyboard"]
if hideKeyboardButton.exists && hideKeyboardButton.isHittable {
hideKeyboardButton.tap()
} else {
let firstKey = keys.element(boundBy: 0)
if firstKey.exists {
typeText("\n")
}
}
}
}
```