Screengrab (Fastlane) — vad det är, funktioner och automatisering av skärmdumpar

Författare: IT Sectr Publicerad: 2026-04-15 Lästid: 8 min

Screengrab är ett verktyg från Fastlane-ekosystemet för att automatisera skapandet av skärmdumpar av mobilapplikationer för Android och iOS. Istället för att manuellt bläddra igenom skärmar på dussintals enheter kör utvecklaren ett enda kommando och Screengrab tar självständigt bilder av alla nödvändiga skärmar. Enligt Fastlane Docs, 2026 stöder verktyget samtidigt upp till 30 språk och alla skärmupplösningar som anges i konfigurationen.

Huvudsakligt

  • Screengrab — Fastlane-verktyg för automatisk skapande av skärmdumpar av mobilappar för Android och iOS.
  • Automatisering ersätter manuellt skapande av hundratals skärmdumpar med ett enda kommando i terminalen.
  • Lokalisering — samtidig generering av skärmdumpar på dussintals språk utan extra inställningar.
  • CI/CD — integration med alla pipelines: Jenkins, GitHub Actions, GitLab CI.
  • Flexibilitet — stöd för flera enheter, orienteringar och språk i en enda körning.

Vad är Screengrab och varför behövs det

Screengrab — är en komponent i Fastlane-ekosystemet avsedd för automatiserad skapande av skärmdumpar av mobilapplikationer. Verktyget dök upp 2015 som svar på problemet: för publicering i Google Play och App Store krävs 4 till 10 skärmdumpar per språk. Med stöd för 30 språk innebär detta 120–300 manuellt tagna bilder.

Problemet med manuell skapande av skärmdumpar

Utvecklaren startar manuellt applikationen på en simulator eller enhet, bläddrar till önskad skärm, tar en skärmdump, överför den till datorn, beskär den och sparar i rätt mapp. Proceduren upprepas för varje språk och varje orientering. Enligt Google Play Console uppdateras den genomsnittliga applikationen varannan vecka, vilket gör skärmdumpar till en regelbunden rutin.

Fördelar med automatisering

Screengrab löser problemet radikalt: utvecklaren beskriver testscenarier i UI-ramverket (Espresso för Android, XCTest för iOS) och Screengrab kör dem automatiskt på alla nödvändiga enheter och språk. Fastlane koordinerar processen: kompilerar bygget, kör testerna, samlar in skärmdumpar och paketerar dem i rätt mappstruktur.

Resultatet — hundra skärmdumpar på 10–15 minuter istället för flera timmars manuellt arbete. Google rekommenderar att uppdatera skärmdumpar vid varje betydande gränssnittsändring och utan automatisering ignoreras detta råd ofta.

Hur Screengrab fungerar: arkitektur och funktionsprincip

Arkitektur Screengrab är byggd kring två nyckelkomponenter: en klient på enheten (screengrab-lib) och en runner som hanterar testkörning och resultatinsamling. På Android används instrumentellt testramverk, på iOS — XCTest.

Livscykel för en körning

Fastlane anropar åtgärden screengrab, som läser konfigurationsfilen Screengrabfile. Runnern kompilerar test-APK:n med det anslutna screengrab-lib-biblioteket, installerar det på anslutna enheter eller emulatorer och kör UI-tester markerade med annoteringar för skärmdumpar.

ruby
# Fastfile — beskrivning av lane för skärmdumpar
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

Struktur för utdatafiler

Screengrab skapar en mapphierarki: språk → enhet → skärmdumpar. Strukturen överensstämmer helt med kraven från Google Play Console och App Store Connect. App Store kräver strikt definierade dimensioner för varje enhetstyp och Screengrab genererar bilder exakt enligt specifikationerna.

Stöd för flera enheter

Verktyget kan köra tester parallellt på alla anslutna enheter och emulatorer. Android emulatorer startas automatiskt om de inte är aktiva. För iOS använder Screengrab Xcode-simulatorer.

