This commit is contained in:
@@ -29,3 +29,44 @@ Run automated accessibility testing in CI.
|
||||
Serious accessibility regressions should fail CI.
|
||||
|
||||
Automated tests do not replace manual keyboard and assistive-technology review for important workflows.
|
||||
|
||||
## Public browsing review — 2026-09-10
|
||||
|
||||
Scope: catalog filters and listing links, listing/product detail states, image
|
||||
selection, condition display, and seller contact links. Fixtures use public DTO
|
||||
shapes, including `url`/`altText`, ten images, and a long seller email.
|
||||
|
||||
Findings fixed:
|
||||
|
||||
- Gallery buttons now use API `altText`, with legacy `alt` and label fallbacks,
|
||||
rather than announcing “undefined”. Controls form a named group and wrap.
|
||||
- Failed API `url` images now announce an unavailable image rather than claiming
|
||||
no image exists.
|
||||
- Detail text and grid children reflow without forcing horizontal scrolling;
|
||||
long seller contact addresses remain readable and focusable.
|
||||
- Read-only detail conditions are text, removing a button that had no action.
|
||||
- Listing and product loading/error messages expose status/alert roles.
|
||||
|
||||
Browser review: Codex in-app browser, keyboard and accessibility-tree inspection,
|
||||
with screenshots checked at a 320px viewport. Tab/Enter select gallery images,
|
||||
selection remains indicated, Tab reaches email then phone without a condition
|
||||
button detour, and focus outlines remain visible. The populated catalog's filter
|
||||
disclosure opens via Enter; expanded filters and the listing card fit at 320px.
|
||||
Contact targets were inspected without launching email or telephone applications.
|
||||
|
||||
Enlargement review: 640px viewport (the CSS layout width of a 1280px browser at
|
||||
200% zoom), additionally with root text enlarged to 200%. Detail text, gallery
|
||||
controls, and seller links remain readable and keyboard-accessible without
|
||||
horizontal scrolling. This is reflow/text-resize coverage, not a native browser
|
||||
zoom result: browser-zoom shortcuts were unavailable in the review browser.
|
||||
|
||||
Regression coverage: mobile catalog filter keyboard interaction and listing
|
||||
focus/link target; gallery selection and contact focus order; narrow and enlarged
|
||||
reflow assertions; read-only condition story; broken API image fallback; and
|
||||
loading/not-found announcements on both public detail pages. Existing light/dark,
|
||||
empty-image, sold, and pending stories remain part of the accessibility gate.
|
||||
|
||||
Remaining manual coverage: native browser zoom, screen-reader speech and route
|
||||
announcements (VoiceOver/Safari or NVDA/Firefox), and the full live-data navigation
|
||||
journey. Automated checks and accessibility-tree inspection do not certify WCAG
|
||||
conformance or replace those reviews.
|
||||
|
||||
@@ -122,7 +122,7 @@ docker context use orbstack
|
||||
|
||||
Verified locally: `npm test` passes 166 tests with no failures (23 domain, 79 application, and 64 HTTP); worker tests, web tests, web build, Storybook build, Storybook interaction/accessibility checks, integration tests, and authenticated E2E workflows also pass when their required local services and credentials are available.
|
||||
|
||||
### Latest Vertical Slice: Public Seller Description
|
||||
### Public Seller Description
|
||||
|
||||
- Sellers can save, edit, and clear an optional public description in Settings.
|
||||
- Descriptions are trimmed plain text, limited to 2,000 characters server-side, and stored in existing seller settings JSON without a migration.
|
||||
@@ -131,7 +131,14 @@ Verified locally: `npm test` passes 166 tests with no failures (23 domain, 79 ap
|
||||
- Coverage includes validation/partial-update/clearing tests, public HTTP contracts, PostgreSQL repository reads, settings edit/clear interactions, both public page integrations, and absent/plain-text/dark-theme component stories.
|
||||
- Validation: 166 API tests, 23 isolated PostgreSQL/Redis integration tests, 10 web tests, production web build, Storybook build, and Storybook interaction/accessibility runner (32 suites / 84 tests).
|
||||
|
||||
Next bounded slice: review the public catalog → listing/product detail → seller contact journey with keyboard navigation, mobile layout, and 200% zoom; fix discovered accessibility issues and add regression stories/tests. Record manual results in `docs/ACCESSIBILITY.md`. This advances the documented accessibility milestone without requiring external provider credentials.
|
||||
### Latest Vertical Slice: Public Browsing Accessibility
|
||||
|
||||
- Public gallery labels use API image descriptions, controls wrap at narrow widths, and failed API image URLs have an accurate accessible fallback.
|
||||
- Long detail text and seller contacts reflow, read-only condition badges no longer add inactive buttons to keyboard navigation, and detail loading/errors expose announcement roles.
|
||||
- Added keyboard, 320px reflow, 200% text enlargement, and detail-state regression stories. Browser review and its native-zoom/screen-reader limitations are recorded in `docs/ACCESSIBILITY.md`.
|
||||
- Validation: 166 API tests, 10 web tests, production web build, Storybook build, and 32 Storybook suites / 93 tests. This frontend-only slice changes no persistence or API contracts.
|
||||
|
||||
Next bounded slice: public route navigation accessibility. Review catalog → listing/product → back navigation with a screen reader, add appropriate page titles and route-focus handling where missing, and cover navigation in browser tests. Include native 200% zoom review.
|
||||
|
||||
## Next Milestone
|
||||
|
||||
|
||||
Reference in New Issue
Block a user