На симуляторе приложение открывается, но команда не понимает, какие состояния действительно должны блокировать выпуск.

Вывод: для матрицы корпоративного CI-тестирования iPhone Duo достаточно начать с представительных проверок сложенного и раскрытого состояний и ключевых экранов в Xcode 27.1; не нужно механически включать каждую позу и ориентацию. Ручное исследование в Device Hub помогает найти дефекты, но становится CI-gate только после превращения в повторяемый автоматический сценарий.

Материал предназначен IT-руководителям, решающим, включать ли iPhone Duo в выпускную приёмку.
Платформенным инженерам, которым нужно встроить проверку в существующий Mac CI.
QA-руководителям, переводящим состояния устройства и пользовательские пути в проверяемые критерии.

Последняя проверка: 28 октября 2026 года. Сведения о запуске устройства и инструментах сверены с объявлением Apple Developer о подготовке iPhone Duo, руководством по Xcode 27.1 и документацией Device Hub.

Для IT-руководителя: определить, что считается приёмкой

Apple объявила дату выхода iPhone Duo — 23 октября 2026 года — и указала поддержку разработки в Xcode 27.1. Это подтверждает доступность соответствующих инструментов, но не задаёт для корпоративных приложений обязательную матрицу или критерий выпуска. Команде следует принять собственные правила на основе функций приложения и риска дефекта, а не принимать решение только по факту появления нового устройства. Объявление Apple Developer и запись о выпуске Xcode 27.1 — исходные источники для проверки этих сведений.

Полезно развести три задачи, которые часто ошибочно объединяют в один пункт релизного списка:

  • Проверка интерфейса: убедиться, что важные экраны не ломаются при изменении доступного пространства и состояния устройства.
  • Автоматические регрессионные тесты: повторяемо проверить определённые действия и результаты в симуляторе, сохраняя отчёт для CI.
  • Подготовка материалов App Store: проверить скриншоты и сведения для публикации отдельно от тестирования интерфейса. Требования к изображениям задаёт спецификация App Store Connect; наличие подходящих материалов не является доказательством прохождения CI.

Решение для приёмки должно отвечать на практический вопрос: какой конкретный дефект не должен попасть к пользователю? Если риск — обрезанная кнопка на основном сценарии, проверяйте кнопку и сценарий при изменении компоновки. Если риск не связан с функциями приложения, добавление очередной конфигурации симулятора не улучшает контроль само по себе.

Для команды приложения: найти интерфейсы, зависящие от размера

Начните с инвентаризации экранов и реализаций, в которых предполагается фиксированное пространство. В первую очередь проверьте жёстко заданные размеры, ограничения, рассчитанные только на одну ориентацию, предположения о симметричных безопасных областях и собственную навигацию, которая не адаптируется к изменению окна. Это не означает, что каждый такой участок обязательно дефектен; это список мест, где проверка состояния с изменившейся компоновкой с большей вероятностью обнаружит проблему.

В реестре рисков отметьте:

  • вход и восстановление сессии, где скрытая или обрезанная кнопка может прервать доступ;
  • основное бизнес-действие, включая подтверждение, отмену и возврат к предыдущему шагу;
  • экраны с видео, изображениями, картами или другой областью, которая должна менять размер без потери важного содержимого;
  • собственные панели навигации и формы, где одновременно видны несколько элементов управления.

Проверка размеров нужна не для демонстрации красивой адаптивности. Она позволяет установить, остаются ли видимыми необходимые действия, соответствует ли структура экрана ожидаемому состоянию и не теряет ли пользователь контекст при переходе между компоновками. В руководстве Apple по дизайну iPhone Duo и технических разъяснениях по адаптации интерфейса описаны принципы подготовки интерфейса; применимость конкретного решения к приложению команда должна подтвердить собственными сценариями.

Проверяйте не только статичный экран. Если интерфейс обновляется после раскрытия или поворота, включите в сценарий действие до изменения состояния и действие после него. Например, важно убедиться, что черновик формы не исчезает, а выбранный раздел остаётся доступен. Такие ожидания следует формулировать как наблюдаемые результаты, а не как общее требование «интерфейс корректно перестраивается».

Для CI-платформы: отделить Device Hub от автоматического gate

