Releases: VadimToptunov/KassiOS
Releases · VadimToptunov/KassiOS
Release list
KassiOS 0.10.0
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")
KassiOS 0.9.0
Added
- WebView support:
KassScreen.webView(),link(_:),links(). - Wait-combinators
waitForAny/waitForAll/assertOnScreen, and an app-alert
DSLalert().assertExists().tap("OK"). KassScaffold— generateKassScreenobjects from the live accessibility tree
(and count elements missing an identifier).forEachLocale— localized screenshot runs (Docloc-style).- Allure metadata:
severity,epic/feature/story,owner,tag, plus
issue / tms / custom links. config.screenshotEachStep(a screenshot after everystep) and
device.attachTextfor arbitrary text attachments.KassElement.pullToRefresh().Scripts/kass-simctl.sh— host-side CI helpers (permissions, location, push,
clean status bar, appearance, deep link, reset).- Documentation: migration guide; README badges.
Changed
- CI now runs three jobs — SwiftLint, unit tests (macOS), and UI tests
(simulator) with-retry-tests-on-failureand a Pro-simulator preference —
plus a DocC → GitHub Pages workflow. Added a.swiftlint.ymland fixed all
lint violations.
Verified: SwiftLint + unit tests (macOS) + UI tests (iOS Simulator) green in CI.
Install: .package(url: "https://github.com/VadimToptunov/KassiOS.git", from: "0.9.0")
KassiOS 0.8.0
Added
- Accessibility-identifier policy
.ignore/.warn/.enforce
(KassConfig.accessibilityIdentifierPolicy)..warnsurfaces an Xcode message
without failing;.enforcefails when an element is matched by label instead
of a realaccessibilityIdentifier. - Accessibility audit:
assertNoAccessibilityIssues(for:)wrapping
performAccessibilityAudit(iOS 17+). - Per-call configuration
KassElement.within(timeout:pollInterval:). - Element reads and actions:
readValue,readLabel,assertPlaceholder,
tapAtNormalizedOffset(x:y:),drag(to:). - Bundled
IntegrationTests/: a SwiftUI demo app plus KassiOS-driven UI tests
that run on the simulator; wired into CI as a second job.
Changed
KassRunBuilder.afternow runs viaaddTeardownBlock, so it executes even
after a hard failure.- Replaced
KassConfig.requireAccessibilityIdentifiers: Boolwith the
accessibilityIdentifierPolicyenum.
Fixed
assertHasText/assertValueMatchesnow fall back tolabelwhenvalue
is an empty string (e.g. SwiftUIText).setSwitchtaps the inner switch control, so it toggles SwiftUIToggles.
Verified: unit tests (macOS) and UI tests (iOS Simulator) green in CI. Install: .package(url: "https://github.com/VadimToptunov/KassiOS.git", from: "0.8.0")