Skip to content

Releases: VadimToptunov/KassiOS

KassiOS 0.10.0

Choose a tag to compare

@VadimToptunov VadimToptunov released this 12 Jul 20:43
087803d

Changed

  • assertVisible is 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
    new assertPresent (and requirePresent). onScreen/assertOnScreen now
    check onLoad elements for existence rather than visibility.
  • The synchronizer's waitForIdle now runs in collection assertions
    (assertCount/assertNotEmpty) and waitForAny/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 — a KassReporter that 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) in tearDown.
  • 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

  • KassSuite docstring used a non-existent requireAccessibilityIdentifiers
    parameter; corrected to accessibilityIdentifierPolicy: .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

Choose a tag to compare

@VadimToptunov VadimToptunov released this 11 Jul 18:36
738448e

Added

  • WebView support: KassScreen.webView(), link(_:), links().
  • Wait-combinators waitForAny / waitForAll / assertOnScreen, and an app-alert
    DSL alert().assertExists().tap("OK").
  • KassScaffold — generate KassScreen objects 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 every step) and
    device.attachText for 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-failure and a Pro-simulator preference —
    plus a DocC → GitHub Pages workflow. Added a .swiftlint.yml and 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

Choose a tag to compare

@VadimToptunov VadimToptunov released this 10 Jul 17:42

Added

  • Accessibility-identifier policy .ignore / .warn / .enforce
    (KassConfig.accessibilityIdentifierPolicy). .warn surfaces an Xcode message
    without failing; .enforce fails when an element is matched by label instead
    of a real accessibilityIdentifier.
  • 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.after now runs via addTeardownBlock, so it executes even
    after a hard failure.
  • Replaced KassConfig.requireAccessibilityIdentifiers: Bool with the
    accessibilityIdentifierPolicy enum.

Fixed

  • assertHasText / assertValueMatches now fall back to label when value
    is an empty string (e.g. SwiftUI Text).
  • setSwitch taps the inner switch control, so it toggles SwiftUI Toggles.

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")