Skip to content

a11y: gradebook announces no score value to screen readers ("Submitted slash 100") #915

Description

@jon-bell

For an agent on either AT runner.

Symptom

On the student gradebook, the score cell announces with no points value. From the NVDA log of run 31017279720, task gradebook__gradebook-assignment:

idx263: "link, View submission for Agent Assignment"  //  "Submitted slash 100"

The seeded submission scores 5/10 with a 100-point column, and the number a student actually wants — their score — is never spoken. VoiceOver on the same page reached only "Grade for Agent Assignment article", likewise with no score.

Why the lane was green anyway

GRADEBOOK_COLUMNS_TASK needles on assignmentName only (tools/a11y-judge/agent/tasks.ts), and the plan has zero milestones — so the task passes when the assignment name is heard, regardless of whether any score is reachable. The prompt asks the agent for "any score shown for it", but nothing asserts it.

While you are in there, the same log shows "no next heading" / "no next landmark" ×3 on that page, which suggests the gradebook's structure is thin for AT navigation generally.

Where to look

app/course/[course_id]/gradebook/ — how the score cell is rendered, and whether the value is in a visually-styled element that carries no text or is aria-hidden. Compare the DOM against what the accessibility tree exposes.

Definition of done

Beyond the visual fix: strengthening GRADEBOOK_COLUMNS_TASK to needle the score value (not just the assignment name) would make the lane actually guard this. Note the needle mechanism has a known weakness — bare numeric needles match incidental digits anywhere in the journey (see the memo in docs/a11y-session-memo-2026-08.md), so a score needle needs to be bound to context, not a bare 5.

Reproduce on the runner

npm run a11y:nvda -- --filter gradebook

Criteria: 1.3.1 Info and Relationships (A); 4.1.2 Name, Role, Value (A)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions