Как программно редактировать настройки доступности iPhone во время юнит-теста? - PullRequest
1 голос
/ 25 марта 2019

Мое приложение поддерживает динамические шрифты. Когда пользователь изменяет размер шрифта в настройках (Settings > General > Accessibility > Larger Text) и возвращается к приложению, каждый ярлык должен обновляться.

Это реализовано путем переопределения функции UILabel

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
    super.traitCollectionDidChange(previousTraitCollection)
    guard previousTraitCollection?.preferredContentSizeCategory != traitCollection.preferredContentSizeCategory else { return }

    let metrics: UIFontMetrics = UIFontMetrics(
        forTextStyle: UIFont.TextStyle.body
    )
    font = metrics.scaledFont(for: font)
}

Теперь мне нужно проверить, правильно ли реагируют другие представления на динамический характер метки.

В частности, я бы хотел провести следующий юнит-тест:

  1. Создать вид с меткой
  2. Получить размер вида
  3. Изменить системный шрифт на больший
  4. Получить размер вида
  5. Сравните, если размеры изменились
func testDynamicFont() {

    let v: MyView = MyView()
    let oldSize: CGSize = v.intrinsicContentSize
    ??? What to do here? ???
    let newSize: CGSize = v.intrinsicContentSize
    XCTAssertNotEqual(
        oldSize, 
        newSize, 
        "Size of view should adjust to new environment"
    )
}

1 Ответ

1 голос
/ 25 марта 2019

Вы можете увеличить размер системного шрифта, используя приведенный ниже код.

    let settings = XCUIApplication(bundleIdentifier: "com.apple.Preferences")
    settings.launch()
    settings.tables.staticTexts["General"].tap()
    settings.tables.staticTexts["Accessibility"].tap()
    settings.tables.staticTexts["Larger Text"].tap()
    settings.sliders.element.adjust(toNormalizedSliderPosition: 0.7) // Increase as you need

Чтобы вернуться к собственному приложению,

let yourapp = XCUIApplication(bundleIdentifier: "com.xxx.yourappbundleid")
yourapp.activate()

Протестировано в iPhone (Real Device), iOS 12.10,4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...