Screengrab (Fastlane) — co to je, možnosti a automatizace snímků obrazovky

Autor: IT Sectr Publikováno: 2026-04-15 Doba čtení: 8 min

Screengrab je nástroj z ekosystému Fastlane pro automatizaci vytváření snímků obrazovky mobilních aplikací pro Android a iOS. Místo ručního procházení obrazovek na desítkách zařízení vývojář spustí jeden příkaz a Screengrab samostatně pořídí snímky všech potřebných obrazovek. Podle Fastlane Docs, 2026 nástroj současně podporuje až 30 jazyků a libovolná rozlišení obrazovek nastavená v konfiguraci.

Hlavní

  • Screengrab — nástroj Fastlane pro automatické vytváření snímků obrazovky mobilních aplikací pro Android a iOS.
  • Automatizace nahrazuje ruční vytváření stovek snímků obrazovky jedním příkazem v terminálu.
  • Lokalizace — současné generování snímků obrazovky v desítkách jazyků bez dalšího nastavení.
  • CI/CD — integrace s libovolnými pipeline: Jenkins, GitHub Actions, GitLab CI.
  • Flexibilita — podpora více zařízení, orientací a jazyků v jednom spuštění.

Co je Screengrab a proč je potřeba

Screengrab — je komponenta ekosystému Fastlane určená pro automatizované vytváření snímků obrazovky mobilních aplikací. Nástroj se objevil v roce 2015 jako odpověď na problém: pro publikování v Google Play a App Store je vyžadováno 4 až 10 snímků obrazovky pro každý jazyk. Při podpoře 30 jazyků to znamená 120–300 ručně pořízených snímků.

Problém ručního vytváření snímků obrazovky

Vývojář ručně spouští aplikaci na simulátoru nebo zařízení, prochází na potřebnou obrazovku, pořídí snímek obrazovky, přenese jej do počítače, ořízne a uloží do správné složky. Postup se opakuje pro každý jazyk a každou orientaci. Podle Google Play Console se průměrná aplikace aktualizuje jednou za dva týdny, což ze snímků obrazovky dělá pravidelnou rutinu.

Výhody automatizace

Screengrab řeší problém radikálně: vývojář popíše scénáře testů v UI frameworku (Espresso pro Android, XCTest pro iOS) a Screengrab je spouští na všech potřebných zařízeních a jazycích automaticky. Fastlane koordinuje proces: sestaví build, spustí testy, shromáždí snímky obrazovky a zabalí je do potřebné struktury složek.

Výsledek — sto snímků obrazovky za 10–15 minut místo několika hodin ruční práce. Google doporučuje aktualizovat snímky obrazovky při každé významné změně rozhraní a bez automatizace je tato rada často ignorována.

Jak funguje Screengrab: architektura a princip činnosti

Architektura Screengrab je postavena kolem dvou klíčových komponent: klienta na zařízení (screengrab-lib) a runneru, který řídí spouštění testů a sběr výsledků. Na Androidu se používá instrumentální testovací framework, na iOS — XCTest.

Životní cyklus jednoho spuštění

Fastlane zavolá akci screengrab, která přečte konfigurační soubor Screengrabfile. Runner sestaví testovací APK s připojenou knihovnou screengrab-lib, nainstaluje jej na připojená zařízení nebo emulátory a spustí UI testy označené anotacemi pro snímky obrazovky.

ruby
# Fastfile — popis lane pro snímky obrazovky
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

Struktura výstupních souborů

Screengrab vytváří hierarchii složek: jazyk → zařízení → snímky obrazovky. Struktura plně odpovídá požadavkům Google Play Console a App Store Connect. App Store vyžaduje přesně definované rozměry pro každý typ zařízení a Screengrab generuje snímky přesně podle specifikací.

Podpora více zařízení

Nástroj umí spouštět testy paralelně na všech připojených zařízeních a emulátorech. Android emulátory se spouštějí automaticky, pokud nejsou aktivní. Pro iOS Screengrab používá simulátory Xcode.

Instalace a konfigurace Screengrab pro Android

