Skip to content

feat: placeholder pages, user menu, fuzzy search, and e2e tests (#89)#101

Merged
suesuee merged 1 commit intodevelopfrom
feat/placeholder-pages-89
Mar 4, 2026
Merged

feat: placeholder pages, user menu, fuzzy search, and e2e tests (#89)#101
suesuee merged 1 commit intodevelopfrom
feat/placeholder-pages-89

Conversation

@kevinrutledge
Copy link
Copy Markdown
Collaborator

Developer

Kevin Rutledge

Closes #89

What changed?

Placeholder pages

  • Created ComingSoonPage reusable component with icon, title, and description
  • Added /messages, /events, /settings routes using ComingSoonPage

User menu & logout

  • Extracted UserMenu dropdown component from top bar (Profile, Account Settings, Sign out)
  • logout server action clears auth cookie and redirects to /dev/mock-portal

Fuzzy search

  • Wired top-bar search input to filter current page's group cards client-side using fuse.js
  • Created TopBarSearchProvider context (mirrors TopBarActionContext pattern), useDebounce hook, and useFuzzySearch hook
  • Search clears automatically on route change
  • Shows "No groups match your search." empty state when no results
  • Extracted HomeContent client wrapper from server component home/page.tsx to support search

UI polish

  • Sidebar active item highlight with bg-paso-light-brown and px-2 nav padding
  • Top bar action button color changed to bg-paso-light-brown
  • 4-column grid at 2xl breakpoint on groups and home pages

Member management bug fix

  • Fixed removeMembers to accept memberIds array (was using ownerid instead of memberId)

E2e tests (76 new tests across 6 files)

  • user-menu.spec.ts — dropdown items, navigation, close behavior, logout flow
  • sidebar.spec.ts — nav items, aria-current state, responsive visibility
  • groups-members.spec.ts — owner checkbox, add/remove members, combined toasts
  • navigation.spec.ts — logo, sidebar links, back button, layout persistence
  • auth.spec.ts — unauthenticated route protection, invalid token, back-after-logout
  • search.spec.ts — filter groups, clear restores, empty state, route-change clear

How to test

  1. Run npm run build — should pass
  2. Run npm test — all 223 unit tests pass
  3. Run npm run dev and log in via /dev/mock-portal as admin (100001)
  4. Click Messages, Events, Settings in sidebar — each shows "Coming soon" page
  5. Click user avatar in top bar — dropdown with Profile, Account Settings, Sign out
  6. Click Sign out — redirects to mock portal
  7. Log back in, go to /groups — type in search bar, cards filter after 300ms debounce
  8. Clear search — all cards return; type nonsense — "No groups match" message
  9. Navigate to /home — search works there too; navigate away and back — search clears
  10. Verify sidebar active highlight is light brown with rounded corners
  11. Run npx playwright test — all e2e tests pass (135 passed, 2 skipped)

Checklist

  • Code works and is readable
  • Tested locally
  • Commits follow conventional commits
  • Assigned reviewers

@kevinrutledge kevinrutledge requested a review from suesuee March 4, 2026 00:39
@suesuee suesuee merged commit 5739705 into develop Mar 4, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: placeholder pages for messages, events, and settings

2 participants