Files
amare/openspec/changes/build-public-site/specs/web-accessibility/spec.md
manoel freitas 27f3cee855 feat: ship public site with SEO and visuals
Publish CMS content on public routes with responsive media,
accessibility checks, and deterministic visual baselines.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 08:36:59 -03:00

2.7 KiB

ADDED Requirements

Requirement: Public routes have no critical or serious accessibility issues

The system SHALL run automated accessibility checks on the public routes covered by the browser suite (SPEC §6.5, §13.8). A critical or serious issue MUST fail the suite.

Scenario: Critical issue blocks the suite

  • WHEN the automated accessibility check reports a critical or serious issue on a covered route
  • THEN the browser suite MUST fail and report the offending rule and selector

Scenario: Covered routes are checked

  • WHEN the accessibility suite runs
  • THEN the home, services listing, portfolio listing and case detail MUST each be checked

Requirement: Public pages use accessible semantic structure

Public pages SHALL provide semantic landmarks, exactly one h1 per page, a coherent heading order, alt text on every content image, and visible focus on interactive elements (SPEC §6.5).

Scenario: Single h1 per page

  • WHEN any public page is rendered
  • THEN exactly one h1 element MUST be present

Scenario: Landmarks are present

  • WHEN any public page is rendered
  • THEN header, main, nav and footer landmarks MUST be present

Scenario: Content images expose alt text

  • WHEN a page renders a cover or gallery image
  • THEN the alt attribute MUST contain the stored alt text

Requirement: Public pages are fully keyboard operable

Visitors SHALL be able to reach and activate every interactive element with the keyboard, with a visible focus indicator and a skip link to the main content.

Scenario: Keyboard reaches the primary CTA

  • WHEN a visitor navigates the home with the Tab key
  • THEN the primary CTA MUST receive focus with a visible indicator
  • AND activating it with the keyboard MUST navigate to the contact route
  • WHEN a visitor focuses the first element of a public page
  • THEN a skip link to the main content MUST be available

Requirement: Reduced motion preference is honored

The system SHALL suppress non-essential animation and transition when the user agent reports prefers-reduced-motion: reduce.

Scenario: Reduced motion disables transitions

  • GIVEN the browser reports prefers-reduced-motion: reduce
  • WHEN a public page is loaded
  • THEN decorative transitions and animations MUST NOT run

Requirement: Public pages emit no console errors

Covered public routes SHALL load without JavaScript console errors in a real browser (SPEC §13.8, §19).

Scenario: Console stays clean on covered routes

  • WHEN a covered public route is loaded in the browser suite
  • THEN the console MUST contain no error-level messages