Главная / Блог / Как автоматически создавать многоязычные скриншоты с fastlane snapshot? Руководство 2026
ENGINEERING_BLOG · 2026.10.02

Как автоматически создавать многоязычные скриншоты с fastlane snapshot? Руководство 2026

Симптом: снимки локализованного приложения приходится собирать вручную, а результат после тестового запуска трудно проверить.
Быстрое решение: настройте fastlane snapshot вместе с Xcode UI-тестом, зафиксируйте языки, цели симулятора и тестовые данные, затем проверяйте изображения по содержимому; генерацию не считайте подтверждением приёмки или загрузки в App Store Connect.

Это руководство для вас, если вы самостоятельно поддерживаете приложение и хотите перестать повторять одну и ту же съёмку после каждого обновления.
Оно также подойдёт команде локализации, которой нужны проверяемые снимки для разных языков, и небольшой команде, запускающей UI-тесты на удалённом Mac.

SECTION 01Как разделить генерацию, проверку и публикацию

fastlane snapshot автоматизирует получение снимков во время UI-тестирования приложения на симуляторах. Начинайте не с расширения списка устройств, а с работающего сценария: тест должен стабильно открыть нужный экран, привести приложение в ожидаемое состояние и только после этого сохранить изображение. Именно такой порядок позволяет отличить неисправность теста от ошибки локализации или неудачной подготовки материала.

Не смешивайте четыре разных результата:

  • UI-тест прошёл — сценарий выполнился согласно проверкам, которые вы в него заложили.
  • Снимок создан — файл появился в назначенном каталоге.
  • Снимок принят командой — вы проверили текст, состояние экрана, кадрирование и пригодность изображения.
  • Материал загружен — файл добавлен в App Store Connect и проверен непосредственно в интерфейсе отправки.

Официальная документация fastlane описывает процесс получения снимков через UI-тесты и настройки snapshot, но сама по себе она не подтверждает, что каждый снимок подходит вашему интерфейсу, требованиям магазина или конкретному сценарию загрузки. Поэтому результат тестовой команды — только один этап приёмки, а не финальный статус выпуска. Описание рабочего процесса снимков в fastlane помогает сверить общую схему, а параметры действия snapshot — проверить доступные настройки для вашего проекта.

Типичная ситуация: разработчик добавил перевод, запустил автоматическую съёмку и получил аккуратный каталог изображений. Однако тест во время перехода не дождался загрузки данных, и часть кадров показывает экран ожидания. Файлы существуют, тест мог завершиться, но набор не готов для публикации. Такой дефект обнаруживается визуальным осмотром и проверкой состояния экрана, а не одним лишь подсчётом файлов.

Сопоставьте объём задачи с нужной автоматизацией

Задача и вариант Что зафиксировать Что вы проверяете вручную Когда подходит
Одно приложение и ограниченный набор локализаций Языки, схема тестирования, стабильный маршрут до экрана Перевод, данные и итоговый вид каждого кадра Вы сначала проверяете, что базовый сценарий воспроизводим
Приложение для разных рынков Локали, значения даты и чисел, тестовые состояния Корректность текста и отсутствие смешения языков Интерфейс заметно меняется в зависимости от региона
Набор устройств для разных компоновок Цели симуляторов и выходные каталоги Переносы, обрезание элементов и соответствие требованиям магазина Вы можете обосновать каждую цель различием интерфейса или требований к материалам
Запуск на удалённом Mac Версию проекта, Xcode, доступность симуляторов и место для результатов Полноту журналов и фактическое открытие изображений Скриншоты нужно регулярно получать вне локальной рабочей станции

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

SECTION 02Подготовьте локали и проверяемый экран

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

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

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

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

Важная проверка: название языка в конфигурации, имя файла и реальный язык интерфейса — три разные вещи. Откройте изображение и проверьте текст на самом экране; неверно настроенный запуск может создать правильно названный файл с неподходящим содержимым.

SECTION 03Настройте запуск так, чтобы его можно было повторить

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

Практический порядок настройки:

  • Проверьте, что проект собирается и UI-тест запускается в выбранной схеме без участия ручных действий.
  • Убедитесь, что приложение при тестовом запуске попадает в нужную локализацию. Если язык выставляется настройкой запуска или тестовой конфигурацией, проверьте фактический интерфейс, а не только значение параметра.
  • Подготовьте сценарий: очистите или задайте тестовые данные, откройте нужный экран и дождитесь готовности контента.
  • Добавьте точки съёмки и понятные имена, отражающие назначение кадра. Имя должно помогать ревьюеру найти сценарий, но не заменять проверку содержимого.
  • Настройте каталог вывода и убедитесь, что артефакты остаются доступными после окончания запуска.
  • Выполните тест и сохраните журнал, отчёт о выполнении и созданные изображения.
  • После успешного базового прогона расширяйте конфигурацию: добавляйте локали или симуляторы и повторяйте проверку для каждой новой ветви.

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

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

Для группировки тестов и управления их запуском изучите документацию Apple по организации тестов и test plan. Используйте такую структуру, которая ясно отделяет локализации и сценарии, но не усложняет базовый путь до снимка. Если после разделения тестовых планов никто не понимает, какой именно набор создаёт нужные материалы, конфигурацию следует упростить.

SECTION 04Зафиксируйте причины нестабильных снимков

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

Перед съёмкой уменьшите изменчивость там, где это контролирует тест:

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

