Tüm açık kaynak paketler
AraçlarSwift

iOS-Testing-Automation-Framework

XCUITest için robotlar, kendini onaran locator'lar, screenshot farkları, erişilebilirlik denetimi ve CI raporları.

3YıldızSon Sürüm: v2.0.0 · Güncellendi: 15 Ekim 2026
Platformlar:iOS 17macOS 14

Lisans: MIT

iOS ve macOS uygulamalarının UI ve unit testleri için bağımlılıksız bir Swift paketi. XCUITest'te robotlar, accessibility identifier'ı değişse de elementi bulan aramalar, bir erişilebilirlik denetimi, fark görselli screenshot karşılaştırması ve CI için JUnit ve Markdown raporları ekler. Swift Testing ya da XCTest fark etmeksizin her test target'ında SwiftUI snapshot'ları, polling ile bekleme, retry, spy'lar ve seed'li test verisi sunar. Bu yardımcıların arkasındaki kurallar saf Swift'tir ve unit testlerle kapsanır; XCUITest katmanı bir örnek uygulamanın UI testleriyle iPhone simülatöründe sınanır.

Özellikler

  • Robotlar: ekran başına bir sınıf; action'ları element dokunulabilir olana kadar bekler, Xcode'un test raporunda isimli adım olarak görünür ve hatayı testin satırına yazar
  • Kendini onaran aramalar: Locator ve LocatorHealer; label'a, placeholder'a ya da en benzer identifier'a geri düşer, düzeltmeyi HealingLog'a yazar ve eşit iyi iki aday arasında tahmin yürütmez
  • Beş kurallı erişilebilirlik denetimi (eksik label, etiketsiz görsel, 44 × 44 pt altındaki dokunma alanı, element türünü tekrarlayan label, tekrar eden identifier); istenirse Apple'ın performAccessibilityAudit()'i ile birlikte
  • Screenshot ve SwiftUI snapshot'larını baseline PNG'lerle karşılaştırma; tolerans, yok sayılan bölgeler ve fark görseliyle. Eksik baseline kaydedilir ve test başarısız olur
  • Her testten sonra yeniden yazılan junit.xml ve Markdown job özeti; kayıtlı secret'lar ve credential kalıpları maskelenir. Birden çok CI koşusunun sonuçları için FlakinessAnalyzer
  • typeSecret, parolaları yazmak yerine yapıştırır; böylece XCTest'in kendi activity başlıklarında görünmezler. CI, result bundle'da test parolalarını arar
  • Unit test yardımcıları: Wait.until, RetryPolicy, Spy ve ThrowingSpy, seed'li Fixtures ve Benchmark
  • Bağımlılık yok ve Swift Testing import edilmez, bu yüzden paket UI test bundle'larında link edilebilir; 118 Swift Testing testi, AutomationShowcase örnek uygulamasında 9 UI testi ve dört makaleli bir DocC kataloğu

Hızlı Başlangıç

swift
1import XCTest
2import iOSTestingAutomationFramework
3 
4final class CounterRobot: Robot {
5 var label: XCUIElement { app.staticTexts["counter.label"] }
6 var button: XCUIElement { app.buttons["counter.button"] }
7}
8 
9final class CounterUITests: XCTestCase {
10 @MainActor
11 func testTappingCounts() {
12 let app = XCUIApplication()
13 app.launch()
14 
15 let counter = app.on(CounterRobot.self)
16 counter
17 .tap(counter.button)
18 .tap(counter.button)
19 .assertLabel(of: counter.label, equals: "Tapped 2 times")
20 }
21}

Kurulum

Xcode (File › Add Package Dependencies…)

text
1https://github.com/muhittincamdali/iOS-Testing-Automation-Framework.git

Swift Package Manager

swift
1dependencies: [
2 .package(url: "https://github.com/muhittincamdali/iOS-Testing-Automation-Framework.git", from: "2.0.0")
3],
4targets: [
5 .testTarget(name: "YourAppTests", dependencies: [
6 .product(name: "iOSTestingAutomationFramework", package: "iOS-Testing-Automation-Framework")
7 ])
8]

Ekran Görüntüleri

Yan yana üç telefon ekranı: fiyatlı katalog, fiyatları gizlenmiş katalog ve yalnız fiyatların ve anahtarın maviyle vurgulandığı soluk bir fark görseli
Örnek uygulamanın katalog ekranı (iPhone simülatörü): fiyatları gösterme anahtarı, güncelleme saati ve fiyatlarıyla dört kahve demleme ürünü

Zaman Çizelgesi

  1. Repo bir test otomasyon framework'ü olarak açıldı; sonraki haftanın büyük kısmı dokümantasyona gitti

  2. v1.0.0, README'ye dayalı bir özellik listesiyle yayınlandı; öncesinde 28 Ocak'ta başlayan README, issue şablonu ve CI/CD hazırlığı vardı, README ve doküman değişiklikleri 5 Şubat'a kadar sürdü

  3. Kaynaklar yer tutucu kodla değiştirildi: hiçbir şey karşılaştırmayan bir görsel regresyon motoru, yalnız ekrana yazan bir erişilebilirlik denetçisi ve artık derlenmeyen bir test target'ı

  4. v2.0.0: Swift 6 üzerinde yeniden kuruldu; her UI yardımcısının arkasında test edilmiş kurallar, CI'da UI testleri koşan bir örnek uygulama, DocC ve iOSTestingTools'un işe yarayan kısımları

Bağlantılar

Birleştirilen Depolar

İlgili Yazı

Yazıyı Oku