Search code examples
swiftxcodeios-simulatorxctestxcuitest

Change Keyboard in XCUITest/Simulator


I want to change the keyboard language programatically for my XCUITests to try various different keyboards. I've tried:

XCUIApplication().launchArguments += ["-AppleLanguages", "(fr)"]
XCUIApplication().launchArguments += ["-AppleLocale", "fr_FR"]

But this only changes language and locale, but it still keeps simulator default keyboard. I know I could probably do it by going to the settings app (inside of the UITest) and just change keyboard, but I'd like to do it as an input argument or similar.

I also don't want to have all keyboard languages installed on the simulator at the same time, only the one language I choose.

How can I accomplish this?


Solution

  • Since you do it in Simulator, you can access the entire macOS disk space, including Simulator support files.

    Each simulator has its own setting located in

    $HOME/Developer/CoreSimulator/Devices/SIMULATOR_ID/data/Library/Preferences/.GlobalPreferences.plist

    In this file, you can change AppleKeyboards programmatically.

    enter image description here