Skip to content
CAI
Software that uses CAICheck a score

cameroncooke/AXe

58.8

Adequate · 1 October 2026

9.3k

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is AXe, a command-line interface and automation framework designed for controlling iOS simulators and interacting with their accessibility hierarchies. It provides capabilities for executing precise UI interactions such as taps, swipes, and gestures, as well as capturing video streams and managing batched automation workflows. The tool includes a dedicated playground application for regression testing and supports release automation through Homebrew distribution and comprehensive end-to-end testing infrastructure.

Features

Expanded accessibility regression fixtures and gesture testing views

The AxePlayground app now includes a comprehensive suite of new SwiftUI views designed to serve as deterministic fixtures for UI automation and accessibility regression testing. New test screens have been added for Slider, Searchable List, Toolbar Picker, Alert, Sheet, Button simulation, Landscape Coordinates, Switch (including UIKit interoperability), TabView, and Key Press detection. Existing views have been updated to improve automation reliability: the Swipe test now uses global coordinates and displays path details, the Tap test labels have been clarified, the Gesture Preset view now exposes the latest detected gesture via an accessibility identifier, and the Text Input view disables autocorrection and autocapitalization to ensure consistent input behavior during automated runs.

AxePlaygroundApp/AxePlayground/Views · high confidence

Expanded test playground with new hardware, batch, and accessibility test screens

The AxePlayground app now includes a significantly larger set of test screens organized into new categories: Hardware (button press detection), Batch (state changes and login flows), Accessibility (slider values, search fields, toolbar pickers), and Presentation (alerts, sheets, context menus, modal navigation, long scroll). The main menu has been restructured to reflect these categories, and the Swipe Test has been moved from a standard navigation destination to a full-screen modal to better simulate specific interaction patterns.

AxePlaygroundApp/AxePlayground · high confidence

New AXe CLI commands for batch automation, video capture, and precise interaction

This release adds several new commands to the AXe CLI. The \batch\ command allows users to execute ordered interaction steps (tap, swipe, gesture, touch, type, button, key, key-sequence, key-combo) in a single run, with options to load steps from arguments, files, or stdin, and to configure accessibility caching, type submission modes, and error handling. A new \drag\ command enables low-level point-to-point drags with explicit touch move events, configurable duration, steps, and delays. The \key-combo\ command supports atomic modifier+key presses. Video capabilities are expanded with \screenshot\ for PNG capture, \record-video\ for H.264 MP4 recording, and \stream-video\ for streaming simulator frames in various formats (MJPEG, raw, ffmpeg, BGRA). Additionally, the \slider\ command provides deterministic slider value setting via accessibility selectors, and the \init\ command installs or uninstalls AXe skill files for AI clients.

Sources · high confidence

New release automation, testing, and benchmarking scripts

The repository now includes a comprehensive suite of new scripts to manage the build, release, and testing lifecycle. A new release pipeline is established with \release.sh\ for semver bumping, \release-artifacts.sh\ for packaging universal binaries and Homebrew formulas, and \release-context.mjs\ for managing staging and production workflow states. Supporting scripts like \generate-homebrew-formula.sh\ and \update-homebrew-tap.sh\ automate Homebrew distribution, while \e2e-environment.sh\ and \regenerate-goldens.sh\ standardize end-to-end testing and golden file generation across Xcode versions. Additionally, \benchmark\_batch.sh\ provides a tool for comparing the performance of batched versus non-batched automation workflows, and \release-dry-run.sh\ allows for local validation of the entire release process.

scripts · high confidence

Behavioural changes

AXe v1.8.0 release with Xcode 27 support and stability fixes

This release adds support for Xcode 27 and iOS 27 simulator automation via Device Hub (without requiring Simulator.app) while retaining Xcode 26 compatibility. It strengthens release supply-chain integrity with immutable, verified IDB sources and stricter validation of release inputs and signing identities. Bug fixes include correcting BGRA video streams to respect the requested --fps value, resolving release archive failures caused by embedded filesystem metadata (AppleDouble), and improving error handling so commands expose actionable failure messages instead of low-level simulator errors.

