Crate re_viewer::external::egui_kittest
Expand description
§egui_kittest
Ui testing library for egui, based on kittest (an AccessKit based testing library).
§Example usage
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));
// Shrink the window size to the smallest size possible
harness.fit_contents();
// You can even render the ui and do image snapshot tests
#[cfg(all(feature = "wgpu", feature = "snapshot"))]
harness.snapshot("readme_example");
}
§Snapshot testing
There is a snapshot testing feature. To create snapshot tests, enable the snapshot
and wgpu
features.
Once enabled, you can call Harness::snapshot
to render the ui and save the image to the tests/snapshots
directory.
To update the snapshots, run your tests with UPDATE_SNAPSHOTS=true
, so e.g. UPDATE_SNAPSHOTS=true cargo test
.
Running with UPDATE_SNAPSHOTS=true
will cause the tests to succeed.
This is so that you can set UPDATE_SNAPSHOTS=true
and update all tests, without cargo test
failing on the first failing crate.
If you want to have multiple snapshots in the same test, it makes sense to collect the results in a Vec
(look here for an example).
This way they can all be updated at the same time.
You should add the following to your .gitignore
:
**/tests/snapshots/**/*.diff.png
**/tests/snapshots/**/*.new.png
§Feature flags
Modules§
- 💻🐈 kittest: UI Testing Library for Rust Powered by AccessKit
Structs§
- The test Harness. This contains everything needed to run the test. Create a new Harness using
Harness::new
orHarness::builder
. - Builder for
Harness
. - Utility to collect snapshot errors and display them at the end of the test.
Enums§
- A lazy renderer that initializes the renderer on the first render call.
Traits§
Functions§
- Image snapshot test. The snapshot will be saved under
tests/snapshots/{name}.png
. The new image from the last test run will be saved undertests/snapshots/{name}.new.png
. If the new image didn’t match the snapshot, a diff image will be saved undertests/snapshots/{name}.diff.png
. - Image snapshot test with custom options.
- Image snapshot test.
- Image snapshot test with custom options.