chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,262 @@
|
||||
# Testing Guide for claude-code-templates
|
||||
|
||||
This guide explains how to test the `claude-code-templates` CLI tool before publishing.
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
# Install for local testing
|
||||
npm run dev:link
|
||||
|
||||
# Run basic tests
|
||||
npm test
|
||||
|
||||
# Run detailed tests
|
||||
npm run test:detailed
|
||||
|
||||
# Test specific frameworks
|
||||
npm run test:react
|
||||
npm run test:vue
|
||||
npm run test:node
|
||||
|
||||
# Uninstall when done
|
||||
npm run dev:unlink
|
||||
```
|
||||
|
||||
## Testing Methods
|
||||
|
||||
### 1. **NPM Scripts (Recommended)**
|
||||
|
||||
```bash
|
||||
# Basic test suite
|
||||
npm test
|
||||
|
||||
# Detailed testing with all scenarios
|
||||
npm run test:detailed
|
||||
|
||||
# Test specific frameworks
|
||||
npm run test:react # Test React setup
|
||||
npm run test:vue # Test Vue setup
|
||||
npm run test:node # Test Node.js setup
|
||||
|
||||
# Full test suite
|
||||
npm run test:all
|
||||
```
|
||||
|
||||
### 2. **Makefile Commands**
|
||||
|
||||
```bash
|
||||
# Install for testing
|
||||
make install-dev
|
||||
|
||||
# Run specific tests
|
||||
make test-basic # Basic functionality
|
||||
make test-detailed # Comprehensive tests
|
||||
make test-react # React scenario
|
||||
make test-vue # Vue scenario
|
||||
make test-node # Node.js scenario
|
||||
|
||||
# Interactive testing (manual)
|
||||
make test-interactive
|
||||
|
||||
# Full pre-publish check
|
||||
make pre-publish
|
||||
|
||||
# Cleanup
|
||||
make uninstall-dev
|
||||
```
|
||||
|
||||
### 3. **Manual Testing**
|
||||
|
||||
```bash
|
||||
# Link package locally
|
||||
npm link
|
||||
|
||||
# Test different scenarios manually
|
||||
claude-code-templates --help
|
||||
claude-code-templates --version
|
||||
claude-code-templates --dry-run
|
||||
claude-code-templates --language javascript-typescript --framework react --yes
|
||||
claude-code-templates --language common --yes
|
||||
|
||||
# Test in different directories
|
||||
mkdir test-project && cd test-project
|
||||
claude-code-templates --language javascript-typescript --framework vue --yes
|
||||
ls -la # Check created files
|
||||
|
||||
# Cleanup
|
||||
npm unlink -g claude-code-templates
|
||||
```
|
||||
|
||||
### 4. **Direct Node Execution**
|
||||
|
||||
```bash
|
||||
# Test without installing globally
|
||||
node bin/create-claude-config.js --help
|
||||
node bin/create-claude-config.js --dry-run --language javascript-typescript --framework react --yes
|
||||
```
|
||||
|
||||
## Test Coverage
|
||||
|
||||
### Automated Tests Include:
|
||||
|
||||
- ✅ **Command Variants**: All CLI aliases work
|
||||
- ✅ **Help & Version**: Basic commands respond correctly
|
||||
- ✅ **Language Support**: JavaScript/TypeScript, Common, Python, Rust, Go
|
||||
- ✅ **Framework Support**: React, Vue, Angular, Node.js, None
|
||||
- ✅ **File Creation**: CLAUDE.md, .claude directory, settings.json
|
||||
- ✅ **Framework Commands**: Framework-specific commands are created
|
||||
- ✅ **Dry Run Mode**: Preview mode works without creating files
|
||||
- ✅ **Error Handling**: Invalid languages/frameworks are rejected
|
||||
|
||||
### Framework-Specific Tests:
|
||||
|
||||
**React:**
|
||||
- Component creation commands
|
||||
- Hooks management commands
|
||||
- State management helpers
|
||||
|
||||
**Vue.js:**
|
||||
- Component creation commands
|
||||
- Composables helpers
|
||||
- Vue 3 patterns
|
||||
|
||||
**Angular:**
|
||||
- Component generation
|
||||
- Service creation
|
||||
- Dependency injection patterns
|
||||
|
||||
**Node.js:**
|
||||
- API endpoint creation
|
||||
- Middleware helpers
|
||||
- Database integration
|
||||
|
||||
## Pre-Publish Checklist
|
||||
|
||||
Before publishing a new version, run:
|
||||
|
||||
```bash
|
||||
# Full automated test suite
|
||||
npm run test:all
|
||||
|
||||
# Manual verification
|
||||
make test-interactive
|
||||
|
||||
# Test in fresh environment
|
||||
make pre-publish
|
||||
```
|
||||
|
||||
### Manual Verification Steps:
|
||||
|
||||
1. **Interactive Flow**: Start `claude-code-templates` without flags and go through the full interactive setup
|
||||
2. **Error Scenarios**: Test invalid inputs and edge cases
|
||||
3. **File Content**: Verify that created files have correct content
|
||||
4. **Framework Detection**: Test in projects with existing package.json files
|
||||
5. **Permissions**: Test in different directory permission scenarios
|
||||
|
||||
## Continuous Integration
|
||||
|
||||
The `prepublishOnly` script automatically runs tests before publishing:
|
||||
|
||||
```json
|
||||
{
|
||||
"scripts": {
|
||||
"prepublishOnly": "npm run sync && npm run test"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
This ensures that:
|
||||
- Templates are synchronized
|
||||
- All tests pass
|
||||
- Package is ready for publication
|
||||
|
||||
## Test Environments
|
||||
|
||||
### Local Development
|
||||
```bash
|
||||
npm run dev:link # Install locally
|
||||
# ... test commands ...
|
||||
npm run dev:unlink # Remove when done
|
||||
```
|
||||
|
||||
### CI/CD Pipeline
|
||||
```bash
|
||||
npm ci # Clean install
|
||||
npm test # Run test suite
|
||||
npm run build # If applicable
|
||||
```
|
||||
|
||||
### Production Testing
|
||||
```bash
|
||||
# Test published version
|
||||
npx claude-code-templates@latest --version
|
||||
npx claude-code-templates@latest --help
|
||||
```
|
||||
|
||||
## Debugging Tests
|
||||
|
||||
### Verbose Output
|
||||
```bash
|
||||
# Add verbose flag to see detailed output
|
||||
claude-code-templates --language javascript-typescript --framework react --dry-run --yes --verbose
|
||||
```
|
||||
|
||||
### Test Specific Scenarios
|
||||
```bash
|
||||
# Create isolated test environment
|
||||
mkdir /tmp/test-claude && cd /tmp/test-claude
|
||||
claude-code-templates --language javascript-typescript --framework react --yes
|
||||
ls -la .claude/commands/
|
||||
cat CLAUDE.md
|
||||
```
|
||||
|
||||
### Check Generated Files
|
||||
```bash
|
||||
# Verify file content
|
||||
find .claude -name "*.md" -exec echo "=== {} ===" \; -exec cat {} \;
|
||||
```
|
||||
|
||||
## Common Issues & Solutions
|
||||
|
||||
### Permission Errors
|
||||
```bash
|
||||
# If npm link fails due to permissions
|
||||
sudo npm link # Use with caution
|
||||
# Or use local npm prefix
|
||||
npm config set prefix ~/.npm-global
|
||||
```
|
||||
|
||||
### Command Not Found
|
||||
```bash
|
||||
# If linked command isn't found
|
||||
which claude-code-templates
|
||||
echo $PATH
|
||||
# May need to add npm global bin to PATH
|
||||
```
|
||||
|
||||
### Template Sync Issues
|
||||
```bash
|
||||
# Force sync before testing
|
||||
npm run sync
|
||||
```
|
||||
|
||||
## Contributing Tests
|
||||
|
||||
When adding new features, also add tests:
|
||||
|
||||
1. Update `test-commands.sh` for basic scenarios
|
||||
2. Update `test-detailed.sh` for comprehensive coverage
|
||||
3. Add Makefile targets for specific test cases
|
||||
4. Update this README with new test procedures
|
||||
|
||||
## Test File Structure
|
||||
|
||||
```
|
||||
cli-tool/
|
||||
├── test-commands.sh # Basic test suite
|
||||
├── test-detailed.sh # Comprehensive tests
|
||||
├── Makefile # Test automation
|
||||
├── TESTING.md # This guide
|
||||
└── package.json # NPM test scripts
|
||||
```
|
||||
Reference in New Issue
Block a user