Files
roa2web-service-auto/TESTING_CHECKLIST.md
Marius Mutu d507a81b0a feat: Implement unified Vue SPA with granular service control
Consolidate Reports and Data Entry apps into a single Vue.js SPA with:

Architecture:
- Module-based structure with lazy-loaded routes (@reports, @data-entry)
- Error boundaries per module to prevent cascade failures
- Dual API proxy in Vite for microservices (reports:8001, data-entry:8003)
- Pinia store factories for shared auth, company, and period stores
- Vite path aliases for clear module boundaries (@shared, @reports, @data-entry)

Service Management:
- Granular service control scripts (backend-reports.sh, backend-data-entry.sh, bot.sh, frontend.sh)
- 87% faster frontend restart: 7s vs 53s full restart
- 38% faster full startup: 33s vs 53s via parallel backend initialization
- Enhanced start-dev.sh with proper service timeouts (OCR: 30s, Vite: 15s, Bot: 10s)
- status.sh for comprehensive health checks

Features:
- Auto-select first company on login with period auto-load
- Hamburger menu with feature toggle support
- JWT token auto-injection via axios interceptors
- Unified header with company/period selectors
- IIS web.config for production deployment with multi-API routing

UX Improvements:
- Vue watchers for reactive company/period loading
- Lazy store initialization with graceful error handling
- Period persistence per user+company in localStorage
- Feature flags for optional modules

Deployment:
- Single IIS site serves unified frontend with API proxy rules
- Maintains separate backend processes for microservices
- Windows line ending fixes (.env CRLF → LF conversion)

Stats: 112 files changed, 38,342 insertions(+), 2,342 deletions(-)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-24 19:06:23 +02:00

6.4 KiB

ROA2WEB Unified App - Integration Testing Checklist

Pre-Test Setup

  • Stop any previously running services: ./start-test.sh stop
  • Verify SSH tunnel is configured: ./ssh-tunnel-test.sh status
  • Start all services: ./start-test.sh
  • Wait for all services to start (check logs if needed)

Service Health Checks

Backend Services

Frontend

  • Unified Frontend loads: http://localhost:3000
  • No console errors in browser DevTools
  • Login page displays correctly

Authentication Flow

Login

  • Navigate to http://localhost:3000
  • Should redirect to /login automatically
  • Enter valid test credentials
  • Login succeeds and redirects to dashboard
  • User info displays in header (username, company selector)
  • Access token stored in localStorage
  • JWT contains correct user info and companies

Session Persistence

  • Refresh page - user remains logged in
  • Close tab and reopen - user remains logged in
  • Open in new tab - user is already logged in

Reports Module (http://localhost:3000/reports)

Navigation

  • Click "Rapoarte" in menu
  • Dashboard loads at /reports/dashboard
  • No console errors
  • Company selector works (change company)
  • Period selector works (change accounting period)

Dashboard Widgets

  • Metrics cards display (Sales, Purchases, etc.)
  • Charts render correctly
  • Data loads from Reports API (8001)
  • Check Network tab: requests go to /api/reports/*

Reports Pages

  • Navigate to "Facturi Clienți" (/reports/invoices/sales)
  • Table loads with data
  • Filters work (date range, company, status)
  • Pagination works
  • Export buttons work (Excel, PDF)
  • Invoice details modal opens
  • Navigate to "Facturi Furnizori" (/reports/invoices/purchases)
  • Verify same functionality as sales invoices

Treasury Reports

  • Navigate to "Trezorerie" (/reports/treasury)
  • Cash flow data loads
  • Charts display correctly
  • Date filters work

Error Boundary Testing

  • Manually trigger an error in Reports module (e.g., bad API call)
  • ErrorBoundary catches the error
  • Error message displays: "A apărut o eroare în modulul Rapoarte"
  • Other modules (Data Entry) remain functional

Data Entry Module (http://localhost:3000/data-entry)

Navigation

  • Click "Introduceri" in menu
  • Receipts list loads at /data-entry/receipts
  • No console errors
  • Check Network tab: requests go to /api/data-entry/*

Receipts List

  • Table displays receipts
  • Status badges display correctly (DRAFT, PENDING, APPROVED)
  • Filters work (date range, status, user)
  • Create new receipt button visible

Create Receipt

  • Click "Adaugă Bon Fiscal"
  • Form displays at /data-entry/receipts/new
  • Partner/Supplier dropdown loads from Data Entry API
  • Expense type dropdown works
  • Date picker works
  • Amount fields accept input
  • File upload works (image/PDF)
  • Save as DRAFT works
  • Receipt appears in list with DRAFT status

Edit Receipt

  • Click edit on a DRAFT receipt
  • Form loads with existing data
  • Modify fields
  • Save changes - updates successfully
  • Delete receipt - removes from list

Submit for Review

  • Open a DRAFT receipt
  • Click "Trimite spre aprobare"
  • Status changes to PENDING_REVIEW
  • Accounting entries auto-generated
  • Receipt is read-only in PENDING state

Approval Workflow (Accountant Role)

  • Login as accountant user
  • See pending receipts
  • Open PENDING receipt
  • Review accounting entries
  • Approve receipt - status changes to APPROVED
  • Receipt becomes fully read-only

Error Boundary Testing

  • Manually trigger an error in Data Entry module
  • ErrorBoundary catches the error
  • Error message displays: "A apărut o eroare în modulul Introduceri"
  • Other modules (Reports) remain functional

Cross-Module Testing

Module Switching

  • Start in Reports module
  • Navigate to Data Entry module
  • Return to Reports module
  • Company selection persists across modules
  • No console errors during switching
  • No memory leaks (check DevTools Memory tab)

Shared State

  • Login state shared (logout in one module logs out everywhere)
  • Company selection shared (change company affects both modules)
  • Period selection shared (for modules that use it)

API Isolation

  • Reports module only calls /api/reports/*
  • Data Entry module only calls /api/data-entry/*
  • No cross-contamination of API calls
  • Auth headers included in all requests

Logout Flow

  • Click logout button in header
  • User redirected to /login
  • Access token removed from localStorage
  • Cannot access protected routes without re-login
  • Attempting to access /reports or /data-entry redirects to login

Browser Compatibility

  • Chrome/Edge (latest)
  • Firefox (latest)
  • Safari (if available)

Responsive Design

  • Desktop (1920x1080)
  • Laptop (1366x768)
  • Tablet (768x1024)
  • Mobile (375x667)

Performance

  • Initial page load < 3s
  • Navigation between modules smooth
  • No unnecessary re-renders (check React DevTools)
  • API responses cached appropriately
  • Bundle sizes reasonable (check Network tab)

Build & Production

  • Run npm run build
  • Build completes without errors
  • Dist folder created with proper structure
  • index.html exists
  • Assets folder has JS/CSS bundles
  • Chunk splitting works (separate bundles for modules)
  • Source maps generated (for debugging)

Cleanup

  • Stop all services: ./start-test.sh stop
  • Verify all ports released (8001, 8003, 8002, 3000)
  • SSH tunnel stopped
  • No lingering processes

Issues Found

Document any issues discovered during testing:

Issue Module Severity Description Status

Sign-Off

  • Tester: _______________
  • Date: _______________
  • Environment: TEST / DEV / PROD
  • Status: PASS / FAIL / NEEDS FIXES

Notes

Additional observations or comments: