Генерация скриншотов для AppStore при помощи Fastlane


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

Установка и настройка

Установим Fastlane:

sudo gem install fastlane -NV

Добавим новый таргет для UI тестов: File > New > Target > iOS UI Testing Bundle. Добавим новую схему для созданного таргета.

Откроем её на редактирование. Перейдем на вкладку Build и отметим чекбокс в колонке Run, а также поставим чекбокс Shared.

Находясь в корне проекта, выполним команду:

fastlane snapshot init

Если в результате выполнения выдаётся следующая ошибка:

Could not determine installed iOS SDK version. Try running the xcodebuild command manually to ensure it works.

Нужно выполнить следующую команду и повторить инициализацию:

sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

В корне проекта сгенерируется файл SnapshotHelper.swift, его необходимо добавить в любое место в таргет с UI тестами и с основным.

Создание тестов для скриншотов

В cгенерированный класс с UI тестами, в метод setUp() добавляем следующий код:

let app = XCUIApplication()
setupSnapshot(app)
app.launch()

Создадим скриншот, для первого экрана это может выглядеть так:

func testCurrenciesScreen() {
    snapshot("01CurrenciesScreen")
}

Чтобы сделать скриншот для более сложного сценария, необходимо воспользоваться записью сценариев. Для этого надо поставить курсор на методе, в классе с тестами, который будет соответствовать тест-кейсу, и нажать кнопку Record.

Для того чтобы сгенерировать скриншоты, необходимо запустить команду (простой запуск тестов не запустит генерацию скриншотов):

fastlane snapshot

После этого пойдет довольно длительный процесс последовательного запуска симуляторов и создания скриншотов. Все скриншоты будут складываться в директорию screenshots в корне вашего проекта.

Добавляем к скриншотам рамки устройств

В Fastlane также существует возможность добавлять скриншотам рамки устройств, для этого необходимо выполнить команду:

fastlane frameit

Эта возможность реализована при помощи ImageMagic, поэтому предварительно необходимо установить зависимости через brew.

brew install libpng jpeg imagemagick

Ссылки

Рекомендую почитать