I'm writing XCUITests for view has 2 UITextField and by defualt the simulator has hardware keyboard connected, hence the software one is not being presented.
Is it possible to set some settings (maybe in schema?) to force-disable connecting hardware keyboard by the simulator before test runs.
I went through few links but none seems to be helpful. iOS simulator - disable connect hardware keyboard programmatically
Disable Hardware Keyboard for iOS Simulator using UIAutomation
When i try this on xcode local it works but, XCUItest runs on CI and i configured fastlane file for this called enable keyboard script before Test execution starts. But it throws error
Set: Entry, ":DevicePreferences::ConnectHardwareKeyboard ", Does Not Exist
Any help would be really appreciated
To disable iOS Simulators Connect Hardware Keyboard
setting (Simulator -> Hardware -> Connect Hardware Keyboard), add this sniped in AppDelegate. ref link
#if targetEnvironment(simulator)
// Disable hardware keyboards.
let setHardwareLayout = NSSelectorFromString("setHardwareLayout:")
UITextInputMode.activeInputModes
// Filter `UIKeyboardInputMode`s.
.filter({ $0.responds(to: setHardwareLayout) })
.forEach { $0.perform(setHardwareLayout, with: nil) }
#endif
Went through the same problem. Found a simple solution to add a prescript in the UI tests scheme.
First, this is image of the plist file opened with Xcode. This is located at ~/Library/Preferences/com.apple.iphonesimulator.plist
Now here is the prescript I added to my ui tests scheme. Read the comments in script for further explanation.
killall Simulator
defaults write com.apple.iphonesimulator ConnectHardwareKeyboard -bool false
How it works First the simulator is killed. Next the "defaults" command writes the key/value into the simulators plist. Now when the tests start, they launch the simulator which takes into account the value we wrote in plist.
Hope it works for you too. :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With