# Manual QA Checklist for PDF Ingestion Pipeline ## Test Environment Setup - [ ] Python 3.8+ installed - [ ] All dependencies from requirements.txt installed - [ ] Streamlit app accessible at http://localhost:8501 - [ ] Test PDFs available in test-data/ directory ## 1. PDF Upload Functionality ### Basic Upload - [ ] Can upload PDF via drag-and-drop - [ ] Can upload PDF via file browser - [ ] File size limitations work correctly - [ ] Non-PDF files are rejected with appropriate error ### Multiple File Scenarios - [ ] Can re-upload different PDFs in same session - [ ] Previous upload is properly cleaned up ## 2. Parser Testing ### PyPDF Parser - [ ] Successfully extracts text from short_story.pdf - [ ] Successfully extracts text from technical_doc.pdf - [ ] Handles multi-page documents correctly - [ ] Page numbers are preserved in extraction ### PDFPlumber Parser - [ ] Successfully extracts text from short_story.pdf - [ ] Successfully extracts text from technical_doc.pdf - [ ] Fallback mechanism works when primary parser fails - [ ] Retry button switches parsers correctly ## 3. Text Processing ### Normalization - [ ] Special characters are handled properly - [ ] Unicode text is preserved where valid - [ ] Control characters are removed - [ ] Excessive whitespace is normalized - [ ] Line breaks are preserved appropriately ### Chunking - [ ] Chunks respect configured size limits - [ ] Overlap setting creates proper text overlap - [ ] No data loss between chunks - [ ] Empty pages don't create empty chunks ## 4. Configuration Settings ### Chunk Size - [ ] Minimum value (500) enforced - [ ] Maximum value (10000) enforced - [ ] Changes apply to new ingestions - [ ] Default value (4000) works well ### Overlap Size - [ ] Minimum value (0) works correctly - [ ] Maximum value (2000) enforced - [ ] Overlap doesn't exceed chunk size - [ ] Default value (400) provides good context ## 5. UI/UX Testing ### Progress Indicators - [ ] "Processing..." status shown during ingestion - [ ] Success message displays after completion - [ ] Error messages are clear and actionable - [ ] Chunk count is displayed correctly ### Session Management - [ ] Session ID remains stable during use - [ ] Session ID displayed in sidebar - [ ] Output path shown after processing ### Preview Functionality - [ ] First chunk preview displays correctly - [ ] Preview is truncated appropriately (2000 chars) - [ ] Special characters display properly in preview ## 6. Performance Testing ### Small PDFs (<5 pages) - [ ] Processing completes in <2 seconds - [ ] Memory usage remains reasonable ### Medium PDFs (10-50 pages) - [ ] Processing completes in <10 seconds - [ ] UI remains responsive during processing ### Large PDFs (100+ pages) - [ ] Processing completes without timeout - [ ] Background processing doesn't block UI - [ ] Memory usage scales appropriately ## 7. Error Handling ### File Errors - [ ] Corrupted PDF shows meaningful error - [ ] Password-protected PDF handled gracefully - [ ] Missing file error is clear ### Processing Errors - [ ] Parser failures trigger fallback option - [ ] Out of memory errors are caught - [ ] Network/disk errors handled appropriately ## 8. Data Persistence ### Output Files - [ ] JSON files created in .tmp/ingestion/ - [ ] File naming uses session ID correctly - [ ] JSON structure is valid and complete - [ ] Files can be loaded back successfully ### Cleanup - [ ] Temporary PDF files are removed after processing - [ ] Old session files don't accumulate indefinitely ## 9. Edge Cases ### Empty PDFs - [ ] Empty PDF files handled without crash - [ ] Appropriate message shown to user ### Special Content - [ ] PDFs with images only show appropriate message - [ ] PDFs with tables maintain some structure - [ ] PDFs with forms extract visible text ### Encoding Issues - [ ] Non-UTF8 text is handled gracefully - [ ] Mixed encoding documents process correctly ## 10. Integration Testing ### End-to-End Flow - [ ] Upload → Process → Preview → Persist works smoothly - [ ] Multiple sequential ingestions work correctly - [ ] Parser switching mid-session works properly - [ ] All settings apply correctly to processing ## Test Execution Log | Date | Tester | Version | Pass/Fail | Notes | |------|--------|---------|-----------|-------| | | | | | | ## Known Issues - List any discovered issues here with reproduction steps ## Recommended Improvements - List any UX or functionality improvements discovered during testing