Installation och konfiguration av Screengrab för Android

Installation av Screengrab består av två delar: lägga till biblioteket i projektet och konfigurera konfigurationsfilen. På Android krävs UI-ramverket Espresso och biblioteket screengrab-lib från Fastlane-förvaret.

Ansluta beroenden

I build.gradle för appmodulen läggs beroendet screengrab-lib till. Biblioteket tillhandahåller klassen ScreenCapturer som tar en skärmdump vid anropstillfället.

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

Skriva test med skärmdumpar

UI-testet markeras med annoteringen Screengrab.screenshot() på nödvändiga punkter. Varje anrop tar en skärmdump av den aktuella skärmen och sparar den med angivet namn.

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")
        // Åtgärder: klicka på inloggningsknappen
        Screengrab.screenshot("login_screen")
    }
}

Screengrabfile-konfiguration

Filen Screengrabfile lagrar körparametrar: lista över enheter, språk, timeout-värden och sökväg för lagring. Filen finns vanligtvis i mappen fastlane bredvid Fastfile.

Lokalisering av skärmdumpar och flera språk

Lokalisering — den viktigaste funktionen i Screengrab, för vilken det oftast väljs. Verktyget växlar automatiskt applikationens språk före varje testkörning och tar bilder på alla angivna språk.

Konfigurera språk

Språk anges i Screengrabfile med parametern locales. För varje språk installerar Screengrab om applikationen med motsvarande resurser och kör en fullständig testcykel. LocaleTestRule på Android växlar automatiskt enhetens språkinställning.

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

Mappstruktur för lokaliserade skärmdumpar

Screengrab skapar kataloger enligt schemat: screenshots/{locale}/{device_name}/{screenshot_name}.png. Denna struktur överensstämmer direkt med Googles Play-krav, vilket möjliggör uppladdning av skärmdumpar via Fastlane deliver med ett enda kommando.

För iOS förväntar App Store Connect skärmdumpar i en platt struktur per språk. Fastlane konverterar automatiskt Screengrab-hierarkin till önskat format vid publicering.

Integration av Screengrab i CI/CD-pipeline

CI/CD integration är en av de främsta fördelarna med Screengrab. Verktyget körs från kommandoraden och kräver inget grafiskt gränssnitt, vilket gör det idealiskt för serverbyggen.

GitHub Actions

I CI-miljön måste Android-emulatorn eller iOS-simulatorn startas, varefter lane med skärmdumpar anropas. GitHub Actions stöder cachning av AVD, vilket snabbar upp upprepade körningar.

Parametrar för CI

I CI-konfigurationen är det viktigt att ta hänsyn till minnes- och tidsbegränsningar. Android emulatorer kräver minst 2 GB RAM per enhet och en fullständig körning på 7 språk och 2 enheter tar 20–40 minuter.

ruby
# Fastfile — lane för CI med timeout
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

För Jenkins används steget sh med anropet bundle exec fastlane. Det rekommenderas att köra skärmdumpar på natten eller efter trigger efter merge till huvudgrenen för att inte sakta ner utvecklingscykeln.

Screengrab vs alternativ: jämförelse av verktyg

Screengrab — är inte det enda verktyget för automatisering av skärmdumpar. Det finns alternativ med olika angreppssätt: inbyggda OS-verktyg, kommersiella plattformar och bibliotek för skärmdumpar i kod.

VerktygPlattformLokaliseringCI/CD
ScreengrabAndroid, iOSAutomatiskInbyggt
ADB ShellAndroidManuellVia skript
XCTestiOSManuellVia xcodebuild
Firebase Test LabAndroidKräver inställningJa
AppiumPlattformsoberoendeManuellVia WebDriver

ADB Shell ger full kontroll men kräver skriptskrivning för varje scenario. XCTest är inbyggt i Xcode men hanterar inte lokalisering automatiskt. Firebase Test Lab kör tester på riktiga enheter i molnet, vilket ger maximal täckning, men kräver betalning per minut.

