Ana içeriğe geç

Ekran Görüntüsü Yakalama

UI testleri kullanarak iOS/iPadOS simülatörlerinden doğrudan App Store ekran görüntüleri yakalayın. fastlane snapshot yerine kullanılır.

Hızlı başlangıç

ascelerate screenshot init                  # Create config and helper in ascelerate/
ascelerate screenshot # Capture screenshots

Komutlar

Çalıştırma

ascelerate screenshot                       # Capture screenshots
ascelerate screenshot run # Same as above

Her zaman mevcut dizindeki ascelerate/screenshot.yml dosyasını kullanır.

Başlatma

ascelerate screenshot init

ascelerate/ dizininde hem ascelerate/screenshot.yml hem de ascelerate/ScreenshotHelper.swift dosyalarını oluşturur. Yazmadan önce onay ister. Mevcut dosyaların üzerine yazmaz.

Helper oluşturma

ascelerate screenshot create-helper         # Generates ScreenshotHelper.swift
ascelerate screenshot create-helper -o CustomHelper.swift

Yapılandırma (ascelerate/screenshot.yml)

workspace: MyApp.xcworkspace
# project: MyApp.xcodeproj # Use project instead of workspace
scheme: AppUITests
devices:
- simulator: iPhone 16 Pro Max
- simulator: iPad Pro 13-inch (M4)
languages:
- en-US
- de-DE
outputDirectory: ./screenshots
clearPreviousScreenshots: true
eraseSimulator: false
localizeSimulator: true
overrideStatusBar: true
darkMode: false
disableAnimations: true
waitAfterBoot: 0
# statusBarArguments: "--time '9:41' --dataNetwork wifi"
# testWithoutBuilding: true # Skip build, use existing xctestrun
# cleanBuild: false
# headless: false # Don't open Simulator.app
# helperPath: AppUITests/ScreenshotHelper.swift
# launchArguments:
# - -ui_testing
# configuration: Debug # Build configuration
# testplan: MyTestPlan # Xcode test plan name
# numberOfRetries: 0 # Retry failed tests
# stopAfterFirstError: false # Stop all devices on first failure
# reinstallApp: false # Delete and reinstall app before tests
# xcargs: SWIFT_ACTIVE_COMPILATION_CONDITIONS=SCREENSHOTS

UITest'lerde kullanım

ScreenshotHelper.swift dosyasını UITest target'ınıza ekleyin:

override func setUp() {
setupScreenshots(app)
app.launch()
}

func testScreenshots() {
screenshot("01-home")
app.buttons["Settings"].tap()
screenshot("02-settings")
}

Uygulamanız ekran görüntüsü modunu algılayabilir:

if ProcessInfo.processInfo.arguments.contains("-ASC_SCREENSHOT") {
// Show demo data, hide debug UI, etc.
}

Helper ayrıca disableAnimationsIfNeeded() fonksiyonunu da sunar; yapılandırmada disableAnimations etkinleştirildiğinde animasyonları devre dışı bırakır:

override func setUp() {
setupScreenshots(app)
disableAnimationsIfNeeded()
app.launch()
}

Nasıl çalışır

  1. build-for-testing ile bir kez derler (testWithoutBuilding: true ise atlar)
  2. Her dil için: tüm simülatörleri başlatır, yerelleştirir, durum çubuğunu değiştirir
  3. Tüm cihazlarda testleri eş zamanlı çalıştırır
  4. Cihaz bazlı önbellekten çıktı dizinine ekran görüntülerini toplar
  5. Hatalar atlanır ve devam edilir — hata günlükleri çıktıya kaydedilir

Çıktı

screenshots/
├── en-US/
│ ├── iPhone 16 Pro Max-01-home.png
│ ├── iPhone 16 Pro Max-02-settings.png
│ └── iPad Pro 13-inch (M4)-01-home.png
└── de-DE/
└── ...

Seçenekler

SeçenekAçıklama
clearPreviousScreenshotsToplamadan önce dil klasörünü temizle (yalnızca tüm cihazlar başarılı olursa)
eraseSimulatorHer dilden önce simülatörü sıfırla
localizeSimulatorHer dil için simülatör dilini/locale'ini ayarla
overrideStatusBarDurum çubuğunu değiştir (9:41, tam çubuklar, Wi-Fi)
statusBarArgumentsÖzel xcrun simctl status_bar argümanları
darkModeSimülatörlerde karanlık modu etkinleştir
disableAnimationsTestler sırasında animasyonları devre dışı bırak
waitAfterBootSimülatör başlatıldıktan sonra beklenecek saniye (varsayılan: 0)
testWithoutBuildingDerlemeyi atla, mevcut xctestrun dosyasını kullan
cleanBuildDerlemeden önce clean çalıştır
headlessSimulator.app'i açma
helperPathVersiyon kontrolü için ScreenshotHelper.swift yolu
launchArgumentsUygulamaya aktarılan ek başlatma argümanları
configurationDerleme yapılandırması (örn. Debug, Release)
testplanXcode test planı adı
numberOfRetriesBaşarısız testler için tekrar deneme sayısı
stopAfterFirstErrorİlk hatadan sonra tüm cihazları durdur
reinstallAppTestlerden önce uygulamayı silip yeniden yükle
xcargsxcodebuild'e aktarılan ek argümanlar