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>
234 lines
7.3 KiB
Makefile
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
|