add: comprehensive TDD test infrastructure

- Add Vitest + jsdom testing framework
- Create unit tests for engine.js and generator.js
- Add integration tests for end-to-end workflows
- Include test utilities and setup helpers
- Document testing approach in TESTING.md
- Document all dependencies in DEPENDS.md
- Add Makefile with test targets and dev workflow

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-18 23:36:22 +01:00
parent eeebdd72d5
commit 2090e372bd
10 changed files with 1320 additions and 0 deletions

139
Makefile Normal file
View File

@@ -0,0 +1,139 @@
.PHONY: help install test test-watch test-coverage test-ui clean serve lint format deps-check deps-update
# Default target
help:
@echo "Timeline SVG Generator - Make Targets"
@echo "====================================="
@echo ""
@echo "Development:"
@echo " install Install development dependencies"
@echo " serve Start local development server"
@echo " clean Clean node_modules and coverage"
@echo ""
@echo "Testing:"
@echo " test Run all tests once"
@echo " test-watch Run tests in watch mode (TDD)"
@echo " test-coverage Run tests with coverage report"
@echo " test-ui Open browser-based test UI"
@echo ""
@echo "Quality:"
@echo " lint Run code linting (if configured)"
@echo " format Format code (if configured)"
@echo ""
@echo "Dependencies:"
@echo " deps-check Check for outdated dependencies"
@echo " deps-update Update dependencies"
@echo " deps-audit Security audit of dependencies"
@echo ""
# Development setup
install:
@echo "Installing development dependencies..."
npm install
@echo "✅ Dependencies installed"
# Testing targets
test:
@echo "Running tests..."
@if [ ! -d "node_modules" ]; then \
echo "❌ Dependencies not installed. Run 'make install' first."; \
exit 1; \
fi
npm test
test-watch:
@echo "Starting test watch mode (press 'q' to quit)..."
@if [ ! -d "node_modules" ]; then \
echo "❌ Dependencies not installed. Run 'make install' first."; \
exit 1; \
fi
npm run test:watch
test-coverage:
@echo "Running tests with coverage..."
@if [ ! -d "node_modules" ]; then \
echo "❌ Dependencies not installed. Run 'make install' first."; \
exit 1; \
fi
npm run test:coverage
@echo "📊 Coverage report generated in coverage/ directory"
test-ui:
@echo "Opening test UI in browser..."
@if [ ! -d "node_modules" ]; then \
echo "❌ Dependencies not installed. Run 'make install' first."; \
exit 1; \
fi
npm run test:ui
# Development server (simple HTTP server for testing)
serve:
@if command -v python3 >/dev/null 2>&1; then \
echo "Starting development server on http://localhost:8000..."; \
echo "📂 Serving files from current directory"; \
echo "Press Ctrl+C to stop"; \
python3 -m http.server 8000; \
elif command -v python >/dev/null 2>&1; then \
echo "Starting development server on http://localhost:8000..."; \
echo "📂 Serving files from current directory"; \
echo "Press Ctrl+C to stop"; \
python -m SimpleHTTPServer 8000; \
elif command -v npx >/dev/null 2>&1; then \
echo "Starting development server with npx..."; \
npx serve -l 8000; \
else \
echo "❌ No suitable HTTP server found"; \
echo "Install Python or Node.js to use 'make serve'"; \
exit 1; \
fi
# Code quality (placeholder targets for future use)
lint:
@if [ -f "package.json" ] && npm list eslint >/dev/null 2>&1; then \
echo "Running ESLint..."; \
npx eslint *.js; \
else \
echo " ESLint not configured. Skipping lint check."; \
echo " To add linting: npm install --save-dev eslint"; \
fi
format:
@if [ -f "package.json" ] && npm list prettier >/dev/null 2>&1; then \
echo "Formatting code with Prettier..."; \
npx prettier --write "*.js" "test/*.js"; \
else \
echo " Prettier not configured. Skipping code formatting."; \
echo " To add formatting: npm install --save-dev prettier"; \
fi
# Dependency management
deps-check:
@echo "Checking for outdated dependencies..."
npm outdated
deps-update:
@echo "Updating dependencies..."
npm update
@echo "✅ Dependencies updated"
deps-audit:
@echo "Running security audit..."
npm audit
@echo "🔒 Security audit complete"
# Cleanup
clean:
@echo "Cleaning up..."
@if [ -d "node_modules" ]; then rm -rf node_modules && echo "🗑️ Removed node_modules/"; fi
@if [ -d "coverage" ]; then rm -rf coverage && echo "🗑️ Removed coverage/"; fi
@if [ -d ".vitest" ]; then rm -rf .vitest && echo "🗑️ Removed .vitest/"; fi
@echo "✅ Cleanup complete"
# Quick setup for new developers
setup: clean install test
@echo ""
@echo "🎉 Setup complete! You can now:"
@echo " • Run 'make test' to run tests"
@echo " • Run 'make test-watch' for TDD"
@echo " • Run 'make serve' to start development server"
@echo " • Open index.html in browser to use the app"