use std::sync::Arc;
use std::time::Duration;
use cosh_tools::computer::types::{AppsTarget, ComputerApps};
use xa11y::{App, Element, Locator, Provider, mock};
fn main() {
let all = ComputerApps::default();
let focused = ComputerApps {
target: Some(AppsTarget::Focused),
timeout_ms: Some(5000),
};
let _ = (all, focused);
let provider: Arc<dyn Provider> = mock::build_provider();
let app = App::by_pid_with(mock::build_provider(), 1234, Duration::from_secs(3))
.expect("the mock provider registers TestApp at pid 1234");
let button = Locator::new(provider, Some(app.data.clone()), "button")
.wait_visible(Duration::from_secs(1))
.expect("the mock shell carries buttons");
println!("resolved element: {}", element_summary(&button));
}
fn element_summary(element: &Element) -> String {
let data = element.data();
match data.name.as_deref() {
Some(name) => format!("{:?} '{name}'", data.role),
None => format!("{:?}", data.role),
}
}