use egui::Vec2;
use egui_kittest::{HarnessBuilder, SnapshotOptions};
#[derive(Clone, Copy, Debug)]
pub enum TestOptions {
Gui,
Rendering3D,
}
pub fn new_harness<T>(option: TestOptions, size: impl Into<Vec2>) -> HarnessBuilder<T> {
let size = size.into();
let options = match option {
TestOptions::Gui => default_snapshot_options_for_ui(),
TestOptions::Rendering3D => default_snapshot_options_for_3d(size),
};
let mut builder = egui_kittest::Harness::builder().wgpu().with_size(size);
let _unit: () = builder.with_options(options);
builder
}
fn default_snapshot_options_for_ui() -> SnapshotOptions {
SnapshotOptions::default().failed_pixel_count_threshold(10) }
fn default_snapshot_options_for_3d(viewport_size: Vec2) -> SnapshotOptions {
let num_total_pixels = viewport_size.x * viewport_size.y;
let broken_pixels_fraction = 2e-4;
let max_broken_pixels = (num_total_pixels * broken_pixels_fraction).round() as usize;
let threshold = 1.5;
SnapshotOptions::default()
.threshold(threshold)
.failed_pixel_count_threshold(max_broken_pixels)
}