Some checks failed
Architecture Lint / Lint Repository (push) Has been cancelled
Architecture Lint / Linter Tests (push) Has been cancelled
Smoke Test / smoke (push) Has been cancelled
Validate Config / YAML Lint (push) Has been cancelled
Validate Config / JSON Validate (push) Has been cancelled
Validate Config / Python Syntax & Import Check (push) Has been cancelled
Validate Config / Python Test Suite (push) Has been cancelled
Validate Config / Shell Script Lint (push) Has been cancelled
Validate Config / Cron Syntax Check (push) Has been cancelled
Validate Config / Deploy Script Dry Run (push) Has been cancelled
Validate Config / Playbook Schema Validation (push) Has been cancelled
Merge PR #556
5.9 KiB
5.9 KiB
Visual Accessibility Audit — Foundation Web Properties
Issue: timmy-config #492 Date: 2026-04-13 Label: gemma-4-multimodal Scope: forge.alexanderwhitestone.com (Gitea 1.25.4)
Executive Summary
The Foundation's primary accessible web property is the Gitea forge. The Matrix homeserver (matrix.timmy.foundation) is currently unreachable (DNS/SSL issues). This audit covers the forge across three page types: Homepage, Login, and Explore/Repositories.
Overall: 6 WCAG 2.1 AA violations found, 4 best-practice recommendations.
Pages Audited
| Page | URL | Status |
|---|---|---|
| Homepage | forge.alexanderwhitestone.com | Live |
| Sign In | forge.alexanderwhitestone.com/user/login | Live |
| Explore Repos | forge.alexanderwhitestone.com/explore/repos | Live |
| Matrix/Element | matrix.timmy.foundation | DOWN (DNS/SSL) |
Findings
P1 — Violations (WCAG 2.1 AA)
V1: No Skip Navigation Link (2.4.1)
- Pages: All
- Severity: Medium
- Description: No "Skip to content" link exists. Keyboard users must tab through the full navigation on every page load.
- Evidence: Programmatic check returned
skipNav: false - Fix: Add
<a href="#main" class="skip-link">Skip to content</a>visually hidden until focused.
V2: 25 Form Inputs Without Labels (1.3.1, 3.3.2)
- Pages: Explore/Repositories (filter dropdowns)
- Severity: High
- Description: The search input and all radio buttons in the Filter/Sort dropdowns lack programmatic label associations.
- Evidence: Programmatic check found 25 inputs without
label[for=],aria-label, oraria-labelledby - Affected inputs:
q(search),archived(x2),fork(x2),mirror(x2),template(x2),private(x2),sort(x12),clear-filter(x1) - Fix: Add
aria-label="Search repositories"to search input. Addaria-labelto each radio button group and individual options.
V3: Low-Contrast Footer Text (1.4.3)
- Pages: All
- Severity: Medium
- Description: Footer text (version, page render time) appears light gray on white, likely failing the 4.5:1 contrast ratio.
- Evidence: 30 elements flagged as potential low-contrast suspects.
- Fix: Darken footer text to at least
#767676on white (4.54:1 ratio).
V4: Green Link Color Fails Contrast (1.4.3)
- Pages: Homepage
- Severity: Medium
- Description: Inline links use medium-green (~#609926) on white. This shade typically fails 4.5:1 for normal body text.
- Evidence: Visual analysis identified green links ("run the binary", "Docker", "contributing") as potentially failing.
- Fix: Darken link color to at least
#507020or add an underline for non-color differentiation (SC 1.4.1).
V5: Missing Header/Banner Landmark (1.3.1)
- Pages: All
- Severity: Low
- Description: No
<header>orrole="banner"element found. The navigation bar is a<nav>but not wrapped in a banner landmark. - Evidence:
landmarks.banner: 0 - Fix: Wrap the top navigation in
<header>or addrole="banner".
V6: Heading Hierarchy Issue (1.3.1)
- Pages: Login
- Severity: Low
- Description: The Sign In heading is
<h4>rather than<h1>, breaking the heading hierarchy. The page has no<h1>. - Evidence: Accessibility tree shows
heading "Sign In" [level=4] - Fix: Use
<h1>for "Sign In" on the login page.
P2 — Best Practice Recommendations
R1: Add Password Visibility Toggle
- Page: Login
- Description: No show/hide toggle on the password field. This helps users with cognitive or motor impairments verify input.
R2: Add aria-required to Required Fields
- Page: Login
- Evidence:
inputsWithAriaRequired: 0(no inputs marked as required) - Description: The username field shows a red asterisk but has no
requiredoraria-required="true"attribute.
R3: Improve Star/Fork Link Labels
- Page: Explore Repos
- Description: Star and fork counts are bare numbers (e.g., "0", "2"). Screen readers announce these without context.
- Fix: Add
aria-label="2 stars"/aria-label="0 forks"to count links.
R4: Use <time> Elements for Timestamps
- Page: Explore Repos
- Description: Relative timestamps ("2 minutes ago") are human-readable but lack machine-readable fallbacks.
- Fix: Wrap in
<time datetime="2026-04-13T17:00:00Z">2 minutes ago</time>.
What's Working Well
- Color contrast (primary): Black text on white backgrounds — excellent 21:1 ratio.
- Heading structure (homepage): Clean h1 > h2 > h3 hierarchy.
- Landmark regions:
<main>and<nav>landmarks present. - Language attribute:
lang="en-US"set on<html>. - Link text: Descriptive — no "click here" or "read more" patterns found.
- Form layout: Login form uses clean single-column with good spacing.
- Submit button: Full-width, good contrast, large touch target.
- Navigation: Simple, consistent across pages.
Out of Scope
- matrix.timmy.foundation: Unreachable (DNS resolution failure / SSL cert mismatch). Should be re-audited when operational.
- Evennia web client (localhost:4001): Local-only, not publicly accessible.
- WCAG AAA criteria: This audit covers AA only.
Remediation Priority
| Priority | Issue | Effort |
|---|---|---|
| P1 | V2: 25 unlabeled inputs | Medium |
| P1 | V1: Skip nav link | Small |
| P1 | V4: Green link contrast | Small |
| P1 | V3: Footer text contrast | Small |
| P2 | V6: Heading hierarchy | Small |
| P2 | V5: Banner landmark | Small |
| P2 | R1-R4: Best practices | Small |
Automated Check Results
skipNav: false
headings: h1(3), h4(1)
imgsNoAlt: 0 / 1
inputsNoLabel: 25
genericLinks: 0
lowContrastSuspects: 30
inputsWithAriaRequired: 0
landmarks: main=1, nav=2, banner=0, contentinfo=2
hasLang: true (en-US)
Generated via visual + programmatic analysis of forge.alexanderwhitestone.com