--- phase: 17-component-tests plan: 09 type: execute --- Add tests for editor modal components: PromptEditorModal, SplitGridSettingsModal, and AnnotationModal. Purpose: Test specialized editor modals for content editing and configuration. Output: Test files covering modal rendering, editor interactions, and settings management. ~/.claude/get-shit-done/workflows/execute-phase.md ~/.claude/get-shit-done/templates/summary.md @.planning/PROJECT.md @.planning/ROADMAP.md @.planning/phases/17-component-tests/17-08-SUMMARY.md # Key source files: @src/components/modals/PromptEditorModal.tsx @src/components/SplitGridSettingsModal.tsx @src/components/AnnotationModal.tsx **Tech stack available:** Vitest, React Testing Library, jsdom **Established patterns:** ReactFlowProvider wrapper, vi.mock for Zustand store Task 1: Add PromptEditorModal component tests src/components/__tests__/PromptEditorModal.test.tsx Create comprehensive tests for PromptEditorModal: - Not rendered when isOpen is false - Rendered with title when isOpen is true - Textarea with initial prompt value - Textarea updates on typing - Save button calls onSave with updated prompt - Cancel button calls onClose without saving - Escape key closes without saving - Character count display (if applicable) - Fullscreen/expanded textarea styling Mock incrementModalCount/decrementModalCount calls on open/close. Pass props: isOpen, initialPrompt, onSave, onClose. npm test -- --run src/components/__tests__/PromptEditorModal.test.tsx passes PromptEditorModal tests cover editing flow and save/cancel actions Task 2: Add SplitGridSettingsModal and AnnotationModal tests src/components/__tests__/SplitGridSettingsModal.test.tsx, src/components/__tests__/AnnotationModal.test.tsx **Create SplitGridSettingsModal.test.tsx:** - Not rendered when isOpen is false - Grid size inputs (rows, columns) - Preview of grid overlay on image - Apply button saves settings - Cancel button closes without saving - Input validation (min 1, max reasonable limit) - Auto-detect grid button (if applicable) **Create AnnotationModal.test.tsx:** - Not rendered when isOpen is false - Canvas element rendered when open - Tool selector buttons (brush, eraser, shapes) - Color picker interaction - Brush size slider - Clear all button - Save button exports canvas to image - Cancel button closes without saving Note: Konva canvas internals cannot be easily tested in jsdom. Focus on modal shell, tool buttons, and callbacks - not actual drawing. Mock canvas context if needed (getContext returns mock). Mock useWorkflowStore for modal count tracking. npm test -- --run src/components/__tests__/ passes editor modal tests SplitGridSettingsModal and AnnotationModal have test coverage for UI shell Before declaring plan complete: - [ ] `npm test -- --run` passes all tests - [ ] `npm run build` succeeds without errors - [ ] PromptEditorModal save/cancel flow tested - [ ] Modal tool buttons render correctly - All tasks completed - All verification checks pass - No TypeScript errors - ~15-20 new tests for editor modals After completion, create `.planning/phases/17-component-tests/17-09-SUMMARY.md`