Skip to main content

Crate a11y_report

Crate a11y_report 

Source
Expand description

Gemeinsames Befund- und Berichtsmodell für Accessibility-Werkzeuge.

Ein Regelbestand bedient drei Oberflächen — Build-Zeit, CI/Crawl und die laufende Seite — mit identischen Regelkennungen und identischem JSON. Dieses Crate definiert, was dabei herauskommt.

§Zwei Achsen, nicht drei

Outcome sagt, wie sicher die Aussage ist; Severity sagt, wie schwer das Problem wiegt. Eine dritte Achse „certainty“ gibt es bewusst nicht — eine nur heuristisch belegbare Regel liefert Outcome::Review, nicht Outcome::Fail mit niedriger Gewissheit.

use a11y_report::{Finding, Location, Report, Severity};

let mut report = Report::new();

// Eindeutig: das Attribut fehlt.
report.push(
    Finding::fail("images/alt-missing", "Das Bild besitzt kein alt-Attribut.")
        .with_severity(Severity::High)
        .with_wcag(["1.1.1"])
        .at(Location::file("about/index.html").with_selector("main > img:nth-child(2)")),
);

// Heuristisch: der Alt-Text ist da, aber womöglich nichtssagend.
report.push(
    Finding::review("images/alt-suspicious", "Der Alt-Text sieht nach einem Dateinamen aus.")
        .with_severity(Severity::Medium)
        .with_wcag(["1.1.1"]),
);

let report = report.finish();
assert_eq!(report.summary.fail, 1);
assert_eq!(report.summary.review, 1);
assert_eq!(report.summary.problems(), 2);

§Regeln, die nicht laufen konnten

Der Unterschied zwischen „lief und fand nichts“ und „konnte nicht laufen“ wird über RuleRun festgehalten. Ohne ihn liest sich eine Kontrastprüfung ohne Rendering-Zugriff wie eine bestandene Prüfung.

use a11y_report::{NotRun, Report, RuleRun};

let mut report = Report::new();
report.record(
    RuleRun::not_run("contrast/text", NotRun::CapabilityMissing)
        .with_reason("statische Analyse liefert keine Rendering-Werte"),
);
let report = report.finish();
assert_eq!(report.summary.rules_not_run, 1);

Structs§

Evidence
Woher ein Befund seine Tatsachenbasis hat. Macht nachvollziehbar, ob eine Aussage aus dem nativen Accessibility-Tree stammt, aus einem Attribut oder aus einer Messung — was je nach Oberfläche unterschiedlich verfügbar ist.
Extra
Werkzeugspezifische Beigabe an einem Finding oder RuleRun. Nie serialisiert.
Finding
Ein Prüfergebnis.
Location
Wo ein Befund sitzt. Die drei Oberflächen verorten unterschiedlich: astro-post-audit über Dateipfade, auditmysite über AXTree-Knoten, LiveAudit über den Index in seiner Arena. Alle Felder sind deshalb optional — welche gefüllt sind, hängt vom Host ab, nicht von der Regel.
Report
Das Gesamtergebnis eines Laufs.
RuleRun
Ein Ausführungsvermerk je Regel. Beantwortet „lief das überhaupt?“, während Finding beantwortet „was kam dabei heraus?”.
Summary
Zählwerk über einen Befundsatz. Bewusst keine Gesamtnote: Ein aggregierter Score würde genau die Unterscheidung einebnen, für die es die vier Zustände gibt.

Enums§

NotRun
Warum eine Regel nicht gelaufen ist.
Outcome
Wie sicher ist die Aussage über dieses Ergebnis?
Severity
Wie schwer wiegt das Problem — unabhängig davon, wie sicher es ist.
WcagLevel
WCAG-Konformitätsstufe des zugrundeliegenden Erfolgskriteriums.