use core::time::Duration;
use hydrolysis_m3::install;
use waterui::reactive::binding;
use waterui_controls::toggle;
use waterui_core::View;
use waterui_testing::{OffscreenApp, Role};
fn save(app: &mut OffscreenApp, stage: &str) {
let _ = app.capture_snapshot("material3-preview", "switch", stage);
}
fn wifi_toggle_view() -> impl View {
let value = binding(false);
toggle("Wi-Fi", &value)
}
#[ignore = "writes visual acceptance PNG files for direct image review"]
#[waterui::test(wifi_toggle_view, theme = install, viewport = (200, 120), offscreen)]
fn switch_toggle_slides_and_reveals_checkmark(app: &mut OffscreenApp) {
assert!(
app.query()
.role(Role::SWITCH)
.label("Wi-Fi")
.wait_for_existence(Duration::from_secs(3)),
"toggle must mount"
);
save(app, "off");
let bounds = app
.query()
.role(Role::SWITCH)
.label("Wi-Fi")
.single()
.bounds();
let (cx, cy) = (
bounds.x() + bounds.width() / 2.0,
bounds.y() + bounds.height() / 2.0,
);
app.queue_pointer_down(cx, cy);
let _ = app.snapshot();
app.queue_pointer_up(cx, cy);
let _ = app.snapshot();
app.pump_for(Duration::from_millis(60));
save(app, "toggling-60ms");
app.queue_pointer_move(5.0, 5.0);
app.pump_for(Duration::from_millis(500));
save(app, "on-idle");
app.queue_pointer_down(cx, cy);
let _ = app.snapshot();
app.queue_pointer_up(cx, cy);
let _ = app.snapshot();
app.pump_for(Duration::from_millis(60));
save(app, "untoggling-60ms");
app.queue_pointer_move(5.0, 5.0);
app.pump_for(Duration::from_millis(500));
save(app, "off-idle");
}