Screengrab vinner tack vare kombinationen: Fastlane hanterar hela bygglivscykeln — från kompilering till publicering. Google Play accepterar direkt Screengrab-mappstrukturen via Fastlane deliver.

Typiska problem och deras lösningar

Vid arbete med Screengrab stöter utvecklare oftast på flera återkommande problem. Kännedom om typiska fel minskar felsökningstiden vid första körningen.

Skärmdumpar är tomma eller svarta

Problemet uppstår när Screengrab tar en bild innan skärmrenderingen är klar. Lösning — lägg till en fördröjning Thread.sleep() före anropet screenshot() eller använd IdlingResource från Espresso för att vänta på asynkrona operationer.

Fel på grund av versionsinkompatibilitet

Biblioteket screengrab-lib måste matcha Fastlane-versionen. Fastlane uppdateras månadsvis och det gamla biblioteket kanske inte stöder nya konfigurationsparametrar. Lösning — synkronisera versioner via Gemfile och gradle.properties.

Lång körtid i CI

Körning på 30 språk på 5 enheter kan ta över en timme. Lösning — dela upp körningar: en för butiken på alla språk, en annan för interna behov på två språk. GitHub Actions tillåter användning av strategimatris för parallella körningar.

Problem med emulator i CI

Android-emulatorn kräver hårdvaruvirtualisering, vilket inte alltid är tillgängligt på CI-servrar. KVM måste vara aktiverat, annars startar inte emulatorn. Lösning — använd x86-avbilder utan GPU-acceleration eller Firebase Test Lab.

Vanliga frågor

Vad skiljer Screengrab från en vanlig skärmdump via ADB?

ADB tar en bild av vad som visas på skärmen för tillfället. Screengrab integreras med UI-tester, växlar automatiskt språk och enheter och tar en serie bilder enligt scenario utan mänsklig inblandning.

Kan Screengrab användas utan Fastlane?

Nej, Screengrab är en komponent i Fastlane-ekosystemet och använder dess infrastruktur för kompilering, installation och koordinering. Biblioteket screengrab-lib körs inte separat — Fastlane krävs som orkestrator.

Hur lång tid tar generering av skärmdumpar på 10 språk?

På en enhet tar en körning på 10 språk 15–25 minuter. Varje språk kräver ominstallation av applikationen och en fullständig cykel av UI-tester. Parallell körning på flera enheter minskar tiden proportionellt.

Stöder Screengrab iOS-applikationer?

Ja, Screengrab stöder iOS via XCTest och Xcode-simulatorer. Konfigurationen liknar Android: språk och enheter läggs till och UI-tester i Swift skrivs med XCTest och bilder via XCUIScreenshot.

Hur uppdaterar man skärmdumpar endast för nya språk?

Screengrab stöder inte inkrementellt läge — varje körning genererar en fullständig uppsättning skärmdumpar. Det rekommenderas att konfigurera en separat lane för CI med en begränsad språklista för att inte skriva över befintliga bilder från huvudkörningen.

Sammanfattning

  • Screengrab — Fastlane-komponent för automatisering av skärmdumpar av mobilappar för Android och iOS.
  • Automatisering ersätter manuellt skapande av hundratals skärmdumpar med ett enda kommando i terminalen.
  • Lokalisering — verktyget växlar automatiskt applikationens språk före varje testkörning.
  • CI/CD — integration med Jenkins, GitHub Actions, GitLab CI och andra pipelines utan grafiskt gränssnitt.
  • Struktur för utdatafiler överensstämmer med Google Plays och App Stores krav för direkt uppladdning.
  • Flexibilitet — stöd för flera enheter, skärmorienteringar och anpassade testscenarier.
  • Besparing — hundra skärmdumpar på 15 minuter istället för flera timmars manuellt arbete vid varje uppdatering.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också