Changed
assertVisibleis now strict (exists && isHittable), so it can't go falsely
green on an off-screen element; the previous frame-based soft check moved to a
newassertPresent(andrequirePresent).onScreen/assertOnScreennow
checkonLoadelements for existence rather than visibility.- The synchronizer's
waitForIdlenow runs in collection assertions
(assertCount/assertNotEmpty) andwaitForAny/waitForAll, not just
interactions — so a real backend (EarlGrey) applies everywhere.
Added
KassTestCase.launch(deeplink:)— the reliable launch-argument deep-link
convention (device.open(url:)via Safari is now documented as a fallback).- Snapshot references honour
$KASS_SNAPSHOTS_PATH(for CI) instead of only the
#file-adjacent folder. JUnitReporter— aKassReporterthat writes JUnit XML (one file per test
under$KASS_JUNIT_PATH) for CI systems that don't speak Allure.KassTestCase.launch(stubs:)— network-stub launch convention
(KASS_STUB_<name>env the app reads to serve fixtures).- A failing test now also attaches the full accessibility tree
(app.debugDescription) intearDown. - Community & discovery:
.spi.yml(Swift Package Index build/docs),
CONTRIBUTING.md, issue/PR templates, and a "How it compares" table in the
README (KassiOS vs raw XCUITest vs EarlGrey).
Fixed
KassSuitedocstring used a non-existentrequireAccessibilityIdentifiers
parameter; corrected toaccessibilityIdentifierPolicy: .enforce.- Documented
clearText/replaceText's delete-by-length limitation on
secure/formatted fields.
Verified: SwiftLint + unit tests (macOS) + UI tests (iOS Simulator) green in CI.
Install: .package(url: "https://github.com/VadimToptunov/KassiOS.git", from: "0.10.0")