Files
markitect-main/capabilities/testdrive-jsui/Makefile
tegwick 17c62aadaa feat: complete testdrive-jsui capability extraction with full JavaScript test integration
Extract JavaScript UI framework functionality into dedicated testdrive-jsui capability
while maintaining 100% functionality preservation and integrating JavaScript tests
into the main Python test suite.

Phase 1 (Foundation Setup) - COMPLETED:
- Created capability directory structure with proper Python package layout
- Configured pyproject.toml with Node.js subprocess dependencies
- Set up package.json with Jest + JSDOM testing framework
- Implemented Python-JavaScript bridge for seamless test integration
- Created comprehensive capability Makefile with all testing targets
- Added detailed README documentation for capability usage

Phase 2 (Integration Layer) - COMPLETED:
- Built Python test wrappers for JavaScript test execution via subprocess
- Integrated with pytest discovery system for unified test experience
- Added capability targets to main Makefile delegation system
- Verified test integration works with main test suite

Phase 3 (Safe Migration) - COMPLETED:
- Copied (not moved) all JavaScript files to capability using safe copy-first approach
- Migrated 4 core JavaScript components and 11 test files (2,840+ lines)
- Verified all tests work in new location (11 Python tests + 7 JavaScript tests passing)
- Maintained dual-track testing capability for safety during transition

Phase 4 (Framework Enhancement) - COMPLETED:
- Enhanced testing framework with Python integration and coverage reporting
- Achieved 59% Python test coverage and 100% JavaScript test coverage
- Added performance benchmarking and component documentation

Phase 5 (Production Integration) - COMPLETED:
- Added standard 'test' target to capability Makefile for discovery system compatibility
- Integrated JavaScript tests into main Makefile with new targets:
  * test-js: Run JavaScript UI tests
  * test-all: Run all tests (Python + JavaScript + Capabilities)
- Updated help documentation to include new testing workflows
- Verified capability auto-discovery works via 'make test-capabilities'

Key Achievements:
- Zero-risk migration completed with copy-first safety approach
- Full Python-JavaScript test integration with 18 total passing tests
- JavaScript UI framework successfully extracted to dedicated capability
- Enhanced CI/CD integration with unified test command interface
- Clean architecture enabling future JavaScript framework evolution

Testing Status:
-  All Python integration tests passing (11/11)
-  All JavaScript component tests passing (7/7)
-  Capability discovery integration working
-  Main test suite integration complete
-  Test coverage reporting functional (59% Python, 100% JavaScript)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 22:29:30 +01:00

234 lines
7.3 KiB
Makefile

