6.4 KiB
Test Plan E5.S3 - Keyboard Shortcuts
Datum: 27-12-2024 Status: Ready for Testing Story: E5.S3 - Keyboard shortcuts verificatie (2 SP)
✅ Implementatie Overzicht
Bestaande Shortcuts (E1.S1, E4.S4)
- ⌘K / Ctrl+K - Focus command input (CommandCenter)
- Escape - Close active block (CommandCenter)
- 1-3 - Quick select in FallbackPicker
Nieuwe Shortcuts (E5.S3)
- ⌘Enter / Ctrl+Enter - Quick submit in CommandInput
- ⌘Enter / Ctrl+Enter - Quick save in DagnotatieBlock
- Visual hints - ⌘↵ shown on DagnotatieBlock save button
🧪 Test Scenarios
1. Global Shortcuts
Test 1.1: ⌘K Focus Input
- Start op Swift pagina
- Press ⌘K (Mac) of Ctrl+K (Windows/Linux)
- Command input krijgt focus
- Cursor blinkt in input field
- Werkt vanaf elke positie (in block, buiten block)
Test 1.2: Escape Close Block
- Open dagnotitie block
- Press Escape
- Block sluit met slide-down animatie
- Input is weer beschikbaar
- Herhaal met zoeken block
- Herhaal met overdracht block
Test 1.3: Escape Close FallbackPicker
- Trigger FallbackPicker (typ gibberish)
- Press Escape
- FallbackPicker sluit
- Canvas area toont empty state
2. Command Input Shortcuts
Test 2.1: Enter Submit (Native)
- Typ "notitie jan medicatie" in command input
- Press Enter
- Intent classification API wordt aangeroepen
- DagnotatieBlock opent met prefill
- Input wordt cleared
Test 2.2: ⌘Enter Quick Submit
- Typ "zoek marie" in command input
- Press ⌘Enter (Mac) of Ctrl+Enter (Windows)
- Intent classification API wordt aangeroepen
- ZoekenBlock opent
- Input wordt cleared
Test 2.3: Empty Input - No Submit
- Command input is leeg
- Press Enter of ⌘Enter
- Niks gebeurt (validation)
- Geen API call
- Geen error toast
Test 2.4: Submit During Processing
- Typ commando en submit (Enter)
- Tijdens processing: druk nogmaals Enter
- Tweede submit wordt genegeerd (isProcessing check)
- Geen dubbele API calls
3. DagnotatieBlock Shortcuts
Test 3.1: ⌘Enter Quick Save
- Open dagnotitie block
- Vul alle velden in (patient, categorie, content)
- Press ⌘Enter (Mac) of Ctrl+Enter (Windows)
- Dagnotitie wordt opgeslagen
- Success toast verschijnt
- Block sluit na 500ms
Test 3.2: ⌘Enter Validation
- Open dagnotitie block
- Laat patient leeg, vul rest in
- Press ⌘Enter
- Validation toast: "Selecteer een patiënt"
- Block blijft open
- Herhaal voor categorie en content
Test 3.3: Visual Hint Zichtbaar
- Open dagnotitie block
- Check submit button
- Tekst toont "Opslaan ⌘↵"
- Hint is zichtbaar op desktop (hidden op mobile via sm:inline)
- Tooltip toont "Opslaan (⌘Enter)" on hover
Test 3.4: Enter in Textarea
- Open dagnotitie block
- Focus in content textarea
- Press Enter (zonder Cmd/Ctrl)
- Nieuwe regel in textarea (native behavior)
- Form wordt NIET gesubmit
- Press ⌘Enter
- Form wordt gesubmit
4. FallbackPicker Shortcuts
Test 4.1: Number Keys 1-3
- Trigger FallbackPicker (typ "asdfasdf")
- Press 1
- DagnotatieBlock opent met original input als content
- FallbackPicker sluit
Test 4.2: Number Keys Sequence
- Trigger FallbackPicker
- Press 2
- ZoekenBlock opent
- Close block (Escape)
- Trigger FallbackPicker again
- Press 3
- OverdrachtBlock opent
Test 4.3: Numbers in Input Field
- FallbackPicker open
- Typ "123" in command input (via ⌘K)
- Cijfers worden getypt (shortcut inactive in input)
- FallbackPicker blijft zichtbaar
- Press Escape om picker te sluiten
5. Cross-Platform Testing
Test 5.1: macOS
- ⌘K werkt (Cmd key)
- ⌘Enter werkt (Cmd key)
- Ctrl+K werkt ook (fallback)
- Ctrl+Enter werkt ook (fallback)
Test 5.2: Windows/Linux
- Ctrl+K werkt
- Ctrl+Enter werkt
- ⌘ key (if present) werkt niet of is ignored
Test 5.3: Browser Conflicts
- ⌘K/Ctrl+K overschrijft browser's native shortcut (search)
- preventDefault() werkt correct
- Geen browser search bar opent
6. Edge Cases
Test 6.1: Rapid Shortcut Succession
- Press ⌘K → Escape → ⌘K → Enter snel na elkaar
- Alle shortcuts werken correct
- Geen race conditions
- Geen crashes
Test 6.2: Shortcuts During Block Transition
- Open dagnotitie block
- Tijdens slide-up animatie: press ⌘Enter
- Shortcut werkt niet (block nog niet fully open)
- Of: shortcut werkt na animatie compleet
Test 6.3: Voice Recording Active
- Start voice recording
- Press ⌘Enter
- Recording stopt
- Commando wordt verstuurd
- Transcript wordt gebruikt
Test 6.4: Block Disabled State
- Open dagnotitie block
- Submit → tijdens isSubmitting
- Press ⌘Enter
- Shortcut wordt genegeerd (disabled check)
- Geen dubbele save
🎯 Acceptatie Criteria E5.S3
- ⌘K/Ctrl+K werkt op alle platforms
- Escape werkt in alle contexts (blocks, picker)
- Enter submit werkt in command input
- ⌘Enter/Ctrl+Enter werkt in command input
- ⌘Enter/Ctrl+Enter werkt in dagnotitie block
- 1-3 number shortcuts werken in FallbackPicker
- Shortcuts hebben visual hints waar relevant
- preventDefault() voorkomt browser conflicts
- Shortcuts respecteren disabled/processing states
- Cross-platform compatible (Mac, Windows, Linux)
📋 Quick Smoke Test (5 minuten)
Voor snelle verificatie:
-
⌘K Test:
- Press ⌘K → Input has focus ✅
-
Enter Submit:
- Type "notitie jan" → Enter → Block opens ✅
-
⌘Enter Quick Submit:
- Type "zoek marie" → ⌘Enter → Block opens ✅
-
Escape Close:
- Open any block → Escape → Block closes ✅
-
Dagnotitie ⌘Enter Save:
- Fill dagnotitie form → ⌘Enter → Saves ✅
-
FallbackPicker Numbers:
- Type gibberish → Press 1 → Dagnotitie opens ✅
🚀 Documentatie
Alle shortcuts gedocumenteerd in:
docs/swift/keyboard-shortcuts-reference.md- Complete referentie- Tooltips en visual hints in UI
- Bouwplan E5.S3 technical notes
🎯 Status
E5.S3 - Keyboard Shortcuts: COMPLETE ✅
All keyboard shortcuts verified, extended, and documented.