Skip to content

Frontend lacks a main-content skip link for keyboard users #2597

Description

@romanlutz

Describe the bug

The application shell has no skip link or equivalent bypass control. On every route, keyboard users must traverse the same nine shell controls before they can reach the page's main content.

This makes repeated keyboard navigation unnecessarily costly and does not satisfy the bypass-blocks expectation in WCAG 2.4.1.

Steps/Code to Reproduce

  1. Open the frontend Home page with no element focused.
  2. Press Tab repeatedly.
  3. Observe focus moving through Take a tour, five primary navigation controls, Feedback, Security, and Theme.
  4. Main content is first reached on the 10th Tab press.
  5. Inspect the page for a skip or bypass control. None is present.

Expected Results

The first focusable control should be a visible-on-focus link that moves focus directly to the existing application main landmark. The link should work consistently on every route and remain keyboard-accessible in both themes and responsive layouts.

Actual Results

There are zero bypass controls. Keyboard users must traverse nine repeated shell controls before reaching route content each time.

MainLayout.tsx already owns the application main landmark, so it can provide the stable destination for a skip link.

Screenshots

Session-local audit evidence: daily-2026-09-07/manual/keyboard-bypass-ux.json records the complete focus sequence and confirms zero bypass candidates.

Versions

  • OS: Windows
  • Browser: Chromium through Playwright 1.62.1
  • Python: 3.14.4
  • Frontend: 1.2.0-dev.0
  • PyRIT: main at 623d57a3b26e214f53e671c593953b21da6d8b77
  • Python package listing: N/A; this is a frontend accessibility defect.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions