Screengrab adalah utilitas dari ekosistem Fastlane untuk mengotomatiskan pembuatan tangkapan layar aplikasi mobile untuk Android dan iOS. Alih-alih menggulir layar secara manual di puluhan perangkat, pengembang menjalankan satu perintah, dan Screengrab secara mandiri mengambil gambar semua layar yang diperlukan. Menurut Fastlane Docs, 2026, alat ini mendukung hingga 30 bahasa secara bersamaan dan resolusi layar apa pun yang ditentukan dalam konfigurasi.
Poin Utama
Screengrab — adalah komponen ekosistem Fastlane yang dirancang untuk pembuatan tangkapan layar aplikasi mobile secara otomatis. Alat ini muncul pada tahun 2015 sebagai jawaban atas masalah: untuk publikasi di Google Play dan App Store diperlukan 4 hingga 10 tangkapan layar untuk setiap bahasa. Dengan dukungan 30 bahasa, ini berarti 120–300 gambar yang dibuat secara manual.
Pengembang secara manual menjalankan aplikasi di simulator atau perangkat, menggulir ke layar yang diperlukan, mengambil tangkapan layar, memindahkannya ke komputer, memotongnya, dan menyimpannya ke folder yang sesuai. Prosedur ini diulang untuk setiap bahasa dan setiap orientasi. Menurut Google Play Console, aplikasi rata-rata diperbarui setiap dua minggu, yang mengubah tangkapan layar menjadi rutinitas reguler.
Screengrab menyelesaikan masalah secara radikal: pengembang mendeskripsikan skenario pengujian di framework UI (Espresso untuk Android, XCTest untuk iOS), dan Screengrab menjalankannya di semua perangkat dan bahasa yang diperlukan secara otomatis. Fastlane mengoordinasikan proses: mengompilasi build, menjalankan pengujian, mengumpulkan tangkapan layar, dan mengemasnya ke dalam struktur folder yang diperlukan.
Hasilnya — seratus tangkapan layar dalam 10–15 menit, bukan beberapa jam kerja manual. Google merekomendasikan memperbarui tangkapan layar pada setiap perubahan signifikan pada antarmuka, dan tanpa otomatisasi, saran ini sering diabaikan.
Arsitektur Screengrab dibangun di sekitar dua komponen kunci: klien di perangkat (screengrab-lib) dan runner yang mengelola pelaksanaan pengujian dan pengumpulan hasil. Di Android digunakan framework pengujian instrumental, di iOS — XCTest.
Fastlane memanggil aksi screengrab, yang membaca file konfigurasi Screengrabfile. Runner mengompilasi APK pengujian dengan pustaka screengrab-lib yang terhubung, menginstalnya di perangkat atau emulator yang terhubung, dan menjalankan pengujian UI yang ditandai dengan anotasi untuk tangkapan layar.
# Fastfile — deskripsi lane untuk tangkapan layar
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 membuat hierarki folder: bahasa → perangkat → tangkapan layar. Strukturnya sepenuhnya sesuai dengan persyaratan Google Play Console dan App Store Connect. App Store memerlukan ukuran yang ditentukan secara ketat untuk setiap jenis perangkat, dan Screengrab menghasilkan gambar persis sesuai spesifikasi.
Alat ini dapat menjalankan pengujian secara paralel di semua perangkat dan emulator yang terhubung. Emulator Android dimulai secara otomatis jika tidak aktif. Untuk iOS, Screengrab menggunakan simulator Xcode.
Instalasi Screengrab terdiri dari dua bagian: menambahkan pustaka ke proyek dan mengonfigurasi file konfigurasi. Di Android diperlukan framework UI Espresso dan pustaka screengrab-lib dari repositori Fastlane.
Di build.gradle modul aplikasi, dependensi screengrab-lib ditambahkan. Pustaka menyediakan kelas ScreenCapturer yang mengambil tangkapan layar pada saat dipanggil.
// build.gradle (modul: app)
androidTestImplementation(
'tools.fastlane:screengrab-lib:2.1.0'
)
Pengujian UI ditandai dengan anotasi Screengrab.screenshot() di titik-titik yang diperlukan. Setiap panggilan mengambil tangkapan layar dari layar saat ini dan menyimpannya dengan nama yang ditentukan.
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")
// Tindakan: klik tombol masuk
Screengrab.screenshot("login_screen")
}
}
File Screengrabfile menyimpan parameter proses: daftar perangkat, bahasa, batas waktu, dan jalur penyimpanan. File biasanya terletak di folder fastlane di samping Fastfile.
Lokalisasi — fitur utama Screengrab, yang paling sering menjadi alasan pemilihannya. Alat ini secara otomatis mengganti bahasa aplikasi sebelum setiap proses pengujian dan mengambil gambar di semua bahasa yang ditentukan.
Bahasa diatur dalam Screengrabfile dengan parameter locales. Untuk setiap bahasa, Screengrab menginstal ulang aplikasi dengan sumber daya yang sesuai dan menjalankan siklus pengujian penuh. LocaleTestRule di Android secara otomatis mengganti lokal perangkat.
# Screengrabfile
locales [
"ru-RU",
"en-US",
"de-DE",
"fr-FR",
"es-ES",
"ja-JP",
"ko-KR"
]
Screengrab membuat direktori sesuai skema: screenshots/{locale}/{device_name}/{screenshot_name}.png. Struktur ini langsung sesuai dengan persyaratan Google Play, memungkinkan unggahan tangkapan layar melalui Fastlane deliver dengan satu perintah.
Untuk iOS, App Store Connect mengharapkan tangkapan layar dalam struktur datar per bahasa. Fastlane secara otomatis mengonversi hierarki Screengrab ke format yang diperlukan saat publikasi.
CI/CD integrasi adalah salah satu keunggulan utama Screengrab. Alat ini dijalankan dari baris perintah dan tidak memerlukan antarmuka grafis, menjadikannya ideal untuk build server.
Di lingkungan CI, perlu menjalankan emulator Android atau simulator iOS, kemudian memanggil lane dengan tangkapan layar. GitHub Actions mendukung caching AVD, yang mempercepat proses berulang.
Dalam konfigurasi CI, penting untuk mempertimbangkan batasan memori dan waktu. Emulator Android memerlukan setidaknya 2 GB RAM per perangkat, dan proses penuh pada 7 bahasa dan 2 perangkat memakan waktu 20–40 menit.
# Fastfile — lane untuk CI dengan batas waktu
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
Untuk Jenkins, digunakan langkah sh dengan pemanggilan bundle exec fastlane. Disarankan untuk menjalankan tangkapan layar di malam hari atau setelah pemicu setelah merge ke cabang utama, agar tidak memperlambat siklus pengembangan.
Screengrab — bukan satu-satunya alat untuk otomatisasi tangkapan layar. Ada alternatif dengan pendekatan berbeda: alat bawaan OS, platform komersial, dan pustaka untuk tangkapan layar dalam kode.
| Alat | Platform | Lokalisasi | CI/CD |
|---|---|---|---|
| Screengrab | Android, iOS | Otomatis | Nat |
| ADB Shell | Android | Manual | Melalui skrip |
| XCTest | iOS | Manual | Melalui xcodebuild |
| Firebase Test Lab | Android | Perlu konfigurasi | Ya |
| Appium | Lintas platform | Manual | Melalui WebDriver |
ADB Shell memberikan kontrol penuh, tetapi memerlukan penulisan skrip untuk setiap skenario. XCTest terintegrasi di Xcode, tetapi tidak mengelola lokalisasi secara otomatis. Firebase Test Lab menjalankan pengujian di perangkat nyata di cloud, memberikan cakupan maksimal, tetapi memerlukan pembayaran per menit.
Screengrab unggul berkat kombinasinya: Fastlane mengelola seluruh siklus hidup build — dari kompilasi hingga publikasi. Google Play secara langsung menerima struktur folder Screengrab melalui Fastlane deliver.
Saat bekerja dengan Screengrab, pengembang paling sering menghadapi beberapa masalah yang berulang. Pengetahuan tentang kesalahan umum mempersingkat waktu debugging pada proses pertama.
Masalah terjadi ketika Screengrab mengambil gambar sebelum rendering layar selesai. Solusi — tambahkan penundaan Thread.sleep() sebelum memanggil screenshot() atau gunakan IdlingResource dari Espresso untuk menunggu operasi asinkron.
Pustaka screengrab-lib harus sesuai dengan versi Fastlane. Fastlane diperbarui setiap bulan, dan pustaka lama mungkin tidak mendukung parameter konfigurasi baru. Solusi — sinkronkan versi melalui Gemfile dan gradle.properties.
Proses pada 30 bahasa di 5 perangkat dapat memakan waktu lebih dari satu jam. Solusi — bagi proses: satu untuk toko di semua bahasa, satu lagi untuk kebutuhan internal di dua bahasa. GitHub Actions memungkinkan penggunaan matriks strategi untuk proses paralel.
Emulator Android memerlukan virtualisasi perangkat keras, yang tidak selalu tersedia di server CI. KVM harus diaktifkan, jika tidak emulator tidak akan berjalan. Solusi — gunakan image x86 tanpa akselerasi GPU atau Firebase Test Lab.
Pertanyaan yang Sering Diajukan
ADB mengambil gambar dari apa yang ditampilkan di layar saat ini. Screengrab terintegrasi dengan pengujian UI, secara otomatis mengganti bahasa, perangkat, dan mengambil serangkaian gambar sesuai skenario tanpa campur tangan manusia.
Tidak, Screengrab adalah komponen ekosistem Fastlane dan menggunakan infrastrukturnya untuk kompilasi, instalasi, dan koordinasi. Pustaka screengrab-lib tidak berjalan secara terpisah — Fastlane diperlukan sebagai orkestrator.
Pada satu perangkat, proses dalam 10 bahasa memakan waktu 15–25 menit. Setiap bahasa memerlukan instalasi ulang aplikasi dan siklus pengujian UI penuh. Proses paralel di beberapa perangkat mengurangi waktu secara proporsional.
Ya, Screengrab mendukung iOS melalui XCTest dan simulator Xcode. Konfigurasi mirip dengan Android: bahasa dan perangkat ditambahkan, dan pengujian UI dalam Swift ditulis menggunakan XCTest dan gambar melalui XCUIScreenshot.
Screengrab tidak mendukung mode inkremental — setiap proses menghasilkan set tangkapan layar lengkap. Disarankan untuk mengatur lane terpisah untuk CI dengan daftar bahasa terbatas, agar tidak menimpa gambar yang ada dari proses utama.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga