trails/e2e
Ullrich Schäfer 4e2bfb0bbe Redesign navbar with avatar dropdown and mobile drawer
Stream C from docs/information-architecture.md. The navbar's account
cluster (<username> + Settings + Logout) was three controls for the
same concept; the cluster now collapses behind an avatar dropdown.
On mobile, all primary nav and account controls move into a
hamburger drawer so the top bar stays at logo + bell + hamburger
without wrapping at small viewports.

- New apps/journal/app/components/Avatar.tsx — initials-only avatar
  (no image-upload story yet; the component is the single place to
  add image fallback when one lands).
- New apps/journal/app/components/AccountDropdown.tsx — click the
  avatar trigger to reveal Profile / Settings / Log Out menuitems.
  Click-outside + Escape-to-close. role="menu" + role="menuitem" for
  a11y.
- New apps/journal/app/components/MobileNavMenu.tsx — hamburger
  trigger + slide-out drawer at md and below. Contains all primary
  nav (Feed, Explore, Routes, Activities, Notifications) plus the
  account cluster (Profile, Settings, Log Out). Auto-closes on
  navigation; locks body scroll while open.
- apps/journal/app/root.tsx — refactor NavBar:
  * Brand + primary nav links hide at md and below (drawer covers
    them).
  * Right cluster: bell on every viewport; avatar dropdown on
    desktop, hamburger on mobile.
  * Loader exposes user.displayName so Avatar can compute initials.
  * Drops the now-unused Form import; Form moved into the
    dropdown/drawer components.

E2E tests updated:
- e2e/auth.test.ts — logout helper opens the avatar dropdown via
  aria-label = displayName||username, then clicks the Log Out
  menuitem. Username assertions in nav switch from getByText to
  getByRole("button", {name: username}) (the avatar button).
- e2e/settings.test.ts — "settings link visible in nav" opens the
  avatar dropdown first, then asserts the Settings menuitem.

i18n: nav.openMenu, nav.closeMenu keys for the hamburger trigger
labels (EN + DE).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 09:56:20 +02:00
..
fixtures Block unmocked external requests in E2E tests 2026-04-19 22:42:29 +02:00
auth.test.ts Redesign navbar with avatar dropdown and mobile drawer 2026-04-26 09:56:20 +02:00
demo-bot.test.ts Fix e2e fallout from default-private profile_visibility 2026-04-25 23:46:56 +02:00
explore.test.ts Implement /explore: local user discovery directory 2026-04-26 09:24:19 +02:00
integration.test.ts Session-bind /api/route and /api/overpass 2026-04-21 22:18:45 +02:00
journal.test.ts Rebuild the Journal home around a public feed and flagship marketing 2026-04-24 20:00:23 +02:00
notifications.test.ts Merge /follows/requests into /notifications as a tabbed inbox 2026-04-26 08:24:59 +02:00
planner.test.ts Block unmocked external requests in E2E tests 2026-04-19 22:42:29 +02:00
public-content.test.ts Replace waitForLoadState("networkidle") in e2e helpers 2026-04-26 01:37:37 +02:00
settings.test.ts Redesign navbar with avatar dropdown and mobile drawer 2026-04-26 09:56:20 +02:00
social.test.ts Merge /follows/requests into /notifications as a tabbed inbox 2026-04-26 08:24:59 +02:00