Context: PR #28 (feat/public-screens) shipped screen smoke tests for Home, ProjectsIndex, ProjectDetail, HelpWantedIndex — the screens with the most spec-bound Display Rules. The remaining screens were exercised only via the build + browser walkthrough, not unit tests.
Add smoke tests for:
Each test: render with renderScreen() from apps/web/tests/test-utils.tsx, mock fetch with mockOk / mockPaginated, assert two or three load-bearing Display Rules from the spec.
Scoped small enough for a single follow-up PR.
Context: PR #28 (
feat/public-screens) shipped screen smoke tests for Home, ProjectsIndex, ProjectDetail, HelpWantedIndex — the screens with the most spec-bound Display Rules. The remaining screens were exercised only via the build + browser walkthrough, not unit tests.Add smoke tests for:
PersonDetail— renders fullName + "Member since {month yyyy}" + projects list sorted by maintainer / joinedAtTagDetail— renders the three sections (Projects / Help-wanted / Members), hides Members oneventnamespaceProjectUpdatesFeed— renders cards reverse-chron, filtered empty stateProjectBuzzFeed— same shape, external-link headlinesVolunteer— hero CTA toggles on auth state, live project count uses /api/projects?perPage=1Sponsor— static content + copy-to-clipboard buttonEach test: render with
renderScreen()fromapps/web/tests/test-utils.tsx, mockfetchwithmockOk/mockPaginated, assert two or three load-bearing Display Rules from the spec.Scoped small enough for a single follow-up PR.