Screengrab (Fastlane) — какво е, възможности и автоматизация на екранни снимки

Автор: IT Sectr Публикувано: 2026-04-15 Време за четене: 8 мин

Screengrab е помощна програма от екосистемата Fastlane за автоматизиране на създаването на екранни снимки на мобилни приложения за Android и iOS. Вместо ръчно прелистване на екрани на десетки устройства, разработчикът стартира една команда и Screengrab самостоятелно прави снимки на всички необходими екрани. Според Fastlane Docs, 2026, инструментът поддържа едновременно до 30 езика и всякакви разделителни способности на екрана, зададени в конфигурацията.

Основни точки

  • Screengrab — инструмент на Fastlane за автоматично създаване на екранни снимки на мобилни приложения за Android и iOS.
  • Автоматизация заменя ръчното създаване на стотици екранни снимки с една команда в терминала.
  • Локализация — едновременно генериране на екранни снимки на десетки езици без допълнителни настройки.
  • CI/CD — интеграция с всякакви пайплайни: Jenkins, GitHub Actions, GitLab CI.
  • Гъвкавост — поддръжка на множество устройства, ориентации и езици в едно стартиране.

Какво е Screengrab и защо е необходим

Screengrab — компонент на екосистемата Fastlane, предназначен за автоматизирано създаване на екранни снимки на мобилни приложения. Инструментът се появи през 2015 г. като отговор на проблема: за публикуване в Google Play и App Store са необходими от 4 до 10 екранни снимки за всеки език. При поддръжка на 30 езика това означава 120–300 ръчно направени снимки.

Проблемът с ръчното създаване на екранни снимки

Разработчикът ръчно стартира приложението на симулатор или устройство, прелиства до нужния екран, прави екранна снимка, прехвърля я на компютъра, изрязва я и я запазва в правилната папка. Процедурата се повтаря за всеки език и всяка ориентация. Според Google Play Console, средното приложение се актуализира веднъж на две седмици, което превръща екранните снимки в редовна рутина.

Предимства на автоматизацията

Screengrab решава проблема радикално: разработчикът описва сценарии за тестове в UI рамката (Espresso за Android, XCTest за iOS), а Screengrab ги стартира на всички необходими устройства и езици автоматично. Fastlane координира процеса: компилира билда, стартира тестовете, събира екранните снимки и ги пакетира в правилната структура от папки.

Резултат — сто екранни снимки за 10–15 минути вместо няколко часа ръчна работа. Google препоръчва актуализиране на екранните снимки при всяка значителна промяна на интерфейса и без автоматизация този съвет често се игнорира.

Как работи Screengrab: архитектура и принцип на действие

Архитектурата на Screengrab е изградена около два ключови компонента: клиент на устройството (screengrab-lib) и runner, който управлява стартирането на тестове и събирането на резултати. На Android се използва инструментална тестова рамка, на iOS — XCTest.

Жизнен цикъл на едно стартиране

Fastlane извиква действието screengrab, което чете конфигурационния файл Screengrabfile. Runner-ът компилира тестов APK със свързаната библиотека screengrab-lib, инсталира го на свързаните устройства или емулатори и стартира UI тестове, маркирани с анотации за екранни снимки.

ruby
# Fastfile — описание на lane за екранни снимки
lane :screenshots do
  capture_android_screenshots(
    output_directory: "fastlane/metadata/android/screenshots",
    locales: ["ru-RU", "en-US", "de-DE"],
    devices: ["pixel_6", "pixel_tablet"],
    use_tests_external_storage: true
  )
end

Структура на изходните файлове

Screengrab създава йерархия от папки: език → устройство → екранни снимки. Структурата напълно отговаря на изискванията на Google Play Console и App Store Connect. App Store изисква строго определени размери за всеки тип устройство и Screengrab генерира изображения точно според спецификациите.

Поддръжка на множество устройства

Инструментът може да стартира тестове паралелно на всички свързани устройства и емулатори. Android емулаторите се стартират автоматично, ако не са активни. За iOS Screengrab използва симулатори на Xcode.

Инсталиране и настройка на Screengrab за Android

Инсталирането на Screengrab се състои от две части: добавяне на библиотеката към проекта и настройка на конфигурационния файл. На Android са необходими UI рамката Espresso и библиотеката screengrab-lib от хранилището на Fastlane.

