- Replace 'any' types with proper TypeScript interfaces in auth setup/teardown - Remove conflicting custom Playwright type declarations that were overriding official types - Fix ES module compatibility by replacing require() with proper import paths - Add proper generic typing to Playwright test fixtures - Fix test discovery in auth debug configuration - Add comprehensive auth debug setup documentation Fixes: - 3 lint warnings about explicit 'any' usage - 45+ TypeScript compilation errors from type conflicts - ES module import errors in auth configuration - Test fixture typing issues All e2e tests now pass lint and type checking with zero warnings.
7.4 KiB
Authentication Debug Setup Guide
This guide explains the auth-debug-setup.ts file and how to use it for debugging authentication flows in the Medication Reminder application.
Overview
The auth-debug-setup.ts file is a Playwright global setup script specifically designed for debugging authentication-related issues. It ensures that all required services are running and properly configured before running authentication tests.
What It Does
🔧 Service Initialization
- Frontend Service: Verifies the app is running on
http://localhost:8080 - CouchDB Database: Ensures CouchDB is accessible on
http://localhost:5984 - Database Setup: Creates necessary databases if they don't exist
- Admin User Verification: Tests admin login functionality end-to-end
📊 Diagnostics
- Service Health Checks: Comprehensive connectivity testing
- Database Status: Lists available databases and connection status
- Environment Information: Logs Node.js version, platform, and environment variables
- Network Connectivity: Tests various endpoints for accessibility
File Structure
// Main setup functions
globalSetup(); // Orchestrates all setup tasks
waitForServices(); // Waits for services to be ready
initializeTestData(); // Creates required databases
verifyAdminUser(); // Tests admin login flow
logEnvironmentInfo(); // Logs debugging information
// Diagnostic utilities
runServiceDiagnostics(); // Comprehensive service testing
testDatabaseConnectivity(); // Detailed database status
Configuration
Required Services
Before running auth debug tests, ensure these services are running:
-
Frontend Application
bun run dev # Runs on http://localhost:8080 -
CouchDB Database
docker-compose -f docker/docker-compose.yaml up -d # Runs on http://localhost:5984
Environment Variables
The setup respects these environment variables:
NODE_ENV: Environment mode (development/test/production)CI: CI/CD environment flagDEBUG_MODE: Enables additional debugging features
Database Configuration
The setup creates these databases automatically:
users- User accounts and authentication datamedications- Medication informationsettings- Application settingstaken_doses- Medication intake recordsreminders- Reminder configurations
Default Credentials
The setup uses these default credentials for testing:
- CouchDB:
admin:password - Test Admin User:
admin@localhost:admin123!
Usage
Running Auth Debug Tests
# Run auth debug tests specifically
bunx playwright test --config=tests/e2e/playwright.auth.config.ts
# Run with UI for interactive debugging
bunx playwright test --config=tests/e2e/playwright.auth.config.ts --ui
# Run in debug mode
bunx playwright test --config=tests/e2e/playwright.auth.config.ts --debug
Manual Setup Verification
You can verify the setup manually:
# Check frontend
curl http://localhost:8080
# Check CouchDB
curl -u admin:password http://localhost:5984
# List databases
curl -u admin:password http://localhost:5984/_all_dbs
Troubleshooting
Common Issues
1. Services Not Ready
Symptoms: Setup fails with service connection errors Solutions:
# Check if services are running
docker ps
netstat -tlnp | grep 8080
netstat -tlnp | grep 5984
# Restart services
docker-compose -f docker/docker-compose.yaml restart
bun run dev
2. Database Connection Failed
Symptoms: CouchDB authentication or connection errors Solutions:
# Check CouchDB logs
docker-compose -f docker/docker-compose.yaml logs couchdb
# Reset CouchDB data
docker-compose -f docker/docker-compose.yaml down -v
docker-compose -f docker/docker-compose.yaml up -d
3. Admin User Not Found
Symptoms: Admin login verification fails Solutions:
- Check if admin user exists in the users database
- Verify credentials match the expected format
- Create admin user manually if needed
4. Timeout Issues
Symptoms: Setup times out waiting for services Solutions:
# Increase timeout values in setup
# Check system resources
free -h
docker stats
# Reduce parallel processes
pkill -f "node.*vite"
pkill -f "playwright"
Debug Logs
The setup provides detailed logging at different levels:
// Enable debug logging
logger.setLevel(LogLevel.DEBUG);
// View specific context logs
logger.getLogs('SETUP');
logger.getLogs('AUTH');
logger.getLogs('DATABASE');
Diagnostic Output
The setup generates comprehensive diagnostic information:
🌍 Environment Information:
Node.js: v18.17.0
Platform: linux
NODE_ENV: test
CI: false
Frontend URL: http://localhost:8080
CouchDB URL: http://localhost:5984
🔍 Running comprehensive service diagnostics...
Frontend status: 200 OK
Database connected with 5 databases
Health endpoint accessible
✅ Auth debug setup completed in 2847ms
Integration with Test Suite
Playwright Configuration
The setup integrates with playwright.auth.config.ts:
export default defineConfig({
globalSetup: require.resolve('./auth-debug-setup.ts'),
globalTeardown: require.resolve('./auth-debug-teardown.ts'),
// ... other config
});
Test Dependencies
Tests that depend on this setup:
auth-debug.spec.ts- Main authentication validation testsadmin.spec.ts- Admin functionality testsauth.spec.ts- General authentication tests
Best Practices
1. Environment Isolation
- Use dedicated test databases
- Clean up test data between runs
- Avoid production credentials
2. Robust Error Handling
- Don't fail setup for non-critical issues
- Log warnings for optional features
- Provide helpful error messages
3. Service Dependencies
- Wait for all required services
- Test actual connectivity, not just port availability
- Verify service functionality, not just status
4. Debugging Support
- Comprehensive logging at appropriate levels
- Detailed diagnostic information
- Clear failure messages with next steps
Development
Modifying the Setup
When modifying the setup script:
- Test thoroughly in different environments
- Maintain backward compatibility with existing tests
- Update documentation for any new features
- Add appropriate logging for debugging
Adding New Services
To add new service checks:
// Add to waitForServices()
await waitForService('http://localhost:9000', 'NewService');
// Add diagnostic check
async function checkNewService() {
// Implementation
}
Environment-Specific Configuration
For different environments:
const config = {
development: {
timeout: 60000,
retries: 3,
},
ci: {
timeout: 120000,
retries: 5,
},
};
Related Files
auth-debug-teardown.ts- Cleanup and reportingauth-debug.spec.ts- Main authentication testsplaywright.auth.config.ts- Playwright configurationAUTH-DEBUG-GUIDE.md- Test execution guide
Support
For issues with the auth debug setup:
- Check the diagnostic output for specific error messages
- Verify all required services are running
- Review the troubleshooting section above
- Check related test files for configuration examples
- Enable debug logging for detailed information
The setup is designed to be self-diagnosing and should provide clear information about any issues encountered during initialization.