3

I have some UI Tests for my Swift project (iOS application, Swift 5) that work when running them from Xcode; however when I run them using fastlane scan, they always fail at the same point on each test that involves typing into text fields and I am not sure why.

The failure comes from filling out a UITextField, then attempting to tap the next one and fill that in.

Example:

app.textFields[“identifierOne”].tap()
app.textFields[“identifierOne”].typeText(“Text to Type”)

app.textFields[“identifierTwo”].tap()
app.textFields[“identifierTwo”].typeText(“Text to Type”)

This results in:

Failed to synthesize event: Neither element nor any descendant has keyboard focus. Event dispatch snapshot: TextField, label: ‘identifierTwo‘, placeholderValue: ‘Some ‘Value‘‘

As I mentioned earlier, this works when running the exact same tests from Xcode. I am at a loss with this one, any help is greatly appreciated.

  • Does this answer your question? [Xcode UI Testing Error keyboard](https://stackoverflow.com/questions/34115375/xcode-ui-testing-error-keyboard) – Sameer Technomark Dec 10 '20 at 21:07

1 Answers1

0

So I figured this out in the end. The tests were working fine.

But I had disable_slide_to_type: true in my scan call, which was causing some weird behaviour it seems.

I also added the following before attempting to type:

extension XCUIElement {
    var isFocused: Bool {
        let isFocused = (self.value(forKey: "hasKeyboardFocus") as? Bool) ?? false
        return isFocused
    }
}

if textField.isFocused == false {
    textField.tap()
}

And it seems to be working 100% of the time now.