(repo-wide) · high confidence

Refactors VersionPlugin import order and formatting

The VersionPlugin build tool has been updated to import Foundation before PackagePlugin and applies standard Swift formatting (whitespace and trailing commas). The target parameter in createBuildCommands is now explicitly ignored. These changes do not alter the plugin's behavior of generating a Version.swift file based on environment variables, git tags, or a fallback value.

Plugins/VersionPlugin · medium confidence

Removed FBControlCore XCFramework from build products

The FBControlCore XCFramework, including its macOS binary and all associated headers, has been removed from the build\_products directory. This change eliminates the pre-built framework artifact from the repository, likely as part of a broader update to the IDB/XCFramework dependencies.

_build\products · high confidence

Test coverage

Comprehensive test coverage for AXe commands and infrastructure

Added a new suite of unit and end-to-end tests for the AXe automation tool. These tests verify the correctness of the accessibility hierarchy serialization and target resolution logic, including precise tap point calculation for switch-like controls. They also validate the new batch command's ability to execute ordered steps, handle file/stdin input, manage caching strategies (per-step vs. per-batch), and correctly translate coordinates in landscape orientations. Additional tests cover the new button command (Home, Lock, Side, Apple Pay, Siri), the describe-ui command's point lookup and SwiftUI TabView exposure, drag gesture validation, gesture presets, and the robustness of the HID broker's startup, liveness, and readiness detection mechanisms.

Tests · high confidence

Dependencies

Modularize AXe into AXeCore library and add test target

The AXe package is restructured to extract core functionality into a new \AXeCore\ library target, which is then depended upon by the main \axe\ executable. This change also introduces a dedicated \AXeTests\ test target and configures the build to include private header search paths for IDB-related frameworks, ensuring proper compilation and linking for simulator control features.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 59 → 59 (-0.7)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 91 → 91 (-0.5)
  • Architecture 91 → 98 (+6.1)
  • Maturity 52 → 52 (-0.2)
  • Readiness 58 → 53 (-4.7)
  • Security 54 → 54 (+0.0)
  • Performance 100 (new)

Resolved (3)

  • Documentation: no installation or build instructions (README.md)
  • Hotspot: Sources/AXe/Commands/Swipe.swift (Sources/AXe/Commands/Swipe.swift)
  • Hotspot: Sources/AXe/Utilities/AccessibilityFetcher.swift (Sources/AXe/Utilities/AccessibilityFetcher.swift)

New (12)

  • Coverage not measured — Swift suite
  • Duplicated block (10–11 lines × 3) (AxePlaygroundApp/AxePlayground/Views/ButtonTestView.swift)
  • Duplicated block (13 lines × 2) (AxePlaygroundApp/AxePlayground/Views/TapTestView.swift)
  • Duplicated block (14 lines × 2) (AxePlaygroundApp/AxePlayground/Views/TapTestView.swift)
  • Duplicated block (17 lines × 2) (AxePlaygroundApp/AxePlayground/Views/ButtonTestView.swift)
  • Duplicated block (5 lines × 2) (AxePlaygroundApp/AxePlayground/Views/TapTestView.swift)
  • Duplicated block (8 lines × 2) (Sources/AXe/Types/KeyCode.swift)
  • GesturePresetsView.body (cognitive 17) (AxePlaygroundApp/AxePlayground/Views/GesturePresetsView.swift)
  • MethodTooLong: GesturePresetsView.body (AxePlaygroundApp/AxePlayground/Views/GesturePresetsView.swift)
  • Orphaned files with no living knowledge
  • Outdated: swift-argument-parser
  • Repeated repair: Sources/AXe/Utilities/Batch/Command+BatchConvertible.swift (Sources/AXe/Utilities/Batch/Command+BatchConvertible.swift)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

cameroncooke/AXe was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 30f4bfa9bc81817906a60fadedbc913d7314b7e1 — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.