Testowanie,
Prościej.
Typowana nawigacja SwiftUI w testach UI.
HarnessKit 1.0
HarnessKit 1.0: cztery moduły, jedna paczka.
Deklarujesz projekt
PathProject trzyma listę folderów. Z tej deklaracji bierze się UI i każda ścieżka testu.
Jedna deklaracja, całe drzewo.
Foldery jako enumy
Każdy case wiąże widok z etykietą. Switch po self zwraca ciało funkcji. Kompilator pilnuje, żeby żaden ekran ci nie umknął.
Jeden case na ekran. Switch po self.
Nawigacja z testu
Wywołujesz navigate(app:) dla case'a folderu. HarnessKit przechodzi za ciebie od korzenia aż do docelowego ekranu.
navigate(app:) prowadzi ścieżką od korzenia.
Specyfikacja
Typowane ścieżki, od początku do końca.
PathProject, PathFolder, navigate(app:). Jedno drzewo dla podglądów i testów UI.
Exhaustive enumy
Kompilator pilnuje wszystkich ekranów już na etapie kompilacji.
Jedna deklaracja
Jedno źródło napędza UI, ścieżki testów i screenshoty.
Koniec z XCUI
navigate(app:) zwija ręczne tapy do jednego typowanego wywołania.
Czyste SwiftUI
HarnessView buduje NavigationStack z drzewa projektu. Zero prywatnego API.
Typowane drzewo
PathProject i PathFolder składają hierarchię w typowane drzewo.
Możliwości
Więcej niż harness.
Testy, screenshoty i testy screenshotów oparte na bazowych protokołach.
HarnessKit
Bazowe protokoły, resolver ścieżek oraz HarnessView.
HarnessKitScreenshots
Backend metadanych zrzutów: nazwa, motyw, wersja OS, orientacja.
HarnessKitTesting
navigate(app:) dla każdego PathFolder. Na tvOS działa przez XCUIRemote.
HarnessKitScreenshotTesting
Ustawiasz motyw i orientację, wyzwalasz zrzut ekranu.
Typowane ścieżki
PathResolver, PathComponent oraz PathFolder. Protokoły gotowe do rozszerzania.
Wdrożenie
Dodajesz paczkę.
Dodajesz zależność, deklarujesz drzewo, renderujesz HarnessView. Test target od razu ma dostęp do navigate(app:).
GitHub / HarnessKit
Zgłaszaj issue i wpływaj na kierunek projektu.
Dokumentacja DocC
Protokoły, typy i API navigate.
Swift Package Index
Status buildów na wszystkich platformach Apple.
HarnessKit jest open source na licencji MIT.