XCUITestでDynamicTypeを変更する

Dynamic Typeに対応したアプリで、デザイナーに拡大時の表示が問題ないかを確認する際FastlaneのSnapshot機能を使って文字サイズが大きい時もSnapshotで撮影できたらいいなと思い調べてみました。

UItestの対応

setUp内でXCUIApplication()に対して値を設定することでUITestを走らせた際に設定したDynamicTypeの値でテストを行うことができます。


以下のコードのようにlaunchArgumentsに対して追加を行います。

app.launchArguments += ["-UIPreferredContentSizeCategoryName", " UITestで使いたい文字の大きさ"]

最大の文字にする例

override func setUp() {
        let app = XCUIApplication()
        // Dynamic type setting 
        app.launchArguments += ["-UIPreferredContentSizeCategoryName", "UICTContentSizeCategoryAccessibilityXXXL"]
        app.launch()
    }

設定可能な値

・ UICTContentSizeCategoryXS
・ UICTContentSizeCategoryS
・ UICTContentSizeCategoryM
・ UICTContentSizeCategoryL
・ UICTContentSizeCategoryXL
・ UICTContentSizeCategoryXXL
・ UICTContentSizeCategoryXXXL
・ UICTContentSizeCategoryAccessibilityM
・ UICTContentSizeCategoryAccessibilityL
・ UICTContentSizeCategoryAccessibilityXL
・ UICTContentSizeCategoryAccessibilityXXL
・ UICTContentSizeCategoryAccessibilityXXXL

通常起動時のDynamicTypeの変更

アプリケーション通常起動時、実機でもシミュレーターでも設定から毎回DynamicTypeの値を変更するのは大変です。

XcodeのDevelopper ToolにAccesibility Inspectorという機能が搭載されているのでそれを使うと便利です。

アプリを閉じることなくつまみを動かすことでリアルタイムにDynamic Typeの値が変更されて文字サイズが変わります。