VA015-01 — aria-labelledby points to non-existent element (broken-ref)

FAIL — vesper-empty-heading, diagnosis: broken-ref. The aria-labelledby value "heading-label-does-not-exist" references an element that is not in the DOM. Expected failure summary: "aria-labelledby pointing to an element that does not exist".

Above: h2 with aria-labelledby="heading-label-does-not-exist" — referenced element missing from DOM.

VA015-02 — aria-labelledby target exists but is empty (broken-empty-ref)

FAIL — vesper-empty-heading, diagnosis: broken-empty-ref. The referenced element exists but contains no text. Expected failure summary mentions "referenced element contains no text".

Above: h3 with aria-labelledby="empty-heading-label" — the span exists in DOM but has no text content.

VA015-03 — aria-label explicitly set to empty string (empty-label)

FAIL — vesper-empty-heading, diagnosis: empty-label. aria-label="" is an explicitly empty accessible name. Expected failure summary: "aria-label="" (an explicitly empty accessible name)".

Above: h4 with aria-label="" — explicitly empty label attribute.

VA015-04 — Heading with no text content and no ARIA (missing)

FAIL — vesper-empty-heading, diagnosis: missing. No name source at all. Expected failure summary: standard CMS template message about suppressing empty heading elements.

Above: h5 with no text content and no ARIA name attributes.

VA015-05 — Heading with valid text (pass)

PASS — no violation. This heading has a clear, non-empty accessible name via its text content.

This is a valid heading with text content

Above: h2 with normal text content — should not appear in the violations report.

VA015-06 — Three empty headings on one page (instance count test)

FAIL — vesper-empty-heading, 3 instances. Tests VA-010: the violation description should read "3 heading elements on this page have no accessible text" (not "1 heading element"). All three are genuinely empty (missing diagnosis).

Empty h2 (instance 1 of 3)

Empty h3 (instance 2 of 3)

Empty h4 (instance 3 of 3)

Combined with the empty headings in sections 1-4 above, this page should produce one vesper-empty-heading violation with a total count of 7 instances (4 from above + 3 here). The description should state "7 heading elements on this page have no accessible text".