web: ten accessibility and UX findings from the forge comparison #232

closed cmc opened this on 2026-09-19 06:21 UTC

Discussion

cmc 2026-09-19 06:21 UTC

Findings from an axe-core 4.10 scan of gitbay.org (v1.29.0, a55ff45) at 1280px and 390px in both colour schemes, checked by hand in a browser, and compared against GitHub, GitLab, Forgejo, Gitea and SourceHut measured the same way. gitbay passes contrast, skip link, landmarks, one h1 per page, focus ring, labelled inputs and works without JavaScript. What it does not pass, ranked by impact:

  1. Links in meta text are colour-only (WCAG 1.4.1). Author, sha, milestone, MR and archive links sit in muted text with no underline; link-to-surrounding contrast is 1.07:1 dark and 1.39:1 light against a 3:1 floor. axe link-in-text-block: 21 nodes on an issue page, 47 on releases, 5 on the issue list, 2 on an MR, 1 each on login, register, landing. Cause: a { text-decoration: none } at style.css:210 with underlines only under .rendered and footer.

  2. File view line numbers are 18px targets (WCAG 2.5.8). .lnlinks boxes are 26.5x18 stacked with no gap; 287 nodes on a 287-line blob. history · blame · raw on the same page are 21px tall.

  3. Scrolling code blocks cannot take focus (WCAG 2.1.1). pre.quickstart on the landing page and rendered pre.chroma blocks (5 on the repo README at 390px) overflow horizontally with no tabindex.

  4. Below 62rem the issue and MR aside is ordered before the body (style.css:1462, order: -1). On a 390x900 phone the first screen of an MR is checks, reviews, reviewers, source and target, labels; the description starts about 1000px down.

  5. File tree clips at 320px (WCAG 1.4.10, the 400% zoom case). table.tree is 328px wide inside a 320px card that hides overflow, so the updated column and the tip-bar sha chip lose their last characters. The page itself does not scroll sideways.

  6. Unmatched sub-routes 404 as plain text. /krz/gitbay/mrs/315/files returns Go's http.NotFound (19 bytes of text/plain, no layout, no link); /krz/gitbay/issues/99999 renders 404.html.

  7. README badge image has no alt text (WCAG 1.1.1, 2.4.4). The org renderer emits <a href=…><img src=…/></a> with no alt and no link text for a linked image with no description. axe image-alt critical and link-name serious.

  8. Releases page heading order is h1 then h3 (WCAG 1.3.1). Release titles in releases.html are <h3>.

  9. Nothing is compressed on the wire. Accept-Encoding is ignored: style.css is 67191 bytes as served, 14751 gzipped; the repo page 22 KB where 6 KB would do.

  10. Theme follows the OS only. Tokens are redefined under prefers-color-scheme: dark alone; there is no user setting and no data-theme hook. GitHub, GitLab and Forgejo offer light, dark and system. No forced-colors handling either.

Details, captures and the per-finding fix are on the findings page; the scan runner is .claude/screenshots/audit/ in the main checkout.

referenced in commit 1a40b22072 by cmc: e2e: web theme show in the read-only command table

2026-09-19 14:26 UTC

closed by cmc in commit fd81fb5899: web: the ten findings from the forge comparison

2026-09-19 14:26 UTC