mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-26 14:54:55 +00:00
160 lines
3.8 KiB
Markdown
160 lines
3.8 KiB
Markdown
# Package Unit Tests Documentation
|
|
|
|
This document describes the unit testing structure for all packages in the MetaBuilder platform.
|
|
|
|
## Overview
|
|
|
|
Each package in the `/packages` directory has its own `tests/` folder containing unit tests that validate:
|
|
- Package metadata structure
|
|
- Component definitions
|
|
- Configuration validation
|
|
- Data integrity
|
|
|
|
## Test Structure
|
|
|
|
```
|
|
packages/
|
|
├── admin_dialog/
|
|
│ └── tests/
|
|
│ ├── README.md
|
|
│ ├── metadata.test.ts
|
|
│ └── components.test.ts
|
|
├── dashboard/
|
|
│ └── tests/
|
|
│ ├── README.md
|
|
│ ├── metadata.test.ts
|
|
│ └── components.test.ts
|
|
├── data_table/
|
|
│ └── tests/
|
|
│ ├── README.md
|
|
│ ├── metadata.test.ts
|
|
│ └── components.test.ts
|
|
├── form_builder/
|
|
│ └── tests/
|
|
│ ├── README.md
|
|
│ ├── metadata.test.ts
|
|
│ └── components.test.ts
|
|
├── nav_menu/
|
|
│ └── tests/
|
|
│ ├── README.md
|
|
│ ├── metadata.test.ts
|
|
│ └── components.test.ts
|
|
└── notification_center/
|
|
└── tests/
|
|
├── README.md
|
|
├── metadata.test.ts
|
|
└── components.test.ts
|
|
```
|
|
|
|
## Running Tests
|
|
|
|
### Run all unit tests
|
|
```bash
|
|
npm run test:unit
|
|
```
|
|
|
|
### Run tests in watch mode
|
|
```bash
|
|
npm run test:unit:watch
|
|
```
|
|
|
|
### Run tests with UI
|
|
```bash
|
|
npm run test:unit:ui
|
|
```
|
|
|
|
### Run tests with coverage
|
|
```bash
|
|
npm run test:unit:coverage
|
|
```
|
|
|
|
### Run all tests (unit + e2e)
|
|
```bash
|
|
npm run test:all
|
|
```
|
|
|
|
## Test Coverage
|
|
|
|
### Metadata Tests
|
|
Each package includes `metadata.test.ts` that validates:
|
|
- Package ID format (lowercase with underscores)
|
|
- Semantic versioning format
|
|
- Required metadata fields
|
|
- Export configurations
|
|
- Dependency declarations
|
|
|
|
### Component Tests
|
|
Each package includes `components.test.ts` that validates:
|
|
- Component array structure
|
|
- Component ID and type fields
|
|
- Data integrity
|
|
|
|
## Testing Framework
|
|
|
|
- **Framework**: Vitest
|
|
- **Environment**: jsdom
|
|
- **Configuration**: `vitest.config.ts`
|
|
|
|
## CI/CD Integration
|
|
|
|
Unit tests are automatically run in the CI/CD pipeline on:
|
|
- Pull requests
|
|
- Push to main branch
|
|
- Manual workflow dispatch
|
|
|
|
## Adding New Tests
|
|
|
|
When creating a new package:
|
|
|
|
1. Create a `tests/` directory in the package folder
|
|
2. Add `metadata.test.ts` for metadata validation
|
|
3. Add `components.test.ts` for component validation
|
|
4. Add `README.md` documenting the tests
|
|
5. Follow the existing test patterns
|
|
|
|
### Example Test Template
|
|
|
|
```typescript
|
|
import { describe, it, expect } from 'vitest'
|
|
import metadata from '../seed/metadata.json'
|
|
|
|
describe('Package Name Metadata', () => {
|
|
it('should have valid package structure', () => {
|
|
expect(metadata.packageId).toBe('package_id')
|
|
expect(metadata.name).toBeDefined()
|
|
expect(metadata.version).toBeDefined()
|
|
})
|
|
|
|
it('should have semantic version', () => {
|
|
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
|
|
})
|
|
})
|
|
```
|
|
|
|
## Best Practices
|
|
|
|
1. **Keep tests focused**: Each test should validate one specific aspect
|
|
2. **Use descriptive names**: Test names should clearly state what is being tested
|
|
3. **Follow AAA pattern**: Arrange, Act, Assert
|
|
4. **Test edge cases**: Include tests for boundary conditions and error states
|
|
5. **Maintain independence**: Tests should not depend on execution order
|
|
|
|
## Troubleshooting
|
|
|
|
### Tests not found
|
|
Ensure the test file pattern matches `**/*.test.ts` or `**/*.test.tsx`
|
|
|
|
### Import errors
|
|
Check that the relative paths to seed data are correct
|
|
|
|
### Configuration issues
|
|
Verify `vitest.config.ts` includes the correct test paths
|
|
|
|
## Future Enhancements
|
|
|
|
- [ ] Add integration tests for package loading
|
|
- [ ] Add snapshot tests for component rendering
|
|
- [ ] Add performance benchmarks
|
|
- [ ] Add mutation testing
|
|
- [ ] Add visual regression tests
|