quarto-dev / quarto-dev/quarto-cli

a11y: default listing emits empty <a> when a post has no subtitle (link-name)

Open Beginner friendly
#14,380 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

accessibility bug
Dominant language
JavaScript
Stars
6k
Forks
458
Avg merge
1d 9h
Merged PRs (30d)
41

Description

Reported in #14373.

Repro: https://github.com/alexpghayes/quarto-accessibility-reprex

axe rule: link-name · impact: serious · tag: wcag2a (2.4.4)
Target: .listing-subtitle > a.no-external — rendered as <a href="..." class="no-external" data-original-href="..."></a> (empty)

The default listing template renders an anchor inside .listing-subtitle for every post even when the post has no subtitle field. The anchor is empty (no text, no aria-label, no title), ends up in the tab order, and fails link-name. The template should skip the subtitle wrapper when no subtitle is present, or render it without a focusable anchor.

Different element than #7088 (which was a listing body-level empty <a>, fixed in v1.4).

Part of #8706.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the default listing template and reproduce the issue using the linked accessibility reprex. Inspect the .listing-subtitle > a.no-external output when a post has no subtitle, then verify with axe's link-name rule that no empty focusable anchor is rendered while posts with subtitles still work.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
accessibility, frontend
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.