Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/facett

facett-plandag/tests/a11y_priority.rs

use egui_kittest::{
    Harness,
    kittest::{NodeT, Queryable},
};
use facett_core::Facet;
const COUNT: usize = 2_100;
fn name(i: usize) -> String {
    format!("late-node-{i:04}")
}
use facett_plandag::{Msg, PlanDagView, PlanModel, PlanNode, PlanVersion};
#[test]
fn selected_and_focused_late_node_remains_named_within_budget() {
    let mut view = PlanDagView::new(
        "crowded",
        PlanModel::new(PlanVersion::new(
            "initial",
            (0..COUNT)
                .map(|i| PlanNode::new(name(i), name(i)))
                .collect(),
            vec![],
        )),
    );
    view.load_state(&serde_json::json!({"selected":format!("node:{}",name(COUNT-1)),"show_constraints":false,"nav":{"scale":0.1,"offset":[100.0,100.0],"min_scale":0.05,"max_scale":64.0},"fitted":true}));

    let mut h = Harness::builder()
        .with_size(egui::vec2(900.0, 30_000.0))
        .build_ui_state(|ui, view: &mut PlanDagView| Facet::ui(view, ui), view);
    h.run();
    let late = format!("{} · done", name(COUNT - 1));
    assert_eq!(
        h.get_by_label(&late).accesskit_node().toggled(),
        Some(egui::accesskit::Toggled::True)
    );
    let count = |h: &Harness<'_, PlanDagView>| {
        h.get_all_by_role(egui::accesskit::Role::Button)
            .filter(|node| {
                node.accesskit_node()
                    .label()
                    .unwrap_or_default()
                    .starts_with("late-node-")
            })
            .count()
    };
    assert_eq!(
        count(&h),
        2_000,
        "all nodes visible; semantic budget remains bounded"
    );
    h.get_by_label(&late).focus();
    h.run();
    view_select_early(h.state_mut());
    h.run();
    assert!(
        h.get_by_label(&late).accesskit_node().label().is_some(),
        "focus retains late node after selection moves away"
    );
    assert_eq!(count(&h), 2_000);
}
fn view_select_early(view: &mut PlanDagView) {
    view.update(Msg::Select(format!("node:{}",name(0))));
}