mirror of
https://github.com/samsonjs/Peekaboo.git
synced 2026-03-25 09:25:47 +00:00
90 lines
No EOL
2.6 KiB
Markdown
90 lines
No EOL
2.6 KiB
Markdown
# Peekaboo Test Suite
|
|
|
|
## Overview
|
|
|
|
The Peekaboo test suite is designed to be **fully portable and runnable on any operating system** without requiring:
|
|
- macOS
|
|
- Screen recording permissions
|
|
- The Swift CLI binary
|
|
- Any specific system configuration
|
|
|
|
## Test Structure
|
|
|
|
```
|
|
tests/
|
|
├── unit/ # Unit tests for individual components
|
|
│ ├── tools/ # Tests for each tool (image, list, analyze)
|
|
│ └── utils/ # Tests for utility functions
|
|
├── integration/ # Integration tests for tool interactions
|
|
└── mocks/ # Mock implementations
|
|
```
|
|
|
|
## Key Design Decisions
|
|
|
|
### All Tests Use Mocks
|
|
|
|
Every test in this suite uses mocked implementations of the Swift CLI. This means:
|
|
|
|
1. **Cross-platform compatibility** - Tests run on Linux, Windows, and macOS
|
|
2. **No permissions required** - No screen recording or system permissions needed
|
|
3. **Fast execution** - No actual screen captures or file I/O
|
|
4. **Deterministic results** - Tests always produce the same output
|
|
5. **CI/CD friendly** - Can run in any continuous integration environment
|
|
|
|
### What We Test
|
|
|
|
- **Business Logic** - Tool parameter validation, response formatting
|
|
- **Error Handling** - All error scenarios including permissions, timeouts, invalid inputs
|
|
- **Integration** - How tools work together and with the MCP protocol
|
|
- **Type Safety** - TypeScript types and Zod schema validation
|
|
- **Edge Cases** - Long file paths, special characters, concurrent execution
|
|
|
|
### What We Don't Test
|
|
|
|
- Actual Swift CLI binary execution
|
|
- Real screen capture functionality
|
|
- macOS-specific permissions
|
|
- Binary file permissions/existence
|
|
|
|
## Running Tests
|
|
|
|
```bash
|
|
# Run all tests
|
|
npm test
|
|
|
|
# Run with coverage
|
|
npm run test:coverage
|
|
|
|
# Run in watch mode
|
|
npm run test:watch
|
|
|
|
# Run specific test file
|
|
npm test -- tests/unit/tools/image.test.ts
|
|
```
|
|
|
|
## Coverage Goals
|
|
|
|
We aim for high test coverage while acknowledging that some code paths (actual Swift CLI execution) cannot be tested in this portable test suite:
|
|
|
|
- Overall coverage target: >85%
|
|
- Critical business logic: >95%
|
|
- Error handling paths: 100%
|
|
|
|
## Future Considerations
|
|
|
|
For true end-to-end testing that exercises the real Swift CLI, consider creating a separate `e2e` test suite that:
|
|
|
|
1. Only runs on macOS with proper permissions
|
|
2. Is excluded from regular CI runs
|
|
3. Tests actual screen capture functionality
|
|
4. Validates Swift CLI binary behavior
|
|
|
|
Example structure:
|
|
```
|
|
tests/
|
|
├── e2e/ # End-to-end tests (macOS only)
|
|
│ ├── real-capture.test.ts
|
|
│ └── permissions.test.ts
|
|
```
|
|
|
|
These tests would be run manually or in specialized macOS CI environments. |