Device Hub полезен для ручного переключения и изучения доступных состояний устройства. Автоматический тест решает другую задачу: выполняет заранее заданный сценарий и оставляет результат, который можно повторно проверить в конвейере. Документация Device Hub в Xcode описывает инструмент; наличие инструмента в рабочем процессе не означает, что ручное исследование автоматически стало частью CI.

До включения gate убедитесь, что сборка запускается в предусмотренной среде и использует тот Xcode, который команда утвердила для проверки. В данном случае в плане указан Xcode 27.1, а его возможности и ограничения следует сверять с примечаниями к выпуску Xcode 27.1. Также зафиксируйте выбранную цель симулятора, схему тестирования, переменные среды и способ публикации результата. Без этих сведений одинаковое название задания в CI ещё не гарантирует сопоставимость запусков.

Для каждой проверки сохраняйте как минимум итоговый статус и диагностические материалы, позволяющие определить, где возник сбой: в сборке, запуске теста, переходе состояния или проверяемом действии. Успешный запуск симулятора — лишь подтверждение, что среда смогла его открыть. Он не подтверждает прохождение сценариев и не свидетельствует о полноте матрицы.

При настройке существующей линии CI используйте такой порядок:

  1. Зафиксируйте версию Xcode и проверьте, что job действительно запускает утверждённую версию, а не выбирает доступную среду неявно.
  2. Укажите целевое устройство и схему, затем выполните тест на одном репрезентативном сценарии до расширения набора.
  3. Проверьте, что тест меняет или выбирает нужное состояние тем способом, который поддерживает используемый инструмент, и что ожидаемый результат можно проверить программно.
  4. Настройте сохранение отчёта и материалов при ошибке; проверьте, что ссылки на артефакты доступны ответственным за разбор.
  5. Запустите сценарий повторно после исправления, чтобы отличить устойчивый результат от случайного прохождения.
  6. Добавляйте новые состояния только при появлении обоснованного риска или требования продукта, а не для формального увеличения числа конфигураций.

Если сценарий можно выполнить только вручную, обозначьте его как исследовательскую проверку или ручной пункт приёмки. Не показывайте его в отчёте как автоматический gate.

Для QA: выбрать репрезентативные состояния без полного перебора

Матрица должна связывать состояние устройства с конкретной функцией приложения. Не требуется строить полное сочетание всех состояний, ориентаций, экранов и путей: такая комбинация может увеличиваться без пропорционального роста обнаруживаемых дефектов. Вместо этого выберите состояния, которые меняют компоновку, а затем назначьте им сценарии с высокой пользовательской или бизнес-критичностью.

Тип проверки Что включить в матрицу Что зафиксировать
Сложенное состояние Основной экран и критичный путь, если интерфейс использует компактную компоновку Доступность главных действий, сохранение введённых данных
Раскрытое состояние Те же важные экраны, если дополнительное пространство меняет расположение элементов Видимость содержимого, корректность перехода и отсутствие перекрытий
Изменение ориентации или размера Только если приложение поддерживает и использует соответствующее изменение Сохранение контекста, выбранного раздела и состояния операции
Проверка на физическом устройстве Сценарии, где поведение важно подтвердить вне симулятора Модель устройства, шаги проверки, результат и известные ограничения
Материалы публикации Отдельная процедура проверки скриншотов и данных публикации Соответствие требованиям App Store Connect, без подмены CI-результата

Для каждого пункта матрицы запишите четыре вещи: экран или пользовательский путь, начальное состояние, действие и ожидаемое наблюдаемое поведение. Например, формулировка «проверить раскрытый экран» недостаточна. Полезнее указать, что при открытии формы и переходе к подтверждению элементы управления остаются доступными, данные сохраняются, а возврат приводит пользователя к ожидаемому шагу. Конкретный тест зависит от реализации приложения — нельзя считать, что один сценарий подходит всем продуктам.

Проверяемый список для утверждения матрицы

  • [ ] Для каждой выбранной конфигурации указан риск, который она должна выявить.
  • [ ] Включены сложенное и раскрытое состояния, если они меняют интерфейс используемых приложением путей.
  • [ ] Для критичного экрана задано конкретное действие и ожидаемый результат, а не только визуальное открытие.
  • [ ] Отдельно помечены проверки, которые выполняются вручную в Device Hub, и тесты, автоматически запускаемые CI.
  • [ ] В CI зафиксированы Xcode, целевой симулятор, схема и место хранения результата.
  • [ ] Для сбоя сохраняются данные, по которым QA и разработчик могут воспроизвести проблему.
  • [ ] Обосновано, какие риски требуют дополнительной проверки на физическом устройстве.
  • [ ] Скриншоты App Store проверяются отдельным процессом и не засчитываются как доказательство прохождения регрессии.

