Merge pull request #38 from aegzorz/feature/swift-package-index 🔧 Adding Swift Package Index manifest file
Merge pull request #38 from aegzorz/feature/swift-package-index
🔧 Adding Swift Package Index manifest file
Modern snapshot testing written in Swift.
Used to for testing snapshots of mostly UI components but also models and other types.
It comes with a few predefined matchers:
UIMatcher
EncodableMatcher
ReflectionMatcher
Snapshots can be configured to use the following:
RecordingStrategy
DiffingStrategy
RenderingStrategy
SizingStrategy
Example of snapshot testing a SwiftUI view:
import XCTest import Stilleben final class SomeViewTests: XCTestCase { private let matcher = UIMatcher() .assertSimulator(modelIdentifier: "iPhone14,7") .sizing(.dynamicHeight) .dynamicTypeSizes(.large) func testSomeView() async throws { await matcher .colorSchemes(.light) .match { NavigationView { SomeView() } } } }
It also supports snapshot testing UIKit view controllers or views:
import XCTest import Stilleben final class SomeViewControllerTests: XCTestCase { private let matcher = UIMatcher() .assertSimulator(modelIdentifier: "iPhone14,7") .sizing(.screen) func testSomeViewController() async throws { await matcher .match { @MainActor () -> UIViewController in SomeViewController() } } func testSomeView() async throws { await matcher .sizing(.intrinsic) .match { @MainActor () -> UIView in SomeView() } } }
Support for snapshotting reflections of your models:
import XCTest import Stilleben final class ReflectionTests: XCTestCase { let matcher = ReflectionMatcher() func testSimpleModel() async { struct Model { let text = "Hello World!" } await matcher.match { Model() } } }
Which yields a text file snapshot:
▿ StillebenTests.ReflectionTests.?.?.Model - text: "Hello World!"
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
Stilleben
Modern snapshot testing written in Swift.
Used to for testing snapshots of mostly UI components but also models and other types.
It comes with a few predefined matchers:
UIMatcher
for SwiftUI and UIKit snapshots.EncodableMatcher
for snapshots of models encoded to JSON.ReflectionMatcher
for snapshots of any type in the form of a reflection description.Snapshots can be configured to use the following:
RecordingStrategy
determines how snapshots are saved and read.DiffingStrategy
how to diff the recorded snapshot against the one generated by the test.RenderingStrategy
strategy used for rendering UI snapshots.SizingStrategy
strategy used for sizing views before snapshotting.Examples
Example of snapshot testing a SwiftUI view:
Generated snapshot
It also supports snapshot testing UIKit view controllers or views:
Support for snapshotting reflections of your models:
Which yields a text file snapshot: