1
0
forked from rosa/hakurei

cmd/pkgserver: aria-describe test node summary with state

The summary marker does not appear in the AOM, so setting its alt text
is fruitless.
This commit is contained in:
Kat
2026-03-23 00:44:29 +11:00
parent 4385922bb8
commit 20cfb8201c
2 changed files with 13 additions and 5 deletions

View File

@@ -303,6 +303,7 @@ export class DOMReporter implements Reporter {
if (!parent) throwNotInDOMError("root");
for (const node of path) {
let child: HTMLDetailsElement | null = null;
let summary: HTMLElement | null = null;
let d: Element;
outer: for (d of parent.children) {
if (!(d instanceof HTMLDetailsElement)) continue;
@@ -310,6 +311,7 @@ export class DOMReporter implements Reporter {
if (!(s instanceof HTMLElement)) continue;
if (!(s.tagName === "SUMMARY" && s.innerText === node)) continue;
child = d;
summary = s;
break outer;
}
}
@@ -317,12 +319,13 @@ export class DOMReporter implements Reporter {
child = document.createElement("details");
child.className = "test-node";
child.ariaRoleDescription = "test";
const summary = document.createElement("summary");
summary = document.createElement("summary");
summary.appendChild(document.createTextNode(node));
summary.ariaRoleDescription = "test name";
child.appendChild(summary);
parent.appendChild(child);
}
if (!summary) throw new Error("unreachable as assigned above");
switch (result.state) {
case "failure":
@@ -330,17 +333,18 @@ export class DOMReporter implements Reporter {
child.classList.add("failure");
child.classList.remove("skip");
child.classList.remove("success");
summary.setAttribute("aria-labelledby", "failure-description");
break;
case "skip":
if (child.classList.contains("failure")) break;
child.classList.add("skip");
child.classList.remove("success");
summary.setAttribute("aria-labelledby", "skip-description");
break;
case "success":
if (!(child.classList.contains("failure") ||
child.classList.contains("skip"))) {
child.classList.add("success");
}
if (child.classList.contains("failure") || child.classList.contains("skip")) break;
child.classList.add("success");
summary.setAttribute("aria-labelledby", "success-description");
break;
}