Когда запуск падает, не исправляйте всё сразу. Сначала определите, что именно отсутствует: тест не дошёл до нужного экрана, файл не создан, путь вывода неверен или изображение есть, но его содержимое непригодно. В журнале отметьте этап сбоя и сопоставьте его с отчётом тестирования. Так вы не будете тратить время на изменение настроек fastlane, если проблема в ожидании данных или подготовке тестового состояния.

SECTION 05Проверьте выходные файлы и принимайте их по содержимому

Каталог и расположение файлов зависят от конфигурации проекта. Задайте выходной путь явно и после выполнения проверьте его фактическое значение в настройках и логе. Не рассчитывайте на одинаковую структуру каталогов между разными проектами: если результат должен использоваться в дальнейшем процессе, передавайте путь как часть конфигурации, а не угадывайте его по привычке.

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

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

Это проверка качества, а не подсчёт количества изображений. Полный каталог может содержать дубликаты, неверные кадры или результат не той локали. И наоборот, отсутствие части файлов — не обязательно проблема именования: возможно, UI-тест завершился до соответствующей точки съёмки. Сопоставляйте изображения с журналом тестирования и конфигурацией запуска.

Частые вопросы о fastlane snapshot

Как задать несколько языков

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

Где искать результаты запуска

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

Как выбрать несколько размеров симулятора

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

Что требуется для запуска на удалённом Mac

Подготовьте воспроизводимый проект, его зависимости, выбранный Xcode, тестовую схему, нужные симуляторы и предсказуемые данные. Настройте каталог результатов и сохранение журналов вне временной сессии. Успешная установка fastlane не доказывает готовность окружения: тест может не стартовать из-за отсутствующего симулятора или нестабильного состояния приложения. Сначала выполните короткий пробный прогон, затем расширяйте матрицу.

SECTION 06Отдельно примите требования магазина и загрузку

Перед отправкой проверьте актуальные требования к изображениям для соответствующих устройств и разделов приложения. Они могут изменяться, поэтому используйте текущую справку App Store Connect по спецификациям снимков экрана и сверяйте требования непосредственно перед подготовкой комплекта. Не переносите спецификацию из старого релиза и не делайте вывод о пригодности материала только по тому, что fastlane сохранил файл.

Затем разделите проверку и загрузку на самостоятельные действия. Сначала утвердите изображения внутри команды, потом подготовьте их к передаче и загрузите выбранным способом. Описание Apple о загрузке предварительных материалов и снимков в App Store Connect объясняет отдельный этап размещения материалов. Если вы автоматизируете обмен через API, сверяйте структуру с описанием ресурса снимков приложения в App Store Connect API, не предполагая, что создание локального файла автоматически создало или отправило соответствующий ресурс.

Сохраняйте отдельный статус для каждого перехода: «тест выполнен», «изображения проверены», «спецификации сверены», «материалы загружены». Такой учёт особенно полезен, если тесты запускаются автоматически, а решение о пригодности кадров принимает человек. Успешный сценарий и корректный файл не равны подтверждённой загрузке или одобрению приложения.

Если вы включаете снимки в регулярный процесс разработки, заранее решите, где будут храниться код, журналы и результаты, кто проверяет локализации и кто отвечает за передачу в App Store Connect. Для команды, которая оценивает постоянную или временную среду, условия можно сопоставить с вариантами аренды Mac и их стоимостью, не подменяя этим выбор подходящего тестового окружения.

SECTION 07Когда удалённый Mac оправдан для снимков

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

Перед переносом закрепите версию проекта и зависимости, зафиксируйте выбранный Xcode и симуляторы, проверьте доступ к тестовым данным и определите постоянное место хранения результатов. Тестовый прогон должен подтвердить, что выбранные цели действительно доступны, приложение проходит UI-сценарий, а журналы и снимки можно получить после окончания задания. Наличие удалённого доступа само по себе не означает, что все нужные симуляторы установлены или что тест готов к запуску без настройки.

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

Надёжный результат начинается с устойчивого UI-теста и проверяемого состояния приложения. Настройте fastlane snapshot для выбранных языков и симуляторов, сохраняйте артефакты, проверяйте каждый кадр и только затем сверяйте спецификации и выполняйте загрузку в App Store Connect.

SECTION 08Часто задаваемые вопросы

Как задать разные языки для снимков экрана в fastlane snapshot?

Определите локали, которые действительно поддерживает приложение, и укажите их в конфигурации snapshot по официальной документации fastlane. Затем проверьте, что тест при запуске каждой локали открывает нужную версию интерфейса. Имя папки или файла подтверждает организацию результата, но не доказывает правильность перевода: это проверяют по самому изображению, датам, числам и состоянию экрана.

Где искать созданные fastlane snapshot изображения и как проверить комплектность?

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

Можно ли получать изображения для разных размеров устройств через iOS Simulator?

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

Что подготовить на удалённом Mac для запуска fastlane snapshot?

Закрепите версию проекта и зависимости, проверьте выбранный Xcode, доступность нужных симуляторов, схему тестирования и тестовые данные. Задайте постоянный каталог результатов и сохраняйте журналы вместе с отчётом UI-теста. Удалённый Mac может выполнять тесты, но доступность конкретного runtime и успешное прохождение сценария нужно проверять в самой среде; окончательную загрузку материалов принимайте отдельно.

SECTION 09Дополнительные материалы