Instalace Screengrab se skládá ze dvou částí: přidání knihovny do projektu a konfigurace konfiguračního souboru. Na Androidu je potřeba UI framework Espresso a knihovna screengrab-lib z repozitáře Fastlane.

Připojení závislostí

V build.gradle modulu aplikace se přidá závislost screengrab-lib. Knihovna poskytuje třídu ScreenCapturer, která pořídí snímek obrazovky v okamžiku volání.

groovy
// build.gradle (modul: app)
androidTestImplementation(
  'tools.fastlane:screengrab-lib:2.1.0'
)

Psaní testu se snímky obrazovky

UI test je označen anotací Screengrab.screenshot() v potřebných bodech. Každé volání pořídí snímek aktuální obrazovky a uloží jej se zadaným názvem.

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")
        // Akce: klikněte na tlačítko přihlášení
        Screengrab.screenshot("login_screen")
    }
}

Konfigurace Screengrabfile

Soubor Screengrabfile ukládá parametry spuštění: seznam zařízení, jazyky, časové limity a cestu pro uložení. Soubor se obvykle nachází ve složce fastlane vedle Fastfile.

Lokalizace snímků obrazovky a více jazyků

Lokalizace — klíčová schopnost Screengrab, pro kterou je nejčastěji vybírán. Nástroj automaticky přepíná jazyk aplikace před každým spuštěním testů a pořizuje snímky ve všech zadaných jazycích.

Nastavení jazyků

Jazyky se zadávají v Screengrabfile parametrem locales. Pro každý jazyk Screengrab znovu nainstaluje aplikaci s odpovídajícími prostředky a spustí celý cyklus testů. LocaleTestRule na Androidu automaticky přepíná locale zařízení.

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

Struktura složek pro lokalizované snímky obrazovky

Screengrab vytváří adresáře podle schématu: screenshots/{locale}/{device_name}/{screenshot_name}.png. Tato struktura přímo odpovídá požadavkům Google Play, což umožňuje nahrávat snímky obrazovky přes Fastlane deliver jedním příkazem.

Pro iOS App Store Connect očekává snímky obrazovky v ploché struktuře podle jazyků. Fastlane automaticky převede hierarchii Screengrab do požadovaného formátu při publikování.

Integrace Screengrab do CI/CD pipeline

CI/CD integrace je jednou z hlavních výhod Screengrab. Nástroj se spouští z příkazového řádku a nevyžaduje grafické rozhraní, což jej činí ideálním pro serverové sestavení.

GitHub Actions

V CI prostředí je nutné spustit emulátor Androidu nebo simulátor iOS, poté zavolat lane se snímky obrazovky. GitHub Actions podporuje cachování AVD, což urychluje opakovaná spuštění.

Parametry pro CI

V CI konfiguraci je důležité zohlednit omezení paměti a času. Android emulátory vyžadují alespoň 2 GB RAM na zařízení a úplné spuštění na 7 jazycích a 2 zařízeních trvá 20–40 minut.

ruby
# Fastfile — lane pro CI s časovými limity
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

Pro Jenkins se používá krok sh s voláním bundle exec fastlane. Doporučuje se spouštět snímky obrazovky v noci nebo po triggeru po mergi do hlavní větve, aby se nezpomaloval vývojový cyklus.

Screengrab vs alternativy: srovnání nástrojů

Screengrab — není jediný nástroj pro automatizaci snímků obrazovky. Existují alternativy s různými přístupy: vestavěné nástroje OS, komerční platformy a knihovny pro snímky obrazovky v kódu.

NástrojPlatformaLokalizaceCI/CD
ScreengrabAndroid, iOSAutomatickáNativně
ADB ShellAndroidRučníPřes skripty
XCTestiOSRučníPřes xcodebuild
Firebase Test LabAndroidVyžaduje nastaveníAno
AppiumMultiplatformníRučníPřes WebDriver

ADB Shell dává plnou kontrolu, ale vyžaduje psaní skriptů pro každý scénář. XCTest je vestavěný v Xcode, ale neřídí lokalizaci automaticky. Firebase Test Lab spouští testy na skutečných zařízeních v cloudu, což poskytuje maximální pokrytí, ale vyžaduje platbu za každou minutu.

