Inbox, Leeslijst and Instellingen have no h1 #230

Closed
opened 2026-08-05 20:44:35 +00:00 by robbertbos · 0 comments
Owner

An axe scan across all nine routes (added in #224 as tests/e2e/landmarks.spec.ts) reports page-has-heading-one on three routes:

AXE /:              moderate/page-has-heading-one x1
AXE /leeslijst:     moderate/page-has-heading-one x1
AXE /instellingen:  moderate/page-has-heading-one x1
AXE /concept-berichten, /uitgaande-post, /notities, /voorwaarden, /inloggen, /account-verwijderd: clean

The clean ones get theirs from OverzichtShell.vue:26 (<h1>{{ title }}</h1>) or write one directly. The three above have none:

  • Inbox and Leeslijst have no page title at all in the design; their headings start at the section level ("Doe nu", "Voltooid").
  • Instellingen jumps straight to <h2> five times (Settings.vue:25,40,49,62,76) with no h1 above them.

page-has-heading-one is an axe best-practice rule, not a WCAG success criterion, so this is not a compliance failure. It does affect screen-reader users who navigate by heading: on these three routes there is no top-level heading to orient on, and on Instellingen the outline starts one level down.

Needs a design call before implementation, which is why it is not folded into #224:

  • Do Inbox and Leeslijst get a visible page title, or a visually-hidden <h1>? A visible one changes the layout of the two busiest screens; a hidden one is invisible debt but matches the current design.
  • On Instellingen an <h1>Instellingen</h1> above the sections is the obvious fix and probably wants to be visible.

Once settled, widen RULES in tests/e2e/landmarks.spec.ts to include page-has-heading-one; the test is scoped to landmark-one-main and region today precisely so this gap stays visible rather than being allowlisted away.

An axe scan across all nine routes (added in #224 as `tests/e2e/landmarks.spec.ts`) reports `page-has-heading-one` on three routes: ``` AXE /: moderate/page-has-heading-one x1 AXE /leeslijst: moderate/page-has-heading-one x1 AXE /instellingen: moderate/page-has-heading-one x1 AXE /concept-berichten, /uitgaande-post, /notities, /voorwaarden, /inloggen, /account-verwijderd: clean ``` The clean ones get theirs from `OverzichtShell.vue:26` (`<h1>{{ title }}</h1>`) or write one directly. The three above have none: - **Inbox** and **Leeslijst** have no page title at all in the design; their headings start at the section level ("Doe nu", "Voltooid"). - **Instellingen** jumps straight to `<h2>` five times (`Settings.vue:25,40,49,62,76`) with no h1 above them. `page-has-heading-one` is an axe best-practice rule, not a WCAG success criterion, so this is not a compliance failure. It does affect screen-reader users who navigate by heading: on these three routes there is no top-level heading to orient on, and on Instellingen the outline starts one level down. Needs a design call before implementation, which is why it is not folded into #224: - Do Inbox and Leeslijst get a visible page title, or a visually-hidden `<h1>`? A visible one changes the layout of the two busiest screens; a hidden one is invisible debt but matches the current design. - On Instellingen an `<h1>Instellingen</h1>` above the sections is the obvious fix and probably wants to be visible. Once settled, widen `RULES` in `tests/e2e/landmarks.spec.ts` to include `page-has-heading-one`; the test is scoped to `landmark-one-main` and `region` today precisely so this gap stays visible rather than being allowlisted away.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
robbertbos/waggle#230
No description provided.