Files
rxminder/tests/README.md
William Valentin e48adbcb00 Initial commit: Complete NodeJS-native setup
- Migrated from Python pre-commit to NodeJS-native solution
- Reorganized documentation structure
- Set up Husky + lint-staged for efficient pre-commit hooks
- Fixed Dockerfile healthcheck issue
- Added comprehensive documentation index
2025-09-06 01:42:48 -07:00

172 lines
4.7 KiB
Markdown

# 🧪 Testing Documentation
## Test Structure
```
tests/
├── setup.ts # Jest configuration and global test setup
├── integration/ # Integration tests for production validation
│ └── production.test.js # CouchDB, deployment, and service testing
├── manual/ # Manual testing scripts and debugging tools
│ ├── admin-login-debug.js # Browser console debugging for admin login
│ ├── auth-db-debug.js # Authentication database debugging
│ └── debug-email-validation.js # Email validation debugging
└── e2e/ # End-to-end tests with Playwright
├── README.md # E2E testing documentation
├── fixtures.ts # Custom test fixtures
├── helpers.ts # Test utilities and data
├── auth.spec.ts # Authentication flow tests
├── medication.spec.ts # Medication management tests
├── admin.spec.ts # Admin interface tests
├── ui-navigation.spec.ts # UI and navigation tests
└── reminders.spec.ts # Reminder system tests
services/
└── auth/
└── __tests__/ # Unit tests for authentication services
├── auth.integration.test.ts
└── emailVerification.test.ts
```
## Running Tests
### Unit Tests (Jest)
```bash
# Run all unit tests
bun run test
# Run tests in watch mode
bun run test:watch
# Run with coverage
bun run test:coverage
# Run specific test file
bun run test auth.integration.test.ts
```
### Integration Tests
```bash
# Run production integration tests
bun run test:integration
# Run all tests (unit + integration + e2e)
bun run test:all
# Run E2E tests with Playwright
bun run test:e2e
# Run E2E tests in UI mode
bun run test:e2e:ui
# Debug E2E tests
bun run test:e2e:debug
# View E2E test reports
bun run test:e2e:report
```
### Manual Testing Scripts
#### Admin Login Debug
```bash
# Open browser to http://localhost:8080
# Open developer console
# Run:
bun tests/manual/admin-login-debug.js
```
#### Auth Database Debug
```bash
# Open browser to http://localhost:8080
# Open developer console
# Run:
bun tests/manual/auth-db-debug.js
```
## Test Categories
### ✅ Unit Tests (`services/auth/__tests__/`)
- **Purpose**: Test individual functions and services in isolation
- **Framework**: Jest + TypeScript
- **Coverage**: Authentication, email verification
- **Status**: ✅ Well-structured and maintained
### 🔧 Integration Tests (`tests/integration/`)
- **Purpose**: Test entire system interactions and deployment validation
- **Framework**: Bun native testing
- **Coverage**: CouchDB connectivity, database setup, production readiness
- **Status**: ✅ Useful for deployment validation
### 🛠️ Manual Tests (`tests/manual/`)
- **Purpose**: Browser-based debugging and manual verification
- **Framework**: Vanilla JavaScript for browser console
- **Coverage**: Admin authentication, database debugging
- **Status**: ⚠️ Useful for debugging but should be automated
### 🎯 E2E Tests (`tests/e2e/`)
- **Purpose**: Full user journey testing across browsers
- **Framework**: Playwright with TypeScript
- **Coverage**: Complete user workflows, cross-browser compatibility
- **Status**: ✅ Comprehensive test suite with 5 spec files
## Test Configuration
### Jest Configuration (`jest.config.json`)
- TypeScript support with ts-jest
- jsdom environment for DOM testing
- Coverage reporting
- Module path mapping
### Test Setup (`tests/setup.ts`)
- localStorage mocking
- fetch mocking
- Console noise reduction
- Global test utilities
## Recommendations
### ✅ Keep These Tests
1. **Authentication unit tests** - Critical for security
2. **Production integration tests** - Essential for deployment validation
3. **Manual debugging scripts** - Useful for development
### 🔄 Future Improvements
1. **Remove temporary type declarations** once Playwright types are fully recognized
2. **Increase unit test coverage** for components and utilities
3. **Add visual regression tests** using Playwright screenshots
4. **Implement accessibility testing** in E2E suite
5. **Add performance tests** for large datasets
6. **Set up test data management** for E2E tests
### 🛡️ Testing Best Practices
- Run tests before every deployment
- Maintain >80% code coverage for critical paths
- Use integration tests to validate environment setup
- Keep manual tests for complex debugging scenarios
## CI/CD Integration
Add to your deployment pipeline:
```bash
# Validate tests before deployment
bun run test:all
# Run in production validation
bun run test:integration
```