Screengrab vyhrává díky kombinaci: Fastlane řídí celý životní cyklus sestavení — od kompilace po publikování. Google Play přímo přijímá strukturu složek Screengrab přes Fastlane deliver.

Typické problémy a jejich řešení

Při práci s Screengrab se vývojáři nejčastěji setkávají s několika opakujícími se problémy. Znalost typických chyb zkracuje dobu ladění při prvním spuštění.

Snímky obrazovky jsou prázdné nebo černé

Problém nastává, když Screengrab pořídí snímek před dokončením vykreslení obrazovky. Řešení — přidat zpoždění Thread.sleep() před voláním screenshot() nebo použít IdlingResource z Espressa pro čekání na asynchronní operace.

Chyba nekompatibility verzí

Knihovna screengrab-lib musí odpovídat verzi Fastlane. Fastlane se aktualizuje měsíčně a stará knihovna nemusí podporovat nové konfigurační parametry. Řešení — synchronizovat verze přes Gemfile a gradle.properties.

Dlouhé spuštění v CI

Spuštění na 30 jazycích na 5 zařízeních může trvat déle než hodinu. Řešení — rozdělit spuštění: jedno pro obchod ve všech jazycích, druhé pro interní potřeby ve dvou jazycích. GitHub Actions umožňuje použít matici strategií pro paralelní spuštění.

Problémy s emulátorem v CI

Emulátor Androidu vyžaduje hardwarovou virtualizaci, která není vždy dostupná na CI serverech. KVM musí být zapnutý, jinak emulátor nenastartuje. Řešení — použít x86 obrazy bez GPU akcelerace nebo Firebase Test Lab.

Často kladené otázky

Čím se Screengrab liší od běžného snímku obrazovky přes ADB?

ADB pořídí snímek toho, co je právě zobrazeno na obrazovce. Screengrab se integruje s UI testy, automaticky přepíná jazyky a zařízení a pořizuje sérii snímků podle scénáře bez účasti člověka.

Lze použít Screengrab bez Fastlane?

Ne, Screengrab je komponentou ekosystému Fastlane a využívá jeho infrastrukturu pro sestavení, instalaci a koordinaci. Knihovna screengrab-lib samostatně neběží — je potřeba Fastlane jako orchestrátor.

Kolik času zabere generování snímků obrazovky v 10 jazycích?

Na jednom zařízení spuštění v 10 jazycích trvá 15–25 minut. Každý jazyk vyžaduje přeinstalaci aplikace a celý cyklus UI testů. Paralelní spuštění na více zařízeních čas úměrně zkracuje.

Podporuje Screengrab iOS aplikace?

Ano, Screengrab podporuje iOS přes XCTest a simulátory Xcode. Konfigurace je podobná Androidu: přidají se jazyky a zařízení a UI testy v Swiftu se píší pomocí XCTest a snímků přes XCUIScreenshot.

Jak aktualizovat snímky obrazovky pouze pro nové jazyky?

Screengrab nepodporuje inkrementální režim — každé spuštění generuje kompletní sadu snímků obrazovky. Doporučuje se nastavit samostatný lane pro CI s omezeným seznamem jazyků, aby se nepřepisovaly stávající snímky z hlavního spuštění.

Shrnutí

  • Screengrab — komponenta Fastlane pro automatizaci snímků obrazovky mobilních aplikací pro Android a iOS.
  • Automatizace nahrazuje ruční vytváření stovek snímků obrazovky jedním příkazem v terminálu.
  • Lokalizace — nástroj automaticky přepíná jazyk aplikace před každým spuštěním testů.
  • CI/CD — integrace s Jenkins, GitHub Actions, GitLab CI a dalšími pipeline bez grafického rozhraní.
  • Struktura výstupních souborů odpovídá požadavkům Google Play a App Store pro přímé nahrávání.
  • Flexibilita — podpora více zařízení, orientací obrazovky a vlastních testovacích scénářů.
  • Úspora — sto snímků obrazovky za 15 minut místo několika hodin ruční práce při každé aktualizaci.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také