Thanks for your interest in contributing.
cargo build --workspaceThe workspace contains these main crates:
accessibility-core— the cross-platform library (packages/accessibility-core).accessibility-cli— the binary (packages/accessibility-cli).accessibility-*-sys— platform-specific low-level bindings (packages/accessibility-*-sys).
Some platforms need extra libraries or services to build and run.
sudo apt-get install -y libdbus-1-dev libatspi2.0-dev libx11-xcb-devTo run the AT-SPI end-to-end tests you also need a session bus, the AT-SPI registry, and a GUI app to drive:
sudo apt-get install -y xvfb at-spi2-core gnome-calculator dbus-x11 libgtk-3-0The CLI uses the system Accessibility APIs, so the terminal (or whatever process invokes the CLI) needs the Accessibility permission in System Settings → Privacy & Security → Accessibility. macOS will prompt the first time you run the CLI; allow it and re-run.
End-to-end tests drive the built-in Calculator. Install via winget if it isn't already present:
winget install 9WZDNCRFHVN5 -s msstoreInstall the Android platform tools and put adb on PATH. Either set
ANDROID_HOME to your SDK root or accept the default
~/Library/Android/sdk (macOS) / ~/Android/Sdk (Linux). The Android tests
will spin up an emulator if one isn't already running.
Requires Xcode and at least one booted iOS Simulator runtime. The CLI loads
private Apple frameworks from the active Xcode toolchain — set the toolchain
with xcode-select if you have multiple installed.
Workspace-wide unit and integration tests:
cargo test --workspace --lib --bins
cargo test -p accessibility-cli --test cli_smokePer-platform end-to-end tests (run on the matching host):
# macOS
cargo test -p accessibility-core --test calculator_e2e -- --nocapture --test-threads=1
# Windows
cargo test -p accessibility-core --test calculator_windows_e2e -- --nocapture --test-threads=1
# Linux (under xvfb + dbus)
cargo test -p accessibility-core --test gnome_calculator_e2e -- --nocapture --test-threads=1
# Android (with `adb` available)
cargo test -p accessibility-core --test settings_android_e2e -- --ignored --nocapture --test-threads=1CI runs the matching e2e on each platform — see .github/workflows/pr-build.yml.
CI also runs Miri smoke tests and ASan/TSan smoke tests.
cargo fmt --all
cargo clippy --workspace --all-targets -- -D warningsBoth gate CI; please run them before sending a PR.
- Fork the repo, create a feature branch.
- Make changes plus tests where it makes sense.
- Run
fmt,clippy, and the relevant test suites. - Open a PR with a short description of the change and the platforms you verified on.
By contributing, you agree that your contributions will be dual-licensed under the MIT and Apache 2.0 licenses, the same terms as the rest of the project.