Snapshot (Fastlane) — суть, генерація скріншотів та налаштування в мобільних додатках

Автор: IT Sectr Опубліковано: 2026-04-15 Час читання: 10 хв

Snapshot (Fastlane) — це інструмент для автоматичної генерації скріншотів iOS-додатків на всіх підтримуваних пристроях і мовах. На відміну від ручного створення знімків екрана через симулятор, Snapshot запускає UI-тести та робить скріншоти в заданих точках додатка. Згідно з офіційною документацією Fastlane (2026), Snapshot скорочує час підготовки скріншотів для релізу з 4 годин до 15 хвилин.

Головне

  • Snapshot — утиліта Fastlane для автоматичного створення скріншотів iOS-додатків через UI-тести на всіх пристроях і мовах.
  • Інструмент інтегрується з XCTest UI-тестами: розробник додає команди snapshot() у тестовий код для захоплення знімків у ключових екранах додатка.
  • Snapshot підтримує всі розміри пристроїв iPhone та iPad, необхідні App Store: 6.5, 5.5, 6.7, 12.9 дюймів та інші формати екрану.
  • Налаштування виконується через файл Snapfile, де вказуються пристрої, мови, локалізація та параметри запуску симулятора для генерації.
  • Результати зберігаються в директорії screenshots/, сумісній з Deliver — скріншоти готові до завантаження в App Store без додаткової обробки.

Що таке Snapshot (Fastlane)?

Snapshot (Fastlane) — це компонент екосистеми Fastlane, який автоматизує створення скріншотів додатка для App Store. Він запускає UI-тести на симуляторах iOS, робить знімки екрана в заданих станах додатка та зберігає їх у структурованій директорії з правильними іменами для кожної мови та пристрою.

Без Snapshot розробники вручну запускають симулятор, відкривають кожен екран, роблять скріншот через Cmd+S, перемикають мову та повторюють процес для всіх комбінацій. Автоматизація скріншотів — це ключовий елемент ASO-оптимізації, оскільки App Store вимагає актуальні знімки для кожного нового релізу, а ручне оновлення 60+ скріншотів займає години роботи.

За даними App Store Connect Documentation (2025), додатки з локалізованими скріншотами отримують на 25% більше конверсій у цільових країнах. Snapshot дозволяє командам оновлювати візуальний контент для 32 мов за один запуск, що особливо важливо для маркетингових кампаній, прив'язаних до нових функцій додатка.

Використовуйте Snapshot у будь-якому проекті, який публікується в App Store — це стандартний інструмент для команд, які прагнуть автоматизації релізного процесу та покращення ASO.

Як Snapshot генерує скріншоти

Процес генерації скріншотів у Snapshot складається з кількох етапів: підготовка UI-тестів, налаштування Snapfile, запуск симуляторів та збір результатів. Snapshot послідовно запускає кожен симулятор для вказаних пристроїв і мов, виконує UI-тести та робить знімки в точках виклику функції snapshot().

Після завершення всіх тестів Snapshot збирає скріншоти в директорію screenshots/[Language]/ з іменами, що відповідають вимогам App Store. Кожен скріншот зберігається у форматі PNG з роздільною здатністю, що відповідає цільовому пристрою. Snapshot також генерує HTML-звіт для візуальної перевірки всіх створених знімків.

Налаштування UI-тестів для Snapshot

Для роботи Snapshot необхідно додати виклики snapshot() у XCTest-код UI-тестів додатка. Функція робить скріншот поточного стану екрана в момент виклику. Розробник розміщує snapshot() після кожної ключової дії: відкриття екрана, введення даних, навігації по вкладках або відображення результатів.

Приклад структури UI-тесту: тест авторизується в додатку, викликає snapshot("01-LoginScreen") для знімка екрана логіна, потім переходить на головний екран і викликає snapshot("02-HomeScreen") для знімка головного екрана. XCTest — це фреймворк Apple для модульного та UI-тестування iOS-додатків, інтегрований безпосередньо в Xcode.

objective-c
// UI-тест для Snapshot
- (void)testScreenshots {
    XCUIApplication *app = [[XCUIApplication alloc] init];
    [app launch];
    
    snapshot(@"01-LoginScreen");
    
    [app.textFields[@"email"] tap];
    [app.textFields[@"email"] typeText:@"user@company.com"];
    [app.buttons[@"Login"] tap];
    
    snapshot(@"02-HomeScreen");
}

Робота з мовами та пристроями

Snapshot автоматично перемикає мову симулятора для кожної мови, вказаної в Snapfile. Додаток запускається з відповідною локалізацією, і UI-тести виконуються цією мовою. Локалізація скріншотів — критичний фактор ASO: користувачі в 75% випадків надають перевагу додаткам з контентом рідною мовою, включаючи скріншоти в App Store.