Ответы на вопросы, возникающие при выборе матрицы

Как выбрать состояния, если приложение использует несколько компоновок?
Сопоставьте состояния не с полным перечнем экранов, а с местами, где реально меняются размеры, положение или доступность элементов. Если один и тот же критичный путь проходит через компактный и расширенный интерфейсы, включите оба варианта. Для экранов без значимых различий достаточно более ограниченной проверки, если это обосновано анализом риска и подтверждено командой.

Может ли ручная проверка в Device Hub считаться автоматическим тестом?
Нет, если сотрудник переключает состояние и оценивает экран вручную, а CI не выполняет воспроизводимые шаги и не проверяет результат. Ручная проверка остаётся ценной для исследования компоновки и поиска неожиданного поведения. Чтобы сделать сценарий частью автоматического gate, его нужно реализовать в тестовом наборе, запускать в утверждённой среде и сохранять результаты каждого запуска.

Что должно произойти, если тест не может переключить состояние?
Сбой управления состоянием нельзя записывать как успешную проверку интерфейса. Разделите результат на отдельные этапы: подготовка симулятора, выполнение тестового шага и проверка ожидаемого поведения. Если доступный способ автоматизации не позволяет надёжно воспроизвести нужное изменение, зафиксируйте это как ограничение и назначьте ручную проверку либо исследуйте альтернативный сценарий, не скрывая пробел в отчёте.

Зачем повторять проверку на физическом устройстве, если симуляторный тест прошёл?
Потому что симулятор подтверждает только то поведение, которое проверяет созданный сценарий в симулируемой среде. Если релевантный риск связан с реальным устройством, особенностями взаимодействия или не покрыт автоматизацией, назначьте отдельную физическую проверку. Её объём должен определяться критичностью функции и результатами тестирования, а не предположением, что прохождение симулятора гарантирует идентичное поведение на устройстве.

Для выпуска и безопасности: определить доказательства и условия допуска

Выпускной gate должен ссылаться на результат, который можно повторно проверить: версию сборки, версию Xcode, цель симулятора, схему, сценарии и отчёт. Если для конкретного риска назначено физическое тестирование, к решению о выпуске добавляют его результат и ответственную роль. Отсутствие отчёта следует считать отсутствием подтверждения, а не молчаливым успешным прохождением.

Разделите решения, которые иногда ошибочно объединяют:

  • автоматические тесты интерфейса могут быть блокирующим условием, если проверка повторяема и команда определила критерий отказа;
  • ручные проверки могут быть обязательными для выпуска, но их статус и подтверждение должны быть отдельными от автоматического результата;
  • проверка скриншотов и других материалов публикации относится к подготовке App Store, а не к доказательству того, что регрессионный CI прошёл;
  • разрешение на производственный выпуск остаётся отдельным решением с владельцем и установленными правилами.

Для каждого исключения укажите причину, владельца, срок пересмотра и последствие для выпуска. При нестабильном тесте не отключайте gate без записи: сначала определите, падает ли инфраструктура, тест или приложение, затем выберите временный ручной контроль либо откат изменения. Это позволяет не выдавать неполную проверку за одобренную.

Apple описывает средства проверки состояния и адаптации интерфейса в техническом разборе для iPhone Duo. Это полезная основа для проектирования сценариев, но предложенная здесь матрица — рекомендация по корпоративной приёмке, а не обязательный стандарт Apple. Команда должна подтверждать совместимость и выпускные критерии собственными результатами.

Если для матрицы требуются постоянные запуски симулятора, существующая инфраструктура на личных или перегруженных компьютерах может затруднить воспроизводимость: среда доступна неравномерно, настройки расходятся, а разбор падения зависит от того, кто запускал проверку. Для регулярной командной линии CI удалённый Mac может быть удобнее как выделенная среда выполнения и проверки. При этом аренда не заменяет собственный физический парк там, где необходимы реальные устройства или стабильная долгосрочная нагрузка. До решения о переносе проверьте фактические условия среды и доступные варианты на страницах тарифов RUVCLOUD и оформления заказа; не следует считать доступность конкретной конфигурации или результат тестирования гарантированными без отдельного подтверждения.