# Windsurf Testing Integration Guide This guide explains how to use Windsurf's integrated testing features with the AITBC project. ## ✅ What's Been Configured ### 1. VS Code Settings (`.vscode/settings.json`) - ✅ Pytest enabled (unittest disabled) - ✅ Test discovery configured - ✅ Auto-discovery on save enabled - ✅ Debug port configured ### 2. Debug Configuration (`.vscode/launch.json`) - ✅ Debug Python Tests - ✅ Debug All Tests - ✅ Debug Current Test File - ✅ Uses `debugpy` (not deprecated `python`) ### 3. Task Configuration (`.vscode/tasks.json`) - ✅ Run All Tests - ✅ Run Tests with Coverage - ✅ Run Unit Tests Only - ✅ Run Integration Tests - ✅ Run Current Test File - ✅ Run Test Suite Script ### 4. Pytest Configuration - ✅ `pyproject.toml` - Main configuration with markers - ✅ `tests/pytest.ini` - Simplified for discovery - ✅ `tests/conftest.py` - Fixtures with fallback mocks ## 🚀 How to Use ### Test Discovery 1. Open Windsurf 2. Click the **Testing panel** (beaker icon in sidebar) 3. Tests will be automatically discovered 4. See all `test_*.py` files listed ### Running Tests #### Option 1: Testing Panel - Click the **play button** next to any test - Click the **play button** at the top to run all tests - Right-click on a test folder for more options #### Option 2: Command Palette - `Ctrl+Shift+P` (or `Cmd+Shift+P` on Mac) - Search for "Python: Run All Tests" - Or search for "Python: Run Test File" #### Option 3: Tasks - `Ctrl+Shift+P` → "Tasks: Run Test Task" - Select the desired test task #### Option 4: Keyboard Shortcuts - `F5` - Debug current test - `Ctrl+F5` - Run without debugging ### Debugging Tests 1. Click the **debug button** next to any test 2. Set breakpoints in your test code 3. Press `F5` to start debugging 4. Use the debug panel to inspect variables ### Test Coverage 1. Run the "Run Tests with Coverage" task 2. Open `htmlcov/index.html` in your browser 3. See detailed coverage reports ## 📁 Test Structure ``` tests/ ├── test_basic_integration.py # Basic integration tests ├── test_discovery.py # Simple discovery tests ├── test_windsurf_integration.py # Windsurf integration tests ├── unit/ # Unit tests │ ├── test_coordinator_api.py │ ├── test_wallet_daemon.py │ └── test_blockchain_node.py ├── integration/ # Integration tests │ └── test_full_workflow.py ├── e2e/ # End-to-end tests │ └── test_user_scenarios.py └── security/ # Security tests └── test_security_comprehensive.py ``` ## 🏷️ Test Markers Tests are marked with: - `@pytest.mark.unit` - Unit tests - `@pytest.mark.integration` - Integration tests - `@pytest.mark.e2e` - End-to-end tests - `@pytest.mark.security` - Security tests - `@pytest.mark.performance` - Performance tests ## 🔧 Troubleshooting ### Tests Not Discovered? 1. Check that files start with `test_*.py` 2. Verify pytest is enabled in settings 3. Run `python -m pytest --collect-only` to debug ### Import Errors? 1. The fixtures include fallback mocks 2. Check `tests/conftest.py` for path configuration 3. Use the mock clients if full imports fail ### Debug Not Working? 1. Ensure `debugpy` is installed 2. Check `.vscode/launch.json` uses `type: debugpy` 3. Verify test has a debug configuration ## 📝 Example Test ```python import pytest from unittest.mock import patch @pytest.mark.unit def test_example_function(): """Example unit test""" result = add(2, 3) assert result == 5 @pytest.mark.integration def test_api_endpoint(coordinator_client): """Example integration test using fixture""" response = coordinator_client.get("/docs") assert response.status_code == 200 ``` ## 🎯 Best Practices 1. **Use descriptive test names** - `test_specific_behavior` 2. **Add appropriate markers** - `@pytest.mark.unit` 3. **Use fixtures** - Don't repeat setup code 4. **Mock external dependencies** - Keep tests isolated 5. **Test edge cases** - Not just happy paths 6. **Keep tests fast** - Unit tests should be < 1 second ## 📊 Running Specific Tests ```bash # Run all unit tests pytest -m unit # Run specific file pytest tests/unit/test_coordinator_api.py # Run with coverage pytest --cov=apps tests/ # Run in parallel pytest -n auto tests/ ``` ## 🎉 Success! Your Windsurf testing integration is now fully configured! You can: - Discover tests automatically - Run tests with a click - Debug tests visually - Generate coverage reports - Use all pytest features Happy testing! 🚀