# TestDrive-JSUI Capability A comprehensive JavaScript UI testing framework capability for MarkiTect. Provides seamless integration between Python and JavaScript testing environments, enabling safe development and testing of JavaScript UI components. ## ๐ŸŽฏ **Purpose** TestDrive-JSUI is designed to: - **๐Ÿ”’ Protect existing JavaScript UI functionality** during refactoring and development - **๐Ÿงช Integrate JavaScript tests** into the main Python test suite - **๐Ÿ—๏ธ Provide a clean architecture** for JavaScript framework development - **๐Ÿ“Š Enable comprehensive testing** of JavaScript UI components - **๐Ÿš€ Support future extensibility** for JavaScript framework evolution ## ๐Ÿ—๏ธ **Architecture** ``` testdrive-jsui/ โ”œโ”€โ”€ src/testdrive_jsui/ # Python package โ”‚ โ”œโ”€โ”€ core/ # Core framework components โ”‚ โ”œโ”€โ”€ components/ # UI component helpers โ”‚ โ”œโ”€โ”€ utils/ # Utility functions โ”‚ โ””โ”€โ”€ testing/ # Python-JS bridge โ”‚ โ”œโ”€โ”€ js_test_runner.py # JavaScript test execution โ”‚ โ””โ”€โ”€ integration.py # Pytest integration โ”œโ”€โ”€ js/ # JavaScript source โ”‚ โ”œโ”€โ”€ core/ # Core JS components โ”‚ โ”œโ”€โ”€ components/ # UI components โ”‚ โ”œโ”€โ”€ utils/ # JS utilities โ”‚ โ””โ”€โ”€ tests/ # JavaScript tests โ”œโ”€โ”€ tests/ # Python tests โ”œโ”€โ”€ Makefile # Capability commands โ”œโ”€โ”€ pyproject.toml # Python package config โ”œโ”€โ”€ package.json # JavaScript dependencies โ””โ”€โ”€ README.md # This file ``` ## ๐Ÿš€ **Quick Start** ### Prerequisites - **Python 3.8+** with pip - **Node.js 16+** with npm - **MarkiTect main project** installed ### Installation ```bash # Navigate to the capability directory cd capabilities/testdrive-jsui # Quick setup (installs everything) make testdrive-jsui-quickstart # Or step by step: make testdrive-jsui-setup # Install all dependencies make testdrive-jsui-status # Check environment make testdrive-jsui-test-all # Run all tests ``` ## ๐Ÿงช **Testing** ### JavaScript Tests ```bash # Run JavaScript tests only make testdrive-jsui-test-js # Run with coverage npm run test:coverage # Watch mode for development make testdrive-jsui-watch ``` ### Python Integration Tests ```bash # Run Python tests only make testdrive-jsui-test-python # Run integration tests make testdrive-jsui-test-integration # Run all tests make testdrive-jsui-test-all ``` ### Main Project Integration From the main MarkiTect project: ```bash # Run capability tests make testdrive-jsui-test-all # Include in main test suite make test-all # (when integrated) ``` ## ๐Ÿ“‹ **Available Commands** | Command | Description | |---------|-------------| | `make testdrive-jsui-help` | Show all available commands | | `make testdrive-jsui-status` | Check environment status | | `make testdrive-jsui-setup` | Install all dependencies | | `make testdrive-jsui-test-all` | Run all tests | | `make testdrive-jsui-watch` | Development watch mode | | `make testdrive-jsui-clean` | Clean build artifacts | ## ๐Ÿ”ง **Development** ### Adding JavaScript Tests 1. Create test files in `js/tests/`: ```javascript // js/tests/test-my-component.js describe('MyComponent', () => { test('should do something', () => { // Your test here }); }); ``` 2. Run tests: ```bash make testdrive-jsui-test-js ``` ### Adding Python Integration Tests 1. Create test files in `tests/`: ```python # tests/test_my_integration.py import pytest from testdrive_jsui.testing import JavaScriptTestRunner @pytest.mark.javascript def test_my_js_component(): runner = JavaScriptTestRunner() result = runner.run_specific_test('test-my-component.js') assert result.success ``` 2. Run tests: ```bash make testdrive-jsui-test-integration ``` ### Code Quality ```bash # Lint JavaScript make testdrive-jsui-lint-js # Lint Python make testdrive-jsui-lint-python # Format Python code make testdrive-jsui-format-python ``` ## ๐Ÿ”— **Integration with Main Project** ### Python Test Suite Integration The capability provides pytest integration to run JavaScript tests from Python: ```python # In main project tests from testdrive_jsui.testing import JavaScriptTestRunner def test_javascript_ui_components(): runner = JavaScriptTestRunner() result = runner.run_js_tests() assert result.success assert result.tests_passed > 0 ``` ### Capability System Integration The capability integrates with MarkiTect's capability discovery system: ```bash # From main project make capabilities-list # Shows testdrive-jsui make testdrive-jsui-test-all # Direct delegation make capabilities-test # Includes JS tests ``` ## ๐Ÿ“Š **Testing Framework Features** ### JavaScript Test Runner - **Jest integration** with JSDOM environment - **Coverage reporting** with detailed metrics - **Test isolation** with proper setup/teardown - **Mock support** for DOM APIs and browser features - **Async testing** support for modern JavaScript ### Python-JavaScript Bridge - **Subprocess execution** of JavaScript tests - **Result parsing** with structured output - **Error handling** with detailed failure information - **Test discovery** for pytest integration - **Coverage integration** between Python and JavaScript ### Safety Mechanisms - **Copy-first migration** (never move, always copy) - **Dual-track testing** during migration - **Gradual integration** with rollback options - **Test verification** at each step - **Environment validation** before execution ## ๐Ÿ”„ **Migration Strategy** When migrating JavaScript UI code to this capability: 1. **Copy** (don't move) JavaScript files to `js/` directory 2. **Verify** tests work in new location 3. **Create** Python integration tests 4. **Run** dual-track testing to compare results 5. **Gradually** switch to capability-based testing 6. **Remove** original files only after full verification ## ๐Ÿ“š **Examples** ### Running Specific Tests ```bash # Run a specific JavaScript test npm test -- --testNamePattern="SectionManager" # Run specific Python integration test pytest tests/test_section_manager_integration.py -v # Run tests with coverage npm run test:coverage ``` ### Environment Information ```bash # Get detailed environment info make testdrive-jsui-info # Check what tests are available make testdrive-jsui-status ``` ### Development Workflow ```bash # Start development session make testdrive-jsui-watch # Terminal 1: Watch JS tests make testdrive-jsui-test-python # Terminal 2: Run Python tests # Before committing make testdrive-jsui-lint-js # Lint JavaScript make testdrive-jsui-format-python # Format Python make testdrive-jsui-test-all # Run all tests ``` ## ๐ŸŽฏ **Future Enhancements** - **Visual regression testing** with screenshot comparison - **Performance benchmarking** for JavaScript components - **Browser automation** with Selenium/Playwright - **Component documentation** auto-generation - **Real browser testing** in CI/CD pipelines ## ๐Ÿ“‹ **Troubleshooting** ### Common Issues **Node.js not found:** ```bash # Install Node.js first curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt-get install -y nodejs ``` **Tests failing:** ```bash # Check environment make testdrive-jsui-status # Reinstall dependencies make testdrive-jsui-clean make testdrive-jsui-setup ``` **Integration issues:** ```bash # Verify Python package is installed pip list | grep testdrive-jsui # Check JavaScript dependencies npm list ``` ## ๐Ÿ“„ **License** MIT License - See main MarkiTect project for details. --- *Generated: 2025-11-09* *Status: Phase 1 Implementation* *Next: Copy JavaScript files and create integration tests*