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