A comprehensive test suite has been implemented for MeshMonitor using Vitest as the testing framework. The suite covers database operations, API endpoints, and frontend components.
- Node Operations: CRUD operations for node management
- Message Operations: Message storage and retrieval
- Channel Operations: Channel management functionality
- Telemetry Operations: Telemetry data storage
- Traceroute Operations: Network path tracking
- Cleanup Operations: Data purging functionality
- Favorite Operations: Node favorite status management, sync from NodeInfo protobuf
- Node Endpoints:
/api/nodes,/api/nodes/active - Message Endpoints: Message sending, retrieval, and filtering
- Channel Endpoints: Channel listing and management
- Statistics Endpoints: System metrics and analytics
- Health Endpoints: System status checks
- Import/Export: Data backup and restore
- Cleanup Endpoints: Data maintenance operations
- Telemetry Endpoints: Telemetry data access
- Traceroute Endpoints: Network analysis operations
- UI rendering tests
- Data fetching behavior
- User interaction handling
- Error state management
- Loading state verification
- Data visualization tests
# Run all tests once
npm run test:run
# Run tests in watch mode
npm run test
# Run tests with UI
npm run test:ui
# Generate coverage report
npm run test:coverage- Framework: Vitest
- React Testing: @testing-library/react
- API Testing: Supertest
- Assertions: @testing-library/jest-dom
- User Events: @testing-library/user-event
✅ Node CRUD operations ✅ Message storage and retrieval ✅ Channel management ✅ Telemetry data handling ✅ Traceroute tracking ✅ Data cleanup operations ✅ Favorite node management ✅ NodeInfo protobuf favorite sync
✅ RESTful endpoints ✅ Error handling ✅ Request validation ✅ Response formatting ✅ Authentication checks ✅ Data export/import
✅ Component rendering ✅ State management ✅ User interactions ✅ Data fetching ✅ Error boundaries ✅ Loading states
The test suite uses comprehensive mocking to ensure tests are isolated and predictable:
- Database Mocking: In-memory SQLite for database tests
- API Mocking: Mock Express app with stubbed database calls
- Network Mocking: Mocked fetch API for component tests
- Component Mocking: Mocked chart libraries to avoid rendering issues
- Test Isolation: Each test runs independently
- Descriptive Names: Clear test descriptions
- Arrange-Act-Assert: Consistent test structure
- Error Testing: Both success and failure paths tested
- Edge Cases: Boundary conditions and edge cases covered
- Mocking Strategy: Appropriate mocking at each layer
- Integration Tests: End-to-end testing with real database
- Performance Tests: Load testing for API endpoints
- Snapshot Testing: UI component snapshot tests
- Mutation Testing: Test quality verification
- Security Tests: Authentication and authorization testing
- WebSocket Tests: Real-time communication testing
The test suite is ready for CI/CD integration:
# Example GitHub Actions workflow
- name: Run Tests
run: npm run test:run
- name: Generate Coverage
run: npm run test:coverage
- name: Upload Coverage
uses: codecov/codecov-action@v3- Some tests may need adjustment for Node.js version compatibility
- jsdom environment required for component tests
- Database mock may need refinement for complex queries
Regular test maintenance should include:
- Updating tests when features change
- Adding tests for new features
- Reviewing and updating mocks
- Monitoring test execution time
- Maintaining test coverage above 80%