navidocs/LIVE_TESTING_GUIDE.md
Danny Stocker 60c73bb896 [MEETING PREP] Feature selector + testing + integrations
For Riviera Plaisance meeting:
- feature-selector-riviera-meeting.html (ALL 8 features with notes/voting)
- USER_TESTING_INSTRUCTIONS_CLOUD.md (user perspective testing guide)
- INTEGRATION_WHATSAPP.md (WhatsApp Business API integration)
- INTEGRATION_CLAUDE_CHATBOX.md (Claude CLI chatbox with document context)
- LIVE_TESTING_GUIDE.md (comprehensive testing checklist)
- FEATURE_SUMMARY_ALL.md (all 8 features catalog)

Ready for 1-hour meeting with client.
2025-11-13 14:42:13 +01:00

872 lines
21 KiB
Markdown

# NaviDocs Live Testing Guide
**Version:** 1.0
**Date:** 2025-11-13
**Platform:** StackCP Live Deployment
**Status:** Ready for Testing
---
## Overview
This guide provides step-by-step instructions for testing the NaviDocs live deployment on StackCP. It covers all three core features:
1. **Smart OCR** - Intelligent PDF text extraction with performance optimization
2. **Multi-Format Support** - Upload and process 6 file types
3. **Timeline Activity** - Track document upload/deletion history
**Expected Total Testing Time:** 45-60 minutes
---
## Table of Contents
1. [Live URLs](#live-urls)
2. [Pre-Testing Setup](#pre-testing-setup)
3. [Test 1: Smart OCR](#test-1-smart-ocr)
4. [Test 2: Multi-Format Upload](#test-2-multi-format-upload)
5. [Test 3: Timeline Activity](#test-3-timeline-activity)
6. [Test Data Suggestions](#test-data-suggestions)
7. [Expected Results](#expected-results)
8. [Reporting Bugs](#reporting-bugs)
9. [Troubleshooting](#troubleshooting)
---
## Live URLs
### Frontend
- **Main Application:** https://digital-lab.ca/navidocs/
- **Register:** https://digital-lab.ca/navidocs/#/register
- **Login:** https://digital-lab.ca/navidocs/#/login
- **Dashboard:** https://digital-lab.ca/navidocs/#/dashboard
- **Library:** https://digital-lab.ca/navidocs/#/library
### Backend API
- **Health Check:** https://api.digital-lab.ca/navidocs/health
- **API Base:** https://api.digital-lab.ca/navidocs/api/
- **Upload Endpoint:** https://api.digital-lab.ca/navidocs/api/upload (POST)
- **Search Token:** https://api.digital-lab.ca/navidocs/api/search/token (POST)
- **Documents:** https://api.digital-lab.ca/navidocs/api/documents (GET)
- **Jobs Status:** https://api.digital-lab.ca/navidocs/api/jobs/{jobId} (GET)
### Meilisearch (Internal)
- **Endpoint:** http://localhost:7700 (StackCP internal only)
- **Index Name:** navidocs-pages
- **Search Health:** http://localhost:7700/health
---
## Pre-Testing Setup
### Step 1: Verify Deployment Status
```bash
# Check API health
curl -s https://api.digital-lab.ca/navidocs/health | jq .
# Expected Response:
# {
# "status": "ok",
# "uptime": 1234567,
# "timestamp": "2025-11-13T15:30:00.000Z"
# }
```
### Step 2: Create Test Account
1. Navigate to: https://digital-lab.ca/navidocs/#/register
2. Fill in registration form:
- **Email:** test-user-[random]@example.com
- **Password:** TestPass123!@#
- **Confirm:** TestPass123!@#
- **Boat Name:** Test Vessel
3. Click "Create Account"
4. Verify email confirmation (or skip if in demo mode)
5. Login with credentials
### Step 3: Verify Login & Dashboard
After login, you should see:
- [ ] Dashboard loads without errors
- [ ] User name appears in header
- [ ] "Upload Document" button visible
- [ ] "Document Library" accessible
- [ ] No console errors (F12 > Console)
---
## Test 1: Smart OCR
### Purpose
Verify that PDF uploads process quickly with intelligent OCR that:
- Extracts native text first (2-3 seconds)
- Only OCRs pages with <50 characters
- Completes 100-page PDFs in <5 seconds (was 180 seconds)
### Test 1.1: Simple PDF Upload
**Steps:**
1. Navigate to dashboard
2. Click "Upload Document" button
3. Select a **PDF file (2-10 pages, native text)**
4. Fill in metadata:
- Title: "Test Manual - Smart OCR"
- Document Type: "Owner Manual"
- Category: "Manuals"
5. Click "Upload"
6. **Start timer**
**Monitoring:**
- Watch browser console (F12 > Console) for job creation
- Observe job status in progress bar
- Note time at each stage:
- Upload start: __:__ (should be instant)
- Upload complete: __:__ (depends on file size)
- OCR start: __:__ (should start immediately)
- OCR complete: __:__ (THIS IS KEY METRIC)
**Pass Criteria:**
- [ ] File uploads successfully
- [ ] Job ID appears in console
- [ ] Progress bar shows status
- [ ] **OCR completes in < 5 seconds**
- [ ] No errors in console
- [ ] Document appears in library
- [ ] Search results appear within 2 minutes
**Example Console Output:**
```
[NaviDocs] Upload started
[NaviDocs] Job created: job-uuid-12345
[NaviDocs] Polling job status...
[NaviDocs] Job progress: 10%
[NaviDocs] Job progress: 50%
[NaviDocs] Job progress: 100%
[NaviDocs] OCR complete in 4.2 seconds
```
### Test 1.2: Large PDF with Mixed Text
**Steps:**
1. Upload a **100-page PDF** with:
- 50 pages with native text
- 50 pages with scanned images only
2. Note file size: ______
3. **Start timer**
4. Monitor job progress
**Expected Behavior:**
- Upload: < 30 seconds
- Native text extraction: 2-3 seconds (50 pages)
- Scanned page OCR: 1-2 seconds (50 pages, fast path)
- **Total: < 5 seconds**
**Pass Criteria:**
- [ ] **Total OCR time < 5 seconds**
- [ ] All 100 pages indexed
- [ ] Search returns results from both native and OCR text
- [ ] No timeout errors
- [ ] No memory issues
### Test 1.3: OCR Quality Check
**Steps:**
1. Open completed document in library
2. Click "View Document"
3. Check search accuracy
**Search Test:**
1. Go to Library > Search
2. Try these searches:
- "engine" (should find technical manual content)
- "warranty" (should find warranty sections)
- "maintenance" (should find service records)
**Pass Criteria:**
- [ ] Search results accurate (not gibberish)
- [ ] Results show page numbers
- [ ] Text snippets are readable
- [ ] OCR confidence > 80%
- [ ] Language detection correct
**Check OCR Confidence:**
```javascript
// In browser console:
// After document loads, check page data
console.log(document.__nuxt__.$data.documentPages)
// Look for ocrConfidence field (should be 0.8-0.95)
```
---
## Test 2: Multi-Format Upload
### Purpose
Verify that NaviDocs handles 6 different file types correctly:
1. **PDF** - Native + OCR
2. **Images (JPG/PNG)** - OCR only
3. **Word (DOCX)** - Text extraction
4. **Excel (XLSX)** - Data extraction
5. **Text (TXT)** - Direct read
6. **Markdown (MD)** - Direct read
### Test 2.1: Upload All 6 File Types
**Prepare Test Files:**
Create or locate these files:
| Format | Filename | Content | Size |
|--------|----------|---------|------|
| PDF | test-manual.pdf | 5-10 page manual | < 10 MB |
| JPG | boat-photo.jpg | 2-3 MB photo | < 5 MB |
| PNG | diagram.png | System diagram | < 2 MB |
| DOCX | specifications.docx | Boat specs | < 1 MB |
| XLSX | maintenance.xlsx | Service log | < 1 MB |
| TXT | notes.txt | Engine notes | < 100 KB |
**Upload Steps:**
For each file:
1. Click "Upload Document"
2. Select file
3. Fill metadata:
- Title: "[Type] - Test Document"
- Type: Appropriate type
- Category: Appropriate category
4. Click "Upload"
5. Record **Upload Status**
6. Record **Processing Time**
**Pass Criteria for Each Format:**
**PDF:**
- [ ] Uploads successfully
- [ ] OCR processes text
- [ ] Search finds content
- [ ] Pages extracted correctly
- [ ] Processing time < 5 seconds
**JPG/PNG:**
- [ ] Uploads successfully
- [ ] OCR processes image text
- [ ] Search finds content
- [ ] Image displays in preview
- [ ] Processing time < 3 seconds
**DOCX:**
- [ ] Uploads successfully
- [ ] Text extracted correctly
- [ ] Formatting preserved
- [ ] Search finds content
- [ ] Processing time < 2 seconds
**XLSX:**
- [ ] Uploads successfully
- [ ] Sheet data extracted
- [ ] All columns readable
- [ ] Search finds cell content
- [ ] Processing time < 2 seconds
**TXT:**
- [ ] Uploads successfully
- [ ] Full text indexed
- [ ] Search finds content
- [ ] Formatting preserved
- [ ] Processing time < 1 second
**MD:**
- [ ] Uploads successfully
- [ ] Markdown parsed correctly
- [ ] Headers and content separate
- [ ] Search finds content
- [ ] Processing time < 1 second
### Test 2.2: Search Across All Formats
**Steps:**
1. Go to Library > Search
2. Search for content that appears in multiple formats
- Example: "engine" (in manual, specifications, notes)
3. Record results
**Pass Criteria:**
- [ ] Returns results from all 6 formats
- [ ] Results grouped by document type
- [ ] Preview shows correct snippet
- [ ] No format-specific errors
- [ ] Results load < 100 ms
### Test 2.3: Multi-Format Organization
**Steps:**
1. Go to Library
2. Filter by document type
**Pass Criteria:**
- [ ] Can filter by "PDF"
- [ ] Can filter by "Image"
- [ ] Can filter by "Word"
- [ ] Can filter by "Spreadsheet"
- [ ] Can filter by "Text"
- [ ] Filters work correctly
- [ ] No data loss
---
## Test 3: Timeline Activity
### Purpose
Verify that all document operations are logged with:
- Timestamps
- User attribution
- Operation type (upload/delete/share)
- Document metadata
### Test 3.1: Upload Activity Logging
**Steps:**
1. Go to Dashboard > Timeline (or Activity Feed)
2. Upload 3 documents of different types:
- Document A (PDF)
- Document B (JPG)
- Document C (DOCX)
3. **Start timer** for each upload
4. Check Timeline after each upload
**Pass Criteria:**
- [ ] Each upload appears in timeline
- [ ] Correct document name shown
- [ ] Correct file type icon shown
- [ ] Timestamp accurate (within 1 minute)
- [ ] User name correct
- [ ] "Upload" action labeled correctly
- [ ] Timeline updates within 2 seconds of upload complete
**Example Timeline Entry:**
```
[✓] PDFs uploaded: test-manual.pdf
User: test-user-123
Time: 2025-11-13 15:30:45 UTC
Status: Indexed (searchable)
[View Document] [Delete]
```
### Test 3.2: Delete Activity Logging
**Steps:**
1. In Library, select one uploaded document
2. Click "Delete" button
3. Confirm deletion
4. **Start timer**
5. Check Timeline
**Pass Criteria:**
- [ ] Delete appears in timeline
- [ ] Shows "Document deleted" action
- [ ] Original filename visible
- [ ] Timestamp accurate
- [ ] User name correct
- [ ] Document removed from library
- [ ] Timeline updates within 2 seconds
**Example Timeline Entry:**
```
[✗] PDFs deleted: old-manual.pdf
User: test-user-123
Time: 2025-11-13 15:35:12 UTC
[Undo Delete - 30 minute window]
```
### Test 3.3: Timeline Filtering
**Steps:**
1. Go to Timeline
2. Upload 5-10 documents of mixed types
3. Delete 2-3 documents
4. Try filtering:
- By action: "Uploads only"
- By action: "Deletions only"
- By date range: "Last 1 hour"
- By document type: "PDFs only"
**Pass Criteria:**
- [ ] Filters work correctly
- [ ] Display updates instantly
- [ ] Correct counts shown
- [ ] Can combine filters
- [ ] No missing entries
- [ ] Sorting works (newest first)
### Test 3.4: Timeline Performance
**Steps:**
1. Generate large timeline:
- Upload 20-50 documents over 5 minutes
- Delete 5-10 documents
2. Navigate to Timeline
3. **Start timer** for page load
4. Check performance metrics
**Pass Criteria:**
- [ ] Timeline loads in < 2 seconds
- [ ] Scrolling smooth (60 FPS)
- [ ] No memory leaks
- [ ] Search within timeline works
- [ ] Can export timeline (if feature exists)
---
## Test Data Suggestions
### Sample Files You Can Use
**For Smart OCR Testing:**
- Download sample boat manuals from:
- Jeanneau official website (PDF manuals)
- Sunseeker documentation
- Generic marine equipment manuals
- Use these to test OCR quality
**For Multi-Format Testing:**
Create minimal test files:
```bash
# Create sample files
mkdir -p /tmp/navidocs-test-files
# PDF (convert text to PDF)
echo "Engine maintenance schedule" > /tmp/navidocs-test-files/manual.txt
# Convert to PDF (requires tools): wkhtmltopdf manual.txt manual.pdf
# JPG (download sample image)
wget https://via.placeholder.com/640x480.jpg -O /tmp/navidocs-test-files/boat.jpg
# PNG (create diagram)
# Use GIMP or online tool to create simple system diagram
# DOCX (Word)
# Create in Microsoft Word or LibreOffice with boat specifications
# XLSX (Spreadsheet)
# Create maintenance log with columns:
# Date | Service | Cost | Technician | Notes
# TXT
echo "Engine service notes
Date: 2025-11-01
Oil change completed
Next service: 2025-12-01" > /tmp/navidocs-test-files/notes.txt
# MD
echo "# Boat Maintenance
## Engine
- Oil capacity: 15L
- Change interval: 100 hours
## Hull
- Last paint: 2024-06" > /tmp/navidocs-test-files/specs.md
```
### Real Test Data (If Available)
Best case: Use actual boat documentation:
- Owner's manuals
- Service records
- Insurance documents
- Warranty certificates
- Photos with text overlays (for OCR testing)
---
## Expected Results
### Test 1: Smart OCR Expected Results
| Metric | Expected | Acceptable | Failure |
|--------|----------|-----------|---------|
| 5-page PDF OCR | < 2 sec | < 3 sec | > 5 sec |
| 50-page PDF OCR | < 3 sec | < 4 sec | > 8 sec |
| 100-page PDF OCR | < 5 sec | < 6 sec | > 10 sec |
| OCR Confidence | 85-95% | 70-85% | < 70% |
| Search Latency | < 50 ms | < 100 ms | > 200 ms |
| Indexing Rate | > 20 pages/sec | > 15 pages/sec | < 10 pages/sec |
### Test 2: Multi-Format Expected Results
| Format | Upload Time | Process Time | Search Latency |
|--------|------------|--------------|-----------------|
| PDF | 2-5 sec | 2-5 sec | 50-100 ms |
| JPG | 1-3 sec | 1-3 sec | 50-100 ms |
| PNG | 1-3 sec | 1-3 sec | 50-100 ms |
| DOCX | 1-2 sec | <1 sec | 50-100 ms |
| XLSX | 1-2 sec | <1 sec | 50-100 ms |
| TXT | <1 sec | <1 sec | 50-100 ms |
### Test 3: Timeline Expected Results
| Operation | Expected Latency | Update Delay | Data Accuracy |
|-----------|-----------------|--------------|----------------|
| Upload logged | < 1 sec | < 2 sec | 100% |
| Delete logged | < 1 sec | < 2 sec | 100% |
| Timeline load | < 2 sec | - | 100% |
| Search filter | < 100 ms | - | 100% |
---
## Reporting Bugs
### Bug Report Template
When you find a bug, use this format:
**Title:** [FEATURE] Brief description
- Example: "[Smart OCR] 100-page PDF times out after 45 seconds"
**Environment:**
- Browser: Chrome 130.0 / Firefox 131.0 / Safari 18.1
- OS: Windows 11 / macOS 14 / Ubuntu 24.04
- Screen Resolution: 1920x1080
- Network: Wired / WiFi with speed (Mbps)
- Time: 2025-11-13 15:30 UTC
**Steps to Reproduce:**
1. Navigate to [URL]
2. Click on [button]
3. Upload [file type], size [MB]
4. Observe [behavior]
**Expected Behavior:**
[What should have happened]
**Actual Behavior:**
[What actually happened]
**Screenshots:**
[Attach images showing the issue]
**Console Errors:**
[Copy full error stack trace from F12 > Console]
**Performance Metrics:**
- Upload time: X seconds
- OCR time: Y seconds
- Search latency: Z ms
**Severity:**
- 🔴 Critical: Feature completely broken
- 🟠 Major: Feature partially broken
- 🟡 Minor: Cosmetic or edge case
- 🟢 Suggestion: Enhancement
**Attachments:**
- Test file if applicable
- Network HAR file (F12 > Network > Export)
- Browser console log
### Where to Report
1. **GitHub Issues:** https://github.com/dannystocker/navidocs/issues
2. **Email:** bugs@digital-lab.ca
3. **Internal Slack:** #navidocs-bugs
---
## Troubleshooting
### Upload Fails with "Invalid File Type"
**Problem:** File upload rejected immediately
**Causes:**
- File extension not supported
- MIME type mismatch
- File too large (>50 MB)
**Solutions:**
```bash
# Check file type
file test-file.pdf
# Should output: PDF document, version 1.4
# Check file size
ls -lh test-file.pdf
# Size should be < 50 MB
# Verify MIME type
# PDF: application/pdf
# JPG: image/jpeg
# PNG: image/png
# DOCX: application/vnd.openxmlformats-officedocument.wordprocessingml.document
# XLSX: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
```
### OCR Takes Too Long (>10 seconds for 100 pages)
**Problem:** Performance degradation
**Potential Causes:**
- Server CPU high
- Tesseract process stuck
- Redis queue backed up
- Database locks
**Diagnosis:**
```bash
# SSH to StackCP
ssh stackcp
# Check CPU usage
top -b -n 1 | head -20
# Check queue length
redis-cli LLEN bull:ocr-jobs:jobs
# Check disk space
df -h ~/navidocs-data/
# Check database locks
lsof 2>/dev/null | grep navidocs.db
```
**Fixes:**
1. Restart OCR worker: `systemctl --user restart navidocs-ocr-worker`
2. Clear stuck jobs: `redis-cli DEL bull:ocr-jobs:*`
3. Increase Tesseract threads: Edit `.env` TESSERACT_THREADS=4
### Search Returns No Results
**Problem:** Indexed documents don't appear in search
**Causes:**
- Meilisearch service down
- Index not created
- Documents not yet indexed
- Tenant token expired
**Diagnosis:**
```bash
# Check Meilisearch health
curl http://localhost:7700/health
# Check index exists
curl http://localhost:7700/indexes
# Check document count
curl http://localhost:7700/indexes/navidocs-pages/stats
# Check search token
curl -X POST http://localhost:8001/api/search/token \
-H "Content-Type: application/json" \
-d '{"expiresIn": 3600}' | jq .
```
**Fixes:**
1. Restart Meilisearch: `systemctl --user restart meilisearch`
2. Reindex: `npm run reindex` (from server directory)
3. Clear bad token and regenerate
### Timeline Not Updating
**Problem:** Activity feed shows stale data
**Causes:**
- Database transaction not committed
- Cache not invalidated
- WebSocket connection failed
- Job status not updated
**Diagnosis:**
```bash
# Check recent database entries
sqlite3 ~/navidocs-data/db/navidocs.db \
"SELECT * FROM ocr_jobs ORDER BY created_at DESC LIMIT 5;"
# Check timestamps
sqlite3 ~/navidocs-data/db/navidocs.db \
"SELECT id, status, updated_at FROM ocr_jobs LIMIT 5;"
```
**Fixes:**
1. Refresh page (F5)
2. Clear browser cache (Ctrl+Shift+R)
3. Restart server: `systemctl --user restart navidocs`
4. Rebuild timeline index
### File Upload Stuck at 50%
**Problem:** Upload progress bar frozen
**Causes:**
- Network timeout
- Server crash
- Browser cache issue
- Large file size
**Solutions:**
1. **Check network:**
```bash
# F12 > Network, check for failed requests
# Green = success, Red = failed
```
2. **Check file size:**
```bash
ls -lh file.pdf
# If > 50 MB, file too large
# Max: 50 MB
```
3. **Clear browser cache:**
- Chrome: Ctrl+Shift+Delete
- Firefox: Ctrl+Shift+Delete
- Safari: Cmd+Option+E
4. **Try again with smaller file:**
- If file > 20 MB, split into sections
- Upload separately, then combine
### Account/Login Issues
**Problem:** Cannot login or register
**Causes:**
- Database connection failed
- Password hash mismatch
- Session expired
- CSRF token invalid
**Solutions:**
```bash
# Check database is accessible
sqlite3 ~/navidocs-data/db/navidocs.db "SELECT * FROM users LIMIT 1;"
# Check user exists
sqlite3 ~/navidocs-data/db/navidocs.db \
"SELECT id, email FROM users WHERE email='test@example.com';"
# Reset user password (if admin)
npm run reset-password test@example.com NewPassword123!
```
---
## Performance Benchmarks
### Expected Performance Metrics
**Backend API:**
- Health check: < 50 ms
- Token generation: 100-200 ms
- Upload: 1-3 seconds (depends on file size)
- Search: 50-100 ms
- Job status: 50-100 ms
**Frontend:**
- Page load: < 2 seconds
- Library render: < 1 second
- Search results: < 100 ms
- Upload dialog: < 500 ms
- Timeline load: < 2 seconds
**Database:**
- Query response: < 50 ms
- Index update: < 1 second
- Document insert: < 100 ms
**Search Engine (Meilisearch):**
- Index creation: < 100 ms
- Document insert: < 10 ms each
- Search query: 10-50 ms
- Faceted search: 50-100 ms
### Load Testing
If you have access to tools like Apache Bench or wrk:
```bash
# Simulate 10 concurrent users
wrk -t4 -c10 -d30s https://digital-lab.ca/navidocs/
# Load test upload endpoint
# Note: Requires authentication token
# See API docs for token generation
# Expected results:
# - Should handle 100+ requests/sec
# - <1% error rate
# - <200 ms p95 latency
```
---
## Sign-Off Checklist
After completing all tests, check these boxes:
### Test 1: Smart OCR
- [ ] 5-page PDF: < 3 seconds
- [ ] 100-page PDF: < 5 seconds
- [ ] Search results accurate
- [ ] OCR confidence > 80%
- [ ] No timeout errors
### Test 2: Multi-Format
- [ ] PDF: Upload & search works
- [ ] JPG: Upload & OCR works
- [ ] PNG: Upload & OCR works
- [ ] DOCX: Upload & extract works
- [ ] XLSX: Upload & parse works
- [ ] TXT: Upload & index works
- [ ] All formats searchable
### Test 3: Timeline
- [ ] Uploads logged to timeline
- [ ] Deletes logged to timeline
- [ ] Timestamps accurate
- [ ] User attribution correct
- [ ] Filtering works
- [ ] Updates within 2 seconds
### Overall
- [ ] No console errors
- [ ] No network failures
- [ ] No database errors
- [ ] Performance acceptable
- [ ] UX is smooth
- [ ] No data loss
### Sign-Off
- **Tester Name:** _______________________
- **Date:** _______________________
- **Status:** 🟢 PASS / 🟡 PASS WITH ISSUES / 🔴 FAIL
- **Notes:** _______________________
---
## Additional Resources
- **API Documentation:** `/home/setup/navidocs/server/API_SUMMARY.md`
- **Architecture Guide:** `/home/setup/navidocs/DEPLOYMENT_ARCHITECTURE.md`
- **Developer Guide:** `/home/setup/navidocs/server/docs/README_ARCHITECTURE.md`
- **Deployment Guide:** `/home/setup/navidocs/DEPLOYMENT_INDEX.md`
---
## Contact & Support
**Questions about testing?**
- Email: test-team@digital-lab.ca
- Slack: #navidocs-testing
- GitHub Issues: https://github.com/dannystocker/navidocs/issues
**Report bugs using the Bug Report Template** above.
---
**Document Version:** 2025-11-13
**Status:** Ready for Live Testing
**Confidence Level:** High
Good luck with testing! 🚀