Fix flakey app lock setup pin screen pin entry typing

This commit is contained in:
Stefan Ceriu 2024-01-26 17:52:55 +02:00 committed by Stefan Ceriu
parent e80b43f148
commit ffbfdfa96e
3 changed files with 12 additions and 9 deletions

View File

@ -62,6 +62,7 @@ enum A11yIdentifiers {
}
struct AppLockSetupPINScreen {
let textField = "app_lock_setup_pin-text_field"
let cancel = "app_lock_setup_pin-cancel"
}

View File

@ -26,6 +26,7 @@ struct PINTextField: View {
textField
.textFieldStyle(PINTextFieldStyle(pinCode: pinCode, isSecure: isSecure))
.keyboardType(.numberPad)
.accessibilityIdentifier(A11yIdentifiers.appLockSetupPINScreen.textField)
.onChange(of: pinCode) { newValue in
let sanitized = sanitize(newValue)
if sanitized != newValue {
@ -67,7 +68,8 @@ private struct PINTextFieldStyle: TextFieldStyle {
.overlay {
configuration
.focused($isFocussed)
.opacity(0.0)
// Textfield isn't accessible for UI tests otherwise
.opacity(0.01)
}
.onTapGesture { isFocussed = true }
}

View File

@ -137,16 +137,16 @@ class AppLockSetupUITests: XCTestCase {
// MARK: - Helpers
private func enterPIN() {
app.keys["2"].tap()
app.keys["0"].tap()
app.keys["2"].tap()
app.keys["3"].tap()
let textField = app.secureTextFields[A11yIdentifiers.appLockSetupPINScreen.textField]
XCTAssert(textField.waitForExistence(timeout: 10))
textField.clearAndTypeText("2023")
}
private func enterDifferentPIN() {
app.keys["2"].tap()
app.keys["2"].tap()
app.keys["3"].tap()
app.keys["3"].tap()
let textField = app.secureTextFields[A11yIdentifiers.appLockSetupPINScreen.textField]
XCTAssert(textField.waitForExistence(timeout: 10))
textField.clearAndTypeText("2233")
}
}