Для кожного пристрою Snapshot запускає окремий симулятор з відповідною діагоналлю екрана. Підтримуються всі розміри, необхідні App Store: iPhone 6.5 дюйма (iPhone 15 Pro Max), 5.5 дюйма (iPhone 8 Plus), 6.7 дюйма (iPhone 15 Plus) та iPad 12.9 дюйма. Симулятор iOS — це програмна емуляція пристрою iOS, вбудована в Xcode для тестування додатків без фізичного пристрою.

bash
# Генерація скріншотів для всіх пристроїв і мов
fastlane snapshot

# Генерація тільки для вказаних пристроїв
fastlane snapshot --devices "iPhone 15 Pro Max,iPhone 15"

# Очищення перед генерацією скріншотів
fastlane snapshot --reinstall_app --erase_simulator

Конфігурація Snapshot через Snapfile

Snapfile — це конфігураційний файл Fastlane, який визначає параметри генерації скріншотів: список пристроїв, мови, час очікування та опції запуску. Snapfile зберігається в директорії fastlane та версіонується разом із проектом, що гарантує єдину конфігурацію для всіх учасників команди.

ruby
# Snapfile — конфігурація скріншотів
devices([
    "iPhone 15 Pro Max",
    "iPhone 15",
    "iPad Pro (12.9-inch)"
])

languages([
    "en-US",
    "ru",
    "de-DE"
])

scheme("MyAppUITests")
output_directory("./screenshots")
clear_previous_screenshots(true)
reinstall_app(true)
erase_simulator(true)

Параметр clear_previous_screenshots видаляє старі скріншоти перед початком генерації — це запобігає накопиченню застарілих знімків у вихідній директорії. reinstall_app перевстановлює додаток на симулятор перед кожним запуском, що гарантує чисту сесію без впливу попередніх тестів на нову генерацію.

Параметр erase_simulator очищає вміст симулятора перед початком тестів — включаючи кеш, налаштування та дані попередніх сесій. Це особливо важливо для тестів, які перевіряють онбординг або перший запуск додатка. Snapshot також підтримує параметри ios_version для вказання версії iOS на симуляторі та stop_after_first_error для зупинки генерації при першій помилці UI-тесту.

Для проектів з SwiftUI доступний параметр use_simulator_for_language, який керує перемиканням мови через налаштування симулятора замість зміни регіону системи. Snapshot також підтримує launch_arguments для передачі додаткових аргументів при запуску додатка — корисно для тестів з різними конфігураціями бекенда або A/B тестами.

Команди Snapshot для генерації знімків

Інтерфейс Snapshot включає базові команди для запуску генерації та розширені прапорці для точного контролю над процесом. Основна команда fastlane snapshot запускає повний цикл генерації скріншотів на основі конфігурації з Snapfile.

Швидка генерація та фільтрація

Команда fastlane snapshot --devices "iPhone 15" генерує скріншоти лише для вказаних пристроїв, ігноруючи решту з Snapfile. --languages "en-US,ru" фільтрує мови для генерації. Комбінація цих прапорців корисна для швидкої перевірки скріншотів на одному пристрої та мові без повного циклу генерації, який може займати до 30 хвилин при 5 пристроях і 10 мовах.

bash
# Швидка генерація для одного пристрою
fastlane snapshot --devices "iPhone 15" --languages "en-US"

# Генерація з перевстановленням додатка
fastlane snapshot --reinstall_app --erase_simulator

# Генерація з HTML-звітом
fastlane snapshot --output_directory "./build/screenshots"

Прапорець --output_directory змінює директорію збереження результатів. За замовчуванням Snapshot зберігає скріншоти в fastlane/screenshots. Для інтеграції з Deliver вказуйте директорію, яка збігається з очікуваною структурою Deliverfile — це дозволяє передавати скріншоти безпосередньо в процес публікації без ручного копіювання файлів між папками.

Параметр SnapshotПризначенняПриклад
devicesСписок пристроїв для генераціїiPhone 15, iPad Pro
languagesСписок мов локалізаціїen-US, ru, de-DE
reinstall_appПеревстановлення додатка перед тестамиtrue / false
erase_simulatorОчищення симулятора перед запускомtrue / false
clear_previousВидалення старих скріншотівtrue / false

Інтеграція Snapshot в CI/CD пайплайн

Snapshot в CI/CD — це автоматична генерація скріншотів при кожному релізному коміті. Snapshot запускається перед етапом Deliver, щоб гарантувати, що скріншоти в App Store відповідають поточній версії додатка та не містять застарілих елементів інтерфейсу від попередніх версій.

Для роботи Snapshot в CI потрібен Xcode з встановленими симуляторами iOS. У CI-середовищі Snapshot використовує симулятори зі складу Xcode, які попередньо завантажуються на ранер. GitHub Actions надає образи з попередньо встановленим Xcode та iOS-симуляторами для запуску UI-тестів без додаткового налаштування.

bash
# Запуск Snapshot в CI середовищі
fastlane snapshot --skip_open_summary \

      --output_directory "$CI_PROJECT_DIR/screenshots"

