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

nordisk/facett

facett-brokkrview/tests/a11y_priority.rs

use egui_kittest::{
    Harness,
    kittest::{NodeT, Queryable},
};
use facett_core::{Elm, Facet};
const COUNT: usize = 2_100;
fn name(i: usize) -> String {
    format!("late-node-{i:04}")
}
use facett_brokkrview::{BrokkrView, BrokkrViewMsg, DagNode, DagView, TreeView, ViewMode};
#[test]
fn selected_and_focused_late_node_remains_named_within_budget() {
    let mut view = BrokkrView::new(
        "crowded",
        vec![],
        TreeView::default(),
        DagView {
            nodes: (0..COUNT)
                .map(|i| DagNode {
                    step: name(i),
                    stage: "stage".into(),
                    status: "passed".into(),
                    disposition: None,
                })
                .collect(),
            edges: vec![],
        },
    );
    view.update(BrokkrViewMsg::SetView(ViewMode::Dag));
    view.update(BrokkrViewMsg::SelectStep(name(COUNT - 1)));

    let mut h = Harness::builder()
        .with_size(egui::vec2(900.0, 30_000.0))
        .build_ui_state(|ui, view: &mut BrokkrView| Facet::ui(view, ui), view);
    h.run();
    let late = format!("{} · stage · passed", name(COUNT - 1));
    assert_eq!(
        h.get_by_label(&late).accesskit_node().toggled(),
        Some(egui::accesskit::Toggled::True)
    );
    let count = |h: &Harness<'_, BrokkrView>| {
        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();
    h.state_mut().update(BrokkrViewMsg::SelectStep(name(0)));
    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);
}