Создавать руками скриншоты для 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