rerun-io/kittest

Automated GUI testing using accesskit

97

stars

65

commits

Rust

primary language

Sep 7, 2026

updated

README

💻🐈 kittest: UI Testing Library for Rust Powered by AccessKit

kittest is a GUI testing library for Rust, inspired by Testing Library. It leverages AccessKit to provide a framework-agnostic solution for testing user interfaces, with a focus on accessibility.

This library is designed to be flexible and works with any GUI framework that supports AccessKit. Creating new kittest integrations is simple and straightforward. To get started, check out our basic integration example.

Available Integrations

If you create a new integration, please open a PR to add it to this list!

Example usage with egui_kittest

use egui::accesskit::Toggled;
use egui_kittest::{Harness, kittest::Queryable};

fn main() {
    let mut checked = false;
    let app = |ui: &mut egui::Ui| {
        ui.checkbox(&mut checked, "Check me!");
    };

    let mut harness = Harness::new_ui(app);
    
    let checkbox = harness.get_by_label("Check me!");
    assert_eq!(checkbox.toggled(), Some(Toggled::False));
    checkbox.click();
    
    harness.run();

    let checkbox = harness.get_by_label("Check me!");
    assert_eq!(checkbox.toggled(), Some(Toggled::True));
}

Also see the querying example.

Contributors

lucasmerlin

50 commits

emilk

9 commits

DataTriny

2 commits

valadaptive

2 commits

rerun-io/kittest

Automated GUI testing using accesskit

97

stars

65

commits

Rust

primary language

Sep 7, 2026

updated

README

💻🐈 kittest: UI Testing Library for Rust Powered by AccessKit

kittest is a GUI testing library for Rust, inspired by Testing Library. It leverages AccessKit to provide a framework-agnostic solution for testing user interfaces, with a focus on accessibility.

This library is designed to be flexible and works with any GUI framework that supports AccessKit. Creating new kittest integrations is simple and straightforward. To get started, check out our basic integration example.

Available Integrations

If you create a new integration, please open a PR to add it to this list!

Example usage with egui_kittest

use egui::accesskit::Toggled;
use egui_kittest::{Harness, kittest::Queryable};

fn main() {
    let mut checked = false;
    let app = |ui: &mut egui::Ui| {
        ui.checkbox(&mut checked, "Check me!");
    };

    let mut harness = Harness::new_ui(app);
    
    let checkbox = harness.get_by_label("Check me!");
    assert_eq!(checkbox.toggled(), Some(Toggled::False));
    checkbox.click();
    
    harness.run();

    let checkbox = harness.get_by_label("Check me!");
    assert_eq!(checkbox.toggled(), Some(Toggled::True));
}

Also see the querying example.

Contributors

lucasmerlin

50 commits

emilk

9 commits

DataTriny

2 commits

valadaptive

2 commits

Languages

Rust

66.5%

Python

33.5%