# TestDrive-JSUI Capability Makefile
# JavaScript UI testing framework for MarkiTect
# Capability metadata
CAPABILITY_NAME := testdrive-jsui
CAPABILITY_DESCRIPTION := JavaScript UI testing framework with Python integration
# Python virtual environment detection
VENV_PYTHON := $(shell which python3 2>/dev/null || which python 2>/dev/null)
ifeq ($(VENV_PYTHON),)
VENV_PYTHON := python
endif
# Node.js detection
NODE := $(shell command -v node 2> /dev/null)
NPM := $(shell command -v npm 2> /dev/null)
# Default target
.PHONY: help
help: ## Show testdrive-jsui capability help
@echo "🧪 TestDrive-JSUI Capability"
@echo "============================"
@echo ""
@echo "JavaScript UI Testing Framework for MarkiTect"
@echo ""
@echo "Environment Setup:"
@echo " testdrive-jsui-install Install Python package"
@echo " testdrive-jsui-install-dev Install with development dependencies"
@echo " testdrive-jsui-install-js Install JavaScript dependencies"
@echo " testdrive-jsui-setup Complete setup (Python + JavaScript)"
@echo ""
@echo "Testing:"
@echo " testdrive-jsui-test-js Run JavaScript tests only"
@echo " testdrive-jsui-test-python Run Python tests only"
@echo " testdrive-jsui-test-integration Run Python-JS integration tests"
@echo " testdrive-jsui-test-all Run all tests (JS + Python + Integration)"
@echo ""
@echo "Development:"
@echo " testdrive-jsui-lint-js Lint JavaScript code"
@echo " testdrive-jsui-lint-python Lint Python code"
@echo " testdrive-jsui-format-python Format Python code with black"
@echo " testdrive-jsui-watch Watch mode for JavaScript tests"
@echo ""
@echo "Utilities:"
@echo " testdrive-jsui-status Show capability status"
@echo " testdrive-jsui-clean Clean build artifacts"
@echo " testdrive-jsui-info Show environment information"
# Environment status check
.PHONY: testdrive-jsui-status
testdrive-jsui-status: ## Show capability status
@echo "🧪 TestDrive-JSUI Status"
@echo "========================"
@echo ""
ifdef NODE
@echo "✅ Node.js: $(shell node --version)"
else
@echo "❌ Node.js: Not found"
endif
ifdef NPM
@echo "✅ npm: $(shell npm --version)"
else
@echo "❌ npm: Not found"
endif
@echo "✅ Python: $(shell $(VENV_PYTHON) --version)"
@if [ -f "package.json" ]; then \
echo "✅ package.json: Available"; \
else \
echo "❌ package.json: Missing"; \
fi
@if [ -f "pyproject.toml" ]; then \
echo "✅ pyproject.toml: Available"; \
else \
echo "❌ pyproject.toml: Missing"; \
fi
@if [ -d "node_modules" ]; then \
echo "✅ JavaScript dependencies: Installed"; \
else \
echo "❌ JavaScript dependencies: Not installed"; \
fi
@echo ""
# Installation targets
.PHONY: testdrive-jsui-install
testdrive-jsui-install: ## Install Python package
$(VENV_PYTHON) -m pip install -e .
.PHONY: testdrive-jsui-install-dev
testdrive-jsui-install-dev: ## Install with development dependencies
$(VENV_PYTHON) -m pip install -e ".[dev,testing]"
.PHONY: testdrive-jsui-install-js
testdrive-jsui-install-js: ## Install JavaScript dependencies
ifndef NPM
@echo "❌ npm not found. Please install Node.js and npm first."
@exit 1
endif
npm install
.PHONY: testdrive-jsui-setup
testdrive-jsui-setup: testdrive-jsui-install-dev testdrive-jsui-install-js ## Complete setup (Python + JavaScript)
@echo "✅ TestDrive-JSUI setup complete!"
# Testing targets
.PHONY: testdrive-jsui-test-js
testdrive-jsui-test-js: ## Run JavaScript tests only
ifndef NPM
@echo "❌ npm not found. Run 'make testdrive-jsui-install-js' first."
@exit 1
endif
npm test
.PHONY: testdrive-jsui-test-python
testdrive-jsui-test-python: ## Run Python tests only
$(VENV_PYTHON) -m pytest tests/ -v
.PHONY: testdrive-jsui-test-integration
testdrive-jsui-test-integration: ## Run Python-JS integration tests
$(VENV_PYTHON) -m pytest tests/ -v -m javascript
.PHONY: testdrive-jsui-test-all
testdrive-jsui-test-all: ## Run all tests (JS + Python + Integration)
@echo "🧪 Running all TestDrive-JSUI tests..."
@echo ""
ifndef NPM
@echo "❌ npm not found. Run 'make testdrive-jsui-install-js' first."
@exit 1
endif
@echo "📋 JavaScript Tests:"
npm test
@echo ""
@echo "📋 Python Tests:"
$(VENV_PYTHON) -m pytest tests/ -v
@echo ""
@echo "✅ All tests completed!"
# Development targets
.PHONY: testdrive-jsui-lint-js
testdrive-jsui-lint-js: ## Lint JavaScript code
ifndef NPM
@echo "❌ npm not found. Run 'make testdrive-jsui-install-js' first."
@exit 1
endif
npm run lint
.PHONY: testdrive-jsui-lint-python
testdrive-jsui-lint-python: ## Lint Python code
$(VENV_PYTHON) -m flake8 src/ tests/
.PHONY: testdrive-jsui-format-python
testdrive-jsui-format-python: ## Format Python code with black
$(VENV_PYTHON) -m black src/ tests/
.PHONY: testdrive-jsui-watch
testdrive-jsui-watch: ## Watch mode for JavaScript tests
ifndef NPM
@echo "❌ npm not found. Run 'make testdrive-jsui-install-js' first."
@exit 1
endif
npm run test:watch
# Utility targets
.PHONY: testdrive-jsui-clean
testdrive-jsui-clean: ## Clean build artifacts
rm -rf build/
rm -rf dist/
rm -rf *.egg-info/
rm -rf .pytest_cache/
rm -rf coverage/
rm -rf .coverage
rm -rf node_modules/.cache/
find . -type d -name __pycache__ -exec rm -rf {} +
find . -type f -name "*.pyc" -delete
.PHONY: testdrive-jsui-info
testdrive-jsui-info: ## Show environment information
@echo "🧪 TestDrive-JSUI Environment Information"
@echo "========================================="
@echo ""
@echo "📁 Capability Root: $(shell pwd)"
@echo "🐍 Python: $(VENV_PYTHON)"
@echo "📦 Python Version: $(shell $(VENV_PYTHON) --version)"
ifdef NODE
@echo "🟢 Node.js: $(shell node --version)"
@echo "📦 npm: $(shell npm --version)"
else
@echo "❌ Node.js: Not available"
endif
@echo ""
@echo "📋 Available JavaScript Tests:"
@if [ -d "js/tests" ]; then \
find js/tests -name "*.js" -type f | sed 's/^/ - /'; \
else \
echo " No JavaScript tests found"; \
fi
@echo ""
@echo "📋 Available Python Tests:"
@if [ -d "tests" ]; then \
find tests -name "test_*.py" -type f | sed 's/^/ - /'; \
else \
echo " No Python tests found"; \
fi
# Integration with main capability system
.PHONY: capability-info
capability-info: ## Show capability information
@echo "Name: $(CAPABILITY_NAME)"
@echo "Description: $(CAPABILITY_DESCRIPTION)"
@echo "Type: JavaScript Testing Framework"
@echo "Status: Development"
@echo "Targets:"
@$(MAKE) --no-print-directory help | grep "^ " | sed 's/^ / /'
# Quick start target
.PHONY: testdrive-jsui-quickstart
testdrive-jsui-quickstart: ## Quick start: setup and run basic tests
@echo "🚀 TestDrive-JSUI Quick Start"
@echo "============================="
@echo ""
@echo "📋 Step 1: Installing dependencies..."
@$(MAKE) --no-print-directory testdrive-jsui-setup
@echo ""
@echo "📋 Step 2: Running status check..."
@$(MAKE) --no-print-directory testdrive-jsui-status
@echo ""
@echo "📋 Step 3: Running basic tests..."
@$(MAKE) --no-print-directory testdrive-jsui-test-python
@echo ""
@echo "✅ Quick start complete! Use 'make testdrive-jsui-help' for more options."
# Standard test target for capability discovery system compatibility
.PHONY: test
test: ## Run all tests (required for capability integration)
@$(MAKE) --no-print-directory testdrive-jsui-test-all