# Збереження скріншотів як артефактів CI
cp -R "screenshots/" "$CI_PROJECT_DIR/artifacts/"

Параметр --skip_open_summary вимикає відкриття HTML-звіту після генерації — у CI-середовищі графічний інтерфейс недоступний. Результати генерації зберігаються в директорії, яка передається як артефакт CI-задачі, а потім використовується Deliver для завантаження в App Store разом із релізом.

Для прискорення CI-пайплайну використовуйте паралельну генерацію скріншотів через concurrent_simulators — параметр Snapfile, який запускає кілька симуляторів одночасно. Це скорочує час генерації скріншотів на 5 пристроїв і 10 мов з 40 хвилин до 15 хвилин при використанні 4 паралельних потоків.

Типові помилки при роботі з Snapshot

При використанні Snapshot розробники найчастіше стикаються з помилками, пов'язаними з нестабільністю UI-тестів, проблемами симуляторів та невірною конфігурацією пристроїв. Діагностика помилок Snapshot починається з аналізу HTML-звіту, який містить скріншоти кожного кроку та інформацію про провалені тести.

Помилка «Failed to build scheme MyAppUITests» виникає, коли схема UI-тестів не налаштована для збірки. Рішення: переконайтеся, що в Xcode створено окремий Scheme для UI-тестів і Shared опцію включено для доступу з командного рядка. Xcode Scheme — це конфігурація збірки, тестування та запуску додатка, яка визначає набір цілей і параметрів для кожної дії.

Помилка «No simulators found matching...» вказує на відсутність симулятора з вказаним типом пристрою або версією iOS. Рішення: виконайте xcrun simctl create для створення симулятора або вкажіть існуючий пристрій зі списку xcrun simctl list. xcrun simctl — це командна утиліта Xcode для керування симуляторами iOS: створення, видалення, запуску та діагностики.

При помилці «UI test failure» UI-тест не проходить на одній з мов або пристроїв. Рішення: запустіть Snapshot з прапорцем --stop_after_first_error для зупинки при першій помилці, проаналізуйте скріншот у HTML-звіті та виправте тест. Часта причина — різна довжина тексту на різних мовах, через яку елементи інтерфейсу перекриваються або виходять за межі екрана.

Часті запитання

Які пристрої iOS підтримує Snapshot?

Snapshot підтримує всі пристрої з сімейства iPhone та iPad, включаючи iPhone 15 Pro Max (6.7 дюйма), iPhone 15 (6.1 дюйма), iPad Pro 12.9 дюйма та iPad mini. Для кожного пристрою Snapshot завантажує відповідні скіни симуляторів з Xcode, що гарантує точну роздільну здатність екрана.

Чи потрібні реальні пристрої для роботи Snapshot?

Ні, Snapshot працює виключно з симуляторами iOS зі складу Xcode. Реальні пристрої не потрібні та не підтримуються — всі скріншоти генеруються в середовищі симулятора, який забезпечує ідентичну роздільну здатність і кольоропередачу для вимог App Store.

Як Snapshot обробляє локалізацію тексту в скріншотах?

Snapshot перемикає мову симулятора перед запуском UI-тестів для кожної мови з Snapfile. Додаток відображається відповідною мовою через системні налаштування локалізації. UI-тести використовують локалізовані рядки через NSLocalizedString, що гарантує коректний текст на всіх скріншотах.

Чи можна генерувати скріншоти для macOS додатків?

Так, Snapshot підтримує macOS додатки починаючи з версії Fastlane 2.200. Для macOS вкажіть платформу в Snapfile через параметр app_platform("macOS"). Snapshot запускає UI-тести на macOS і створює скріншоти відповідно до вимог Mac App Store.

Чим Snapshot відрізняється від звичайного скріншота через Cmd+S?

Ручний скріншот вимагає відкрити кожен екран вручну, перемкнути мову, змінити пристрій — близько 60 дій для повного набору. Snapshot автоматизує весь процес: перемикає мови, пристрої, запускає UI-тести та зберігає скріншоти з правильними іменами для App Store за 15 хвилин.

Підсумки

  • Snapshot — утиліта Fastlane для автоматичної генерації скріншотів iOS-додатків через XCTest UI-тести на всіх пристроях і мовах.
  • Розробник додає виклики snapshot() у код UI-тестів у ключових точках додатка — Snapshot робить знімки в цих місцях.
  • Налаштування через Snapfile визначає список пристроїв, мов та параметрів симулятора: devices, languages, reinstall_app та erase_simulator.
  • Результати зберігаються в директорії screenshots/[Language]/ у форматі, сумісному з Deliver для прямого завантаження в App Store.
  • Інтеграція в CI/CD дозволяє автоматично генерувати свіжі скріншоти перед кожним релізом з паралельними симуляторами для прискорення процесу.
  • Типові помилки Snapshot пов'язані з нестабільними UI-тестами на різних мовах, відсутністю симуляторів у Xcode або невірною конфігурацією Scheme.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також