Modern ERP Reports Application with microservices architecture Tech Stack: - Backend: FastAPI + python-oracledb (Oracle DB integration) - Frontend: Vue.js 3 + PrimeVue + Vite - Telegram Bot: python-telegram-bot + SQLite - Infrastructure: Shared database pool, JWT authentication, SSH tunnel Features: - FastAPI backend with async Oracle connection pool - Vue.js 3 responsive frontend with PrimeVue components - Telegram bot alternative interface - Microservices architecture with shared components - Complete deployment support (Linux Docker + Windows IIS) - Comprehensive testing (Playwright E2E + pytest) Repository Structure: - reports-app/ - Main application (backend, frontend, telegram-bot) - shared/ - Shared components (database pool, auth, utils) - deployment/ - Deployment scripts (Linux & Windows) - docs/ - Project documentation - security/ - Security scanning and git hooks
ROA2WEB Integration Tests with Console Error Monitoring
This directory contains comprehensive integration tests for the ROA2WEB application, implementing the full Playwright testing plan with console error monitoring and real Oracle data validation.
🎯 Overview
The integration test suite provides:
- Console Error Monitoring - Comprehensive tracking and classification of frontend errors
- Real Oracle Data Testing - Integration tests using actual CONTAFIN_ORACLE credentials
- Performance Regression Testing - Automated baseline validation and monitoring
- Cross-Schema Validation - Testing data flow between Oracle schemas
- Health Monitoring - Backend service and database connectivity validation
🏗️ Test Architecture
tests/integration/
├── real-auth/ # Real authentication tests
│ └── oracle-login.spec.js # CONTAFIN_ORACLE credential testing
├── real-data/ # Real data integration tests
│ └── romfast-reports.spec.js # ROMFAST company data validation
├── api-endpoints/ # Backend API validation
│ ├── health-check.spec.js # Service health monitoring
│ └── data-consistency.spec.js # Cross-schema data validation
├── console-monitoring/ # Console error analysis
│ ├── error-tracking.spec.js # Error pattern detection
│ └── performance-monitoring.spec.js # Performance regression testing
├── global-setup.js # Test environment setup
├── global-teardown.js # Test cleanup
└── README.md # This file
🔧 Setup and Configuration
1. Environment Configuration
Copy the example environment file:
cp .env.test.example .env.test
Edit .env.test with your database configuration:
# Oracle Database (through SSH tunnel)
ORACLE_USER=CONTAFIN_ORACLE
ORACLE_PASSWORD=your_password_here
ORACLE_HOST=localhost
ORACLE_PORT=1521
ORACLE_SID=ROA
# Test Credentials
TEST_USERNAME=MARIUS M
TEST_PASSWORD=PAROLA9911
TEST_COMPANY=ROMFAST
2. Prerequisites
- SSH Tunnel Active: Oracle database accessible via SSH tunnel
- Backend Running: FastAPI backend on port 8000
- Frontend Running: Vue.js frontend on port 3001
- Node.js: v16+ with npm
- Python: v3.8+ with backend dependencies
3. Service Dependencies
Ensure all services are running:
# SSH Tunnel
cd /path/to/roa2web
./ssh_tunnel.sh start
# Backend
cd reports-app/backend
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
# Frontend
cd reports-app/frontend
npm run dev
🚀 Running Tests
Quick Start - Comprehensive Test Suite
Run all tests with service management:
./run-comprehensive-tests.sh
Individual Test Categories
Real Authentication Tests:
npx playwright test tests/integration/real-auth/ --config=playwright.real-api.config.js
ROMFAST Data Integration:
npx playwright test tests/integration/real-data/ --config=playwright.real-api.config.js
Console Error Monitoring:
npx playwright test tests/integration/console-monitoring/ --config=playwright.real-api.config.js
Backend Health Monitoring:
npx playwright test tests/integration/api-endpoints/ --config=playwright.real-api.config.js
Test Runner Options
# Skip mock tests, run integration only
./run-comprehensive-tests.sh --no-mock
# Skip integration tests, run mock only
./run-comprehensive-tests.sh --no-integration
# Don't cleanup services (for debugging)
./run-comprehensive-tests.sh --no-cleanup
# Skip report generation
./run-comprehensive-tests.sh --no-reports
📊 Console Error Monitoring
Error Classification System
The test suite automatically classifies console messages:
- CRITICAL: Authentication failures, database errors, uncaught exceptions
- WARNING: Network failures, 404 errors, component warnings
- INFO: Development messages, HMR notifications, DevTools
- UNKNOWN: Unclassified error patterns
Performance Baselines
Automated validation against performance baselines:
PerformanceBaselines = {
loginTime: 2000, // Max 2s for login
dashboardLoad: 3000, // Max 3s for dashboard
reportGeneration: 5000, // Max 5s for reports
apiResponse: 1500, // Max 1.5s for API calls
pageLoad: 4000 // Max 4s for page loads
}
Error Pattern Detection
Automatic detection of recurring error patterns:
- Failed fetch requests
- 404 Not Found errors
- JavaScript TypeErrors
- Vue component warnings
- Oracle connection issues
🔍 Test Categories
Real Authentication Tests (real-auth/)
- Oracle Login Testing: Validates CONTAFIN_ORACLE authentication
- JWT Token Management: Tests token storage and expiration
- Session Persistence: Validates session across page reloads
- Invalid Credentials: Tests error handling for bad credentials
- Performance Monitoring: Measures auth response times
Real Data Integration (real-data/)
- ROMFAST Data Loading: Tests real company data integration
- Invoice Schema Validation: Validates Oracle invoice data fields
- Payment Data Testing: Tests payment data structure and loading
- Data Filtering: Tests search and filter functionality
- Dashboard Metrics: Validates dashboard accuracy with real data
- Performance Under Load: Tests data loading performance
API Endpoint Validation (api-endpoints/)
- Health Check Monitoring: Validates backend and database health
- SSH Tunnel Dependency: Tests tunnel connectivity requirements
- Error Rate Monitoring: Tracks API error patterns
- Concurrent Load Testing: Tests backend under concurrent requests
- Resource Usage Monitoring: Detects memory leaks and resource issues
- Cross-Schema Data Validation: Tests Oracle schema relationships
Console Error Analysis (console-monitoring/)
- Error Pattern Detection: Identifies recurring error patterns
- Performance Warning Detection: Monitors performance-related warnings
- Error Context Analysis: Provides debugging context for errors
- Comprehensive Error Reporting: Generates detailed error reports
- Memory Leak Detection: Monitors JavaScript memory usage
- Performance Regression Testing: Validates performance consistency
📈 Performance Monitoring
Metrics Collected
- Page Load Times: DOM content loaded, first paint, interactive
- API Response Times: Individual and average response times
- Network Resource Timing: Resource loading performance
- Memory Usage: JavaScript heap size monitoring
- Error Frequencies: Console error occurrence rates
Regression Detection
- Baseline Validation: Automatic comparison against performance baselines
- Consistency Analysis: Validates performance across multiple runs
- Outlier Detection: Identifies abnormal performance spikes
- Trend Analysis: Monitors performance degradation over time
🏥 Health Monitoring
Service Health Checks
- Backend Health:
/healthendpoint validation - Database Connectivity: Oracle connection through SSH tunnel
- Frontend Availability: Vue.js application responsiveness
- SSH Tunnel Status: Tunnel connectivity validation
Error Handling Validation
- Graceful Degradation: Tests behavior during service failures
- Error Message Clarity: Validates user-facing error messages
- Recovery Mechanisms: Tests automatic recovery from failures
- Fallback Behavior: Validates fallback when services unavailable
📋 Test Reports
Report Types Generated
- HTML Reports: Interactive test results with screenshots
- JSON Reports: Machine-readable test data
- JUnit Reports: CI/CD integration format
- Console Error Reports: Detailed error analysis
- Performance Reports: Performance metrics and trends
Report Locations
test-results/
├── playwright-report-integration/ # HTML reports
├── integration-results.json # JSON results
├── integration-junit.xml # JUnit format
├── integration-summary.json # Combined summary
└── reports/ # Additional reports
└── comprehensive-test-report-*.json
🔧 Debugging and Troubleshooting
Common Issues
SSH Tunnel Not Running:
cd /path/to/roa2web
./ssh_tunnel.sh status
./ssh_tunnel.sh start
Backend Not Accessible:
curl http://localhost:8000/health
# Should return: {"database":"connected","api":"healthy"}
Frontend Not Running:
curl http://localhost:3001
# Should return HTML content
Oracle Connection Issues:
- Verify SSH tunnel is active
- Check Oracle credentials in environment
- Validate database accessibility through tunnel
Debug Mode
Run tests with detailed logging:
DEBUG=1 npx playwright test --config=playwright.real-api.config.js
View console messages during test execution:
npx playwright test --headed --config=playwright.real-api.config.js
Log Files
Test execution logs are available in:
frontend.log- Frontend service logsbackend.log- Backend service logstest-results/*.log- Individual test logs
🎯 Success Criteria
Passing Integration Tests
- ✅ Zero critical console errors with real data
- ✅ Response times under baseline thresholds
- ✅ 100% coverage for ROMFAST company flows
- ✅ Automatic error pattern detection working
- ✅ Performance baselines consistently met
- ✅ Cross-schema data validation passing
- ✅ Health monitoring detecting issues correctly
Performance Requirements
- Login: < 2 seconds
- Dashboard load: < 3 seconds
- Report generation: < 5 seconds
- API responses: < 1.5 seconds
- Page loads: < 4 seconds
Error Tolerance
- Critical errors: 0 allowed
- Warning errors: < 10 per test run
- Performance degradation: < 50% variance
- Memory leaks: < 100% memory growth
🤝 Contributing
Adding New Integration Tests
- Create test file in appropriate category directory
- Import required utilities from
../../utils/ - Use
setupConsoleCapture(page)inbeforeEach - Use
assertNoCriticalErrors(page, expect)for validation - Generate error reports in
afterEach
Test Utilities Available
setupConsoleCapture()- Console monitoring setupauthenticateWithRealCredentials()- Real Oracle authenticationselectCompany()- Company selection helperassertNoCriticalErrors()- Error validationgenerateErrorReport()- Comprehensive error reportingPerformanceMonitor- Performance measurement utilities
Best Practices
- Always use real credentials for integration tests
- Monitor console errors in all tests
- Validate performance against baselines
- Generate comprehensive error reports
- Test with actual Oracle data when possible
- Clean up test state between runs
Integration Test Status: ✅ Fully Implemented
Console Monitoring: ✅ Active
Real Data Testing: ✅ ROMFAST Validated
Performance Monitoring: ✅ Baseline Tracking
Error Analysis: ✅ Pattern Detection Active