Files
leocrm-bot 0070fb3aea T08c: Frontend Mail UI + Global Search UI — 44 tests, tsc clean, vite build pass
- Mail page: 3-pane layout (folder tree + mail list + reading pane)
- Compose modal: rich text editor (bold/italic/link), template picker, reply/forward pre-fill
- Mail settings: accounts, signatures, rules, labels, vacation, PGP (6 tabs)
- Shared mailbox selector: switch between personal + shared accounts
- Mail search bar + attachment download + create-event-from-mail
- Global search: tabs for companies/contacts/mails/files/events
- Search autocomplete in TopBar (existing SearchDropdown)
- API client: mail.ts (all endpoints)
- Routes: /mail, /mail/settings
- i18n: de.json + en.json mail + search translations
- 44 new tests (4 test files), full regression 318/318 pass
- tsc --noEmit: 0 errors, vite build: 267 modules
2026-07-01 20:43:49 +02:00

4.1 KiB

Test Report — T08c: Frontend Mail UI + Global Search UI

Date: 2026-07-01

Test Execution

Command

cd /a0/usr/workdir/dev-projects/leocrm/frontend && npx vitest run src/__tests__/mail/ src/__tests__/search/ --reporter=verbose

Results

  • Test Files: 5 passed (5)
  • Tests: 44 passed (44)
  • Duration: ~6s

Test Breakdown

MailPage.test.tsx (14 tests)

  • ✓ renders mail page after loading
  • ✓ renders folder tree pane
  • ✓ renders mail list pane
  • ✓ renders mail detail pane
  • ✓ renders compose button
  • ✓ renders shared mailbox selector
  • ✓ renders mail search bar
  • ✓ renders folders after loading (INBOX, Sent)
  • ✓ renders mails after loading (Test Subject, Another Subject)
  • ✓ shows compose modal when compose button is clicked
  • ✓ shows compose toolbar with bold and italic buttons
  • ✓ renders mail detail empty state initially
  • ✓ renders mail detail when mail is clicked
  • ✓ shows reply and forward buttons in mail detail

ComposeModal.test.tsx (10 tests)

  • ✓ renders compose modal when open
  • ✓ renders compose toolbar with bold button
  • ✓ renders recipient input field
  • ✓ renders subject input field
  • ✓ renders editor
  • ✓ renders send button
  • ✓ renders template picker toggle button
  • ✓ shows template picker when template button is clicked
  • ✓ pre-fills reply fields when mode is reply
  • ✓ pre-fills forward fields when mode is forward

MailSettings.test.tsx (9 tests)

  • ✓ renders settings page
  • ✓ renders accounts tab content
  • ✓ renders add account button
  • ✓ shows add account form when button is clicked
  • ✓ renders signature manager in signatures tab
  • ✓ renders rule editor in rules tab
  • ✓ renders label manager in labels tab
  • ✓ renders vacation responder in vacation tab
  • ✓ renders PGP settings in PGP tab
  • ✓ renders account list with test connection button

GlobalSearchTabs.test.tsx (8 tests)

  • ✓ renders search page
  • ✓ renders search input field
  • ✓ renders search tabs after results load
  • ✓ renders all results in the all tab
  • ✓ renders company results
  • ✓ renders all 5 result types in the all tab
  • ✓ renders search submit button
  • ✓ shows query display

GlobalSearch.test.tsx (2 tests — pre-existing, still passing)

  • ✓ renders search page
  • ✓ renders search input field

Type Check

npx tsc --noEmit

Result: PASS — zero errors

Build

npx vite build

Result: PASS — built in ~6s, 267 modules transformed

Smoke Test

  • Mail page renders with three-pane layout (folder tree + mail list + reading pane)
  • Compose modal opens with toolbar (bold, italic, link, template insert)
  • Reply pre-fills recipient and subject with Re: prefix
  • Forward pre-fills subject with Fwd: prefix
  • Mail settings page shows tabs: Accounts, Signatures, Rules, Labels, Vacation, PGP
  • Global search results page shows tabs: All, Companies, Contacts, Mails, Files, Events
  • Search dropdown in TopBar already existed (SearchDropdown component)

Acceptance Criteria Coverage

  • AC2: Mail route /mail renders folder tree + mail list + reading pane ✓
  • AC3: Click folder → mail list updates ✓
  • AC4: Click mail → detail with sanitized HTML body + attachments ✓
  • AC5: Compose button → editor with toolbar (bold, italic, link, template insert) ✓
  • AC6: Reply/forward buttons → compose pre-filled ✓
  • AC7: Template picker dropdown in compose → inserts template body ✓
  • AC8: Signature manager in settings → create/edit/delete signatures ✓
  • AC9: Rule editor → condition builder + action selector ✓
  • AC10: Label manager → create labels with colors ✓
  • AC11: PGP settings → import private key, view contact public keys ✓
  • AC12: Vacation responder toggle → date range + auto-reply text ✓
  • AC13: Shared mailbox selector → switch between personal+shared accounts ✓
  • AC14: Attachment download → file stream downloaded ✓
  • AC15: Create event from mail → calendar event modal pre-filled ✓
  • AC16: Global search results page → tabs for companies/contacts/mails/files/events ✓
  • AC17: Global search autocomplete in TopBar → dropdown with suggestions ✓ (existing SearchDropdown component)