Симптом: снимки для разных языков и устройств приходится переснимать вручную, а результат в тестах иногда меняется от запуска к запуску.
Быстрое решение: сначала добейтесь стабильного UI-теста в Xcode на одном симуляторе, затем подключите fastlane snapshot для сбора снимков и вручную проверьте каждый файл. Для этой работы нужна среда Mac с Xcode и iOS-симулятором.
Эта инструкция подойдёт независимым разработчикам, которым нужно подготовить материалы для нескольких языков приложения без ручной пересъёмки.
Она пригодится небольшим командам, поддерживающим несколько целевых симуляторов и желающим сделать сбор воспроизводимым.
Если у вас нет локального Mac, здесь вы найдёте, что проверить до переноса UI-тестов в удалённую среду.
Начните с одного проверенного сценария
fastlane snapshot автоматизирует получение снимков через UI-тесты: тест запускает приложение, открывает нужные экраны и сохраняет изображения. Это не самостоятельный редактор снимков и не замена тестов. Если тест не может открыть нужный экран, fastlane не сможет надёжно получить требуемый кадр. В руководстве fastlane по снимкам экрана описаны подготовка проекта и общий порядок сбора.
Для первого прогона выберите короткий сценарий с важным для магазина экраном. Например, экран первой настройки приложения или основную функцию. Подготовьте UI Test target, включите в тестовую схему и убедитесь, что схема доступна для запуска. Затем запустите тест из Xcode и посмотрите, доходит ли приложение до требуемого состояния.
Когда ручной запуск стабилен, добавьте точку захвата снимка в тестовый сценарий и настройте сбор через fastlane. Названия схемы, языка и цели симулятора должны соответствовать вашему проекту и установленной среде. Для начальной проверки достаточно одного языка и одного устройства: такой прогон поможет отделить ошибки теста от ошибок массового сбора.
В документации fastlane описаны команды и конфигурация для подготовки и запуска сбора; актуальный синтаксис проверяйте по руководству по снимкам и документации действия capture_ios_screenshots. Не копируйте пример конфигурации вслепую: доступные назначения симулятора зависят от установленной версии Xcode и состава среды.
Если тест не доходит до нужного экрана при запуске непосредственно из Xcode, сначала исправьте тест или подготовку приложения. Добавление новых языков и симуляторов только увеличит число неудачных прогонов.
Для локализованного приложения проверьте две разные локализации
Снимок должен показывать интерфейс на том языке, который вы намерены представить пользователю. Для этого недостаточно включить язык в конфигурацию fastlane: приложение должно получить нужную локаль во время тестового запуска, а тестовый сценарий — подтвердить, что она действительно применилась.
Отдельно проверяйте язык интерфейса приложения и язык материалов в App Store Connect. Это связанные, но разные задачи. Первый определяет, что увидит пользователь на снимке. Второй относится к локализованным материалам и сведениям карточки приложения в магазине. Созданный файл изображения сам по себе не добавляет язык метаданным и не подтверждает, что вся карточка заполнена для этой локали.
Для каждой локали проверьте экран, на котором видны наиболее длинные подписи, кнопки или предупреждения. Перевод, который помещается на одном языке, может обрезаться на другом. Также проверьте даты, валюты и загружаемый текст: если приложение показывает содержимое сервера, результат теста должен быть предсказуемым и соответствовать выбранному языку.
В конфигурации fastlane укажите только те языки, которые реально проверены в тестовой среде. После прогона сопоставьте имя файла и его содержимое: полагаться только на название файла недостаточно. Если локаль не переключилась, в выходной папке может оказаться несколько копий одного и того же языка под разными именами.
В требованиях к материалам важны не только локаль, но и соответствие изображения правилам магазина. Перед подготовкой финального набора сверяйтесь с текущими спецификациями снимков экрана и инструкциями по загрузке предварительных просмотров и снимков. Эти документы определяют требования к материалам; факт их соблюдения нельзя выводить только из успешной работы теста.
Сформируйте охват симуляторов по целевым устройствам
Вы можете запускать сбор на нескольких симуляторах, если проектные тесты подходят для этих назначений, а нужные среды доступны в Xcode. Однако расширять список устройств следует после проверки базового сценария. Иначе ошибка одного назначения затруднит разбор всей партии файлов.
В fastlane конфигурацию устройств можно использовать, чтобы организовать сбор по нужным симуляторам. Список должен отражать поддерживаемый проектом охват, а не быть произвольным перечнем всех доступных устройств. Сначала определите, какие варианты приложения вы действительно должны проверить, затем убедитесь, что каждый из них доступен в Device Hub и запускает тестовую схему. Apple описывает управление симулируемыми и физическими устройствами в документации Device Hub.
| Вариант сбора | Что вы проверяете | Когда расширять |
|---|---|---|
| Один симулятор | Запуск приложения, переход к экрану, сохранение снимка | Когда базовый тест повторяется предсказуемо |
| Несколько выбранных симуляторов | Различия компоновки и доступность целевых сред | Когда каждое назначение отдельно прошло тест |
| Несколько языков и симуляторов | Соответствие содержимого файлу, локали и целевому экрану | Когда результаты каждого сочетания можно проверить |
После расширения охвата сравните содержимое файлов по назначению и языку. Не считайте успешный запуск на одном симуляторе доказательством того, что другие размеры экрана также проверены. В частности, снимки из симулятора и снимки с физического устройства — не взаимозаменяемое подтверждение поведения приложения на всех устройствах. Apple отдельно объясняет, как получать снимки экрана с устройств и симуляторов в документации Xcode.
Если снимок меняется от запуска к запуску
Нестабильный результат чаще связан не с сохранением файла, а с состоянием приложения. Проверьте, требуется ли вход в учётную запись, зависит ли экран от сети, появляется ли индикатор загрузки и меняются ли тестовые данные между запусками. При таких условиях один прогон может сохранить экран загрузки, а другой — уже заполненный экран.
Подготовьте предсказуемое состояние перед захватом. Используйте контролируемые тестовые данные, стабильный способ авторизации и явное ожидание появления целевого элемента. Не полагайтесь на фиксированную паузу как на универсальное решение: быстрый запуск может завершиться раньше, а медленный — позже. В первую очередь дождитесь условия, которое действительно подтверждает готовность экрана.
Для сетевого содержимого проверьте, что тест понимает, когда запрос завершён, и что ответ не меняется неожиданным образом. Учитывайте, что повтор теста может скрыть нестабильность, но не устраняет её причину. Возможности ожидания и повторного запуска описаны в документации fastlane; применяйте их только после проверки конкретного сценария и сверяйтесь с текущим описанием capture_ios_screenshots. Не считайте наличие повтора гарантией одинаковых снимков.
Перед расширением набора зафиксируйте, какое состояние должно быть видно: вошёл ли пользователь, загружен ли основной контент, скрыты ли системные сообщения. Затем повторно запустите тот же тест и сравните файлы. Если содержимое меняется, найдите источник изменений в подготовке теста или данных, а не маскируйте его переименованием файлов.
На удалённом Mac сначала подтвердите запуск теста
Симулятор работает в среде Mac с Xcode, поэтому удалённый запуск имеет смысл только при доступности требуемой версии Xcode, нужной среды симулятора и проектной схемы. Apple описывает работу с симулируемыми устройствами в документации Xcode и Device Hub. Сам факт удалённого доступа не подтверждает, что проект соберётся или что UI-тест сможет открыть приложение.
Перед передачей процесса автоматизации проверьте базовые условия в той же среде, где будут создаваться снимки:
- проект открывается и нужная схема доступна для запуска;
- тестовый сценарий проходит на выбранном симуляторе;
- тест получает требуемое состояние приложения без ручного вмешательства;
- снимок создаётся и сохраняется в ожидаемом каталоге;
- файлы доступны из вашей сессии для просмотра и переноса.
Здесь важно проверить не только окончание команды, но и сам результат. Успешное завершение теста не доказывает, что сохранённый файл является актуальным, относится к нужному языку и содержит правильный экран. Проверьте путь сохранения, откройте несколько файлов и сопоставьте их с назначениями сборки.
Для работы через удалённую сессию заранее уточните, как вы будете получать артефакты и сможете ли просмотреть их после завершения процесса. Условия доступа и доступные варианты использования MacUDP вы можете проверить в справочном разделе. Не переносите в автоматизацию локальные предположения о путях, авторизации и времени жизни сессии без проверки в целевой среде.
Перед загрузкой отделите генерацию от приёмки
Сбор изображений и приёмка магазинных материалов — разные этапы. fastlane позволяет автоматизировать создание файлов, а действие deliver документировано как средство загрузки материалов и данных в App Store Connect. Прежде чем использовать загрузку, разберитесь, куда именно направлены изменения и какие существующие метаданные могут быть затронуты. Сверяйтесь с актуальной документацией deliver, а не только с тем, что команда завершилась без ошибки.
Перед отправкой проверьте соответствие каждого файла языку, целевому устройству и реальному интерфейсу приложения. Уберите устаревшие снимки, случайные тестовые данные и кадры, где виден экран загрузки или сообщение об ошибке. Сверьте файлы с текущими правилами проверки снимков и требованиями к материалам в App Store Connect.
Не делайте вывод, что снимок автоматически соответствует правилам проверки или что его загрузка означает одобрение приложения. Генерация подтверждает лишь выполнение сценария и создание файлов. Корректность изображений, соответствие языков, выбор назначения загрузки и результат проверки остаются отдельными задачами.
Для выпускаемой версии храните понятное соответствие между снимками и их назначением: язык, устройство, экран и версия интерфейса. Тогда при изменении локализации или дизайна вы сможете понять, какие материалы требуют пересъёмки, вместо того чтобы повторно проверять весь архив. При этом не используйте название файла как единственный источник истины — откройте изображение и подтвердите его содержимое.
Контрольный список перед автоматическим сбором
- [ ] UI-тест запускается из Xcode и проходит до нужного экрана.
- [ ] Выбранная схема доступна в среде, где выполняется fastlane.
- [ ] Язык приложения проверен по фактическому тексту интерфейса.
- [ ] Каждое назначение симулятора отдельно проходит тест.
- [ ] Сетевые данные, вход и состояние загрузки не меняются непредсказуемо.
- [ ] Каталог результата доступен для просмотра после выполнения теста.
- [ ] Снимки вручную сверены с языком, устройством и состоянием приложения.
- [ ] Перед загрузкой проверены целевое приложение и возможное влияние на существующие материалы.
Частые вопросы
Как fastlane snapshot получает снимки экрана из UI-тестов?
Инструмент связывает сбор с UI-тестовым сценарием: тест запускает приложение, открывает нужный экран и вызывает захват изображения. Поэтому сначала проверьте сам тест в Xcode на одном симуляторе. Если приложение не доходит до целевого состояния или зависит от случайных данных, настройка fastlane не исправит эту проблему.
Как подготовить снимки для нескольких языков приложения?
Настройте нужные языки для сбора и подтвердите, что приложение действительно отображает интерфейс на каждом из них. Затем сверяйте изображения отдельно от локализованных метаданных App Store Connect. Создание снимка не добавляет язык карточке приложения и не подтверждает, что все её тексты и материалы заполнены.
Можно ли запускать fastlane snapshot для нескольких симуляторов?
Да, если выбранные симуляторы доступны в Xcode, а схема и UI-тесты работают для соответствующих назначений. Добавляйте устройства по реальному охвату приложения и проверяйте каждое отдельно. Успешный прогон на одном симуляторе не подтверждает, что остальные варианты экрана проверены.
Как собрать снимки через fastlane без локального Mac?
Используйте удалённую среду Mac с Xcode, подходящим симулятором и рабочей схемой проекта. До автоматизации проверьте запуск UI-теста и сохранение снимка именно там. Дополнительно убедитесь, что после завершения сессии вы можете открыть файлы и получить их для проверки.
Если сейчас вы делаете всё на личном компьютере, ручная съёмка плохо масштабируется, а отдельный Mac нужно покупать и самостоятельно обслуживать. Для регулярных задач это может означать лишние расходы на оборудование и необходимость держать машину доступной; при этом удалённая автоматизация тоже не подходит, если вашим тестам нужны недоступные физические подключения или постоянно высокая нагрузка. Если сбор снимков требует среды с Xcode и симулятором, изучите варианты аренды MacUDP и сопоставьте их с частотой запусков. Для разовой работы может быть достаточно локального Mac; для повторяемой удалённой проверки аренда позволит использовать Mac без покупки отдельной машины.
Часто задаваемые вопросы
Как fastlane snapshot получает снимки экрана из UI-тестов?
Инструмент запускает UI-тесты в выбранной конфигурации, а тестовый сценарий доводит приложение до нужного экрана и вызывает сохранение снимка. Сначала проверьте этот путь в Xcode на одном симуляторе. Если тест не запускается или интерфейс зависит от случайных данных, настройка fastlane не исправит первопричину.
Как подготовить снимки для нескольких языков приложения?
Добавьте нужные локали в конфигурацию сбора и убедитесь, что запуск приложения действительно переключает его интерфейс на каждую из них. Затем проверьте содержимое файлов отдельно от языков метаданных App Store Connect: созданный снимок сам по себе не добавляет локаль карточке приложения и не подтверждает полноту её оформления.
Можно ли запускать fastlane snapshot для нескольких симуляторов?
Да, если выбранные симуляторы доступны в установленной среде Xcode, а схема проекта и UI-тесты запускаются для нужных назначений. Настраивайте и проверяйте охват по целевым устройствам проекта. Успешный результат для одного симулятора не означает, что протестированы все размеры экрана или все варианты интерфейса.
Как собрать снимки через fastlane, если у меня нет локального Mac?
Вам понадобится удалённая среда Mac, в которой доступны Xcode, нужный симулятор и проектная схема с UI-тестами. До настройки полной автоматизации сначала проверьте запуск теста и сохранение файла в этой среде. Убедитесь, что ваша сессия позволяет получить результат и перенести его на проверку.
Читайте также
Запускайте проверку скриншотов iOS на выделенном Mac
Арендуйте у MacUDP физический Mac mini с Apple M4 для работы с macOS, симуляторами и UI-тестами.
