0070fb3aea
- 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
4.1 KiB
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)