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 — ä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.
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.
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.
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.
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.
# 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
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.
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 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.
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.
// build.gradle (modul: app)
androidTestImplementation(
'tools.fastlane:screengrab-lib:2.1.0'
)
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.
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")
}
}
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 — 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.
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.
# Screengrabfile
locales [
"ru-RU",
"en-US",
"de-DE",
"fr-FR",
"es-ES",
"ja-JP",
"ko-KR"
]
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.
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.
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.
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.
# 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
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 — ä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.
| Verktyg | Plattform | Lokalisering | CI/CD |
|---|---|---|---|
| Screengrab | Android, iOS | Automatisk | Inbyggt |
| ADB Shell | Android | Manuell | Via skript |
| XCTest | iOS | Manuell | Via xcodebuild |
| Firebase Test Lab | Android | Kräver inställning | Ja |
| Appium | Plattformsoberoende | Manuell | Via 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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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
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.
Läs också