Добавяне на зависимости

В build.gradle на модула на приложението се добавя зависимостта screengrab-lib. Библиотеката предоставя класа ScreenCapturer, който прави екранна снимка в момента на извикване.

groovy
// build.gradle (модул: app)
androidTestImplementation(
  'tools.fastlane:screengrab-lib:2.1.0'
)

Писане на тест с екранни снимки

UI тестът се маркира с анотация Screengrab.screenshot() в необходимите точки. Всяко извикване прави екранна снимка на текущия екран и я запазва с указаното име.

kotlin
import tools.fastlane.screengrab.Screengrab
import tools.fastlane.screengrab.locale.LocaleTestRule

class ScreenshotTest {

    @get:Rule
    val localeTestRule = LocaleTestRule()

    @Test
    fun testTakeScreenshots() {
        Screengrab.screenshot("main_screen")
        // Действия: щракнете върху бутона за вход
        Screengrab.screenshot("login_screen")
    }
}

Screengrabfile конфигурация

Файлът Screengrabfile съхранява параметрите за стартиране: списък с устройства, езици, таймаути и път за запазване. Файлът обикновено се намира в папката fastlane до Fastfile.

Локализация на екранни снимки и множество езици

Локализацията — ключовата възможност на Screengrab, поради която най-често се избира. Инструментът автоматично превключва езика на приложението преди всяко стартиране на тестове и прави снимки на всички указани езици.

Настройка на езици

Езиците се задават в Screengrabfile с параметър locales. За всеки език Screengrab преинсталира приложението със съответните ресурси и стартира пълен цикъл от тестове. LocaleTestRule на Android автоматично превключва локала на устройството.

ruby
# Screengrabfile
locales [
  "ru-RU",
  "en-US",
  "de-DE",
  "fr-FR",
  "es-ES",
  "ja-JP",
  "ko-KR"
]

Структура на папките за локализирани екранни снимки

Screengrab създава директории по схемата: screenshots/{locale}/{device_name}/{screenshot_name}.png. Тази структура пряко отговаря на изискванията на Google Play, което позволява качване на екранни снимки чрез Fastlane deliver с една команда.

За iOS App Store Connect очаква екранни снимки в плоска структура по езици. Fastlane автоматично конвертира йерархията на Screengrab в необходимия формат при публикуване.

Интеграция на Screengrab в CI/CD пайплайн

CI/CD интеграцията е едно от основните предимства на Screengrab. Инструментът се стартира от командния ред и не изисква графичен интерфейс, което го прави идеален за сървърни компилации.

GitHub Actions

В CI среда е необходимо да се стартира Android емулатор или iOS симулатор, след което да се извика lane с екранни снимки. GitHub Actions поддържа кеширане на AVD, което ускорява повторните стартирания.

Параметри за CI

В CI конфигурацията е важно да се вземат предвид ограниченията на паметта и времето. Android емулаторите изискват най-малко 2 GB RAM на устройство, а пълното стартиране на 7 езика и 2 устройства отнема 20–40 минути.

ruby
# Fastfile — lane за CI с таймаути
lane :ci_screenshots do
  capture_android_screenshots(
    locales: ["en-US", "ru-RU"],
    devices: ["pixel_6"],
    clear_previous_screenshots: true,
    tests_timeout: "600",
    output_directory: "screenshots/ci"
  )
end

Jenkins Pipeline

За Jenkins се използва стъпка sh с извикване на bundle exec fastlane. Препоръчва се стартиране на екранните снимки през нощта или след тригер след сливане в основния клон, за да не се забавя цикълът на разработка.

Screengrab срещу алтернативи: сравнение на инструменти

Screengrab — не е единственият инструмент за автоматизация на екранни снимки. Съществуват алтернативи с различни подходи: вградени инструменти на ОС, комерсиални платформи и библиотеки за екранни снимки в код.

ИнструментПлатформаЛокализацияCI/CD
ScreengrabAndroid, iOSАвтоматичнаВградена
ADB ShellAndroidРъчнаЧрез скриптове
XCTestiOSРъчнаЧрез xcodebuild
Firebase Test LabAndroidИзисква настройкаДа
AppiumКрос-платформенРъчнаЧрез WebDriver

ADB Shell дава пълен контрол, но изисква писане на скриптове за всеки сценарий. XCTest е вграден в Xcode, но не управлява локализацията автоматично. Firebase Test Lab стартира тестове на реални устройства в облака, което дава максимално покритие, но изисква плащане за всяка минута.

Screengrab печели благодарение на комбинацията: Fastlane управлява целия жизнен цикъл на компилацията — от компилиране до публикуване. Google Play директно приема структурата на папките на Screengrab чрез Fastlane deliver.

Типични проблеми и техните решения

При работа с Screengrab разработчиците най-често се сблъскват с няколко повтарящи се проблема. Познаването на типичните грешки съкращава времето за отстраняване на грешки при първото стартиране.

Екранните снимки са празни или черни

Проблемът възниква, когато Screengrab прави снимка преди завършване на рендирането на екрана. Решение — добавете забавяне Thread.sleep() преди извикване на screenshot() или използвайте IdlingResource от Espresso за изчакване на асинхронни операции.

Грешка за несъвместимост на версиите

Библиотеката screengrab-lib трябва да съответства на версията на Fastlane. Fastlane се актуализира ежемесечно и старата библиотека може да не поддържа нови конфигурационни параметри. Решение — синхронизирайте версиите чрез Gemfile и gradle.properties.

Продължително стартиране в CI

Стартирането на 30 езика на 5 устройства може да отнеме повече от час. Решение — разделете стартиранията: едно за магазина на всички езици, друго за вътрешни нужди на два езика. GitHub Actions позволява използване на матрица от стратегии за паралелни стартирания.

Проблеми с емулатор в CI

Android емулаторът изисква хардуерна виртуализация, която не винаги е налична на CI сървъри. KVM трябва да бъде активиран, в противен случай емулаторът не стартира. Решение — използвайте x86 изображения без GPU ускорение или Firebase Test Lab.

Често задавани въпроси

По какво Screengrab се различава от обикновената екранна снимка чрез ADB?

ADB прави снимка на това, което се показва на екрана в текущия момент. Screengrab се интегрира с UI тестове, автоматично превключва езици и устройства и прави серия от снимки по сценарий без човешка намеса.

Може ли Screengrab да се използва без Fastlane?

Не, Screengrab е компонент на екосистемата Fastlane и използва нейната инфраструктура за компилиране, инсталиране и координиране. Библиотеката screengrab-lib не работи самостоятелно — необходим е Fastlane като оркестратор.

Колко време отнема генерирането на екранни снимки на 10 езика?

На едно устройство стартирането на 10 езика отнема 15–25 минути. Всеки език изисква преинсталиране на приложението и пълен цикъл от UI тестове. Паралелното стартиране на множество устройства съкращава времето пропорционално.

Поддържа ли Screengrab iOS приложения?

Да, Screengrab поддържа iOS чрез XCTest и Xcode симулатори. Конфигурацията е подобна на Android: добавят се езици и устройства, а UI тестовете на Swift се пишат с XCTest и снимки чрез XCUIScreenshot.

Как да актуализирам екранни снимки само за нови езици?

Screengrab не поддържа инкрементален режим — всяко стартиране генерира пълен набор от екранни снимки. Препоръчва се да се настрои отделен lane за CI с ограничен списък от езици, за да не се презаписват съществуващите снимки от основното стартиране.

Заключение

  • Screengrab — компонент на Fastlane за автоматизация на екранни снимки на мобилни приложения за Android и iOS.
  • Автоматизация заменя ръчното създаване на стотици екранни снимки с една команда в терминала.
  • Локализация — инструментът автоматично превключва езика на приложението преди всяко стартиране на тестове.
  • CI/CD — интеграция с Jenkins, GitHub Actions, GitLab CI и други пайплайни без графичен интерфейс.
  • Структура на изходните файлове отговаря на изискванията на Google Play и App Store за директно качване.
  • Гъвкавост — поддръжка на множество устройства, ориентации на екрана и персонализирани сценарии за тестване.
  • Икономия — сто екранни снимки за 15 минути вместо няколко часа ръчна работа при всяка актуализация.

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също