# 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 - ✅ `pytest.ini` - Moved to project root with custom markers - ✅ `tests/conftest.py` - Fixtures with fallback mocks and test environment setup ### 5. Test Scripts (2026-01-29) - ✅ `scripts/testing/` - All test scripts moved here - ✅ `test_ollama_blockchain.py` - Complete GPU provider test - ✅ `test_block_import.py` - Blockchain block import testing ### 6. Test Environment Improvements (2026-02-17) - ✅ **Confidential Transaction Service**: Created wrapper service for missing module - ✅ **Audit Logging**: Fixed permission issues using `/logs/audit/` directory - ✅ **Database Configuration**: Added test mode support and schema migration - ✅ **Integration Dependencies**: Comprehensive mocking for optional dependencies - ✅ **Import Path Resolution**: Fixed complex module structure problems - ✅ **Environment Variables**: Proper test environment configuration in conftest.py ## 🚀 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! 🚀 --- ## Issue Unittest discovery errors when using Windsurf's test runner with the `tests/` folder. ## Solution 1. **Updated pyproject.toml** - Added `tests` to the testpaths configuration 2. **Created minimal conftest.py** - Removed complex imports that were causing discovery failures 3. **Test discovery now works** for files matching `test_*.py` pattern ## Current Status - ✅ Test discovery works for simple tests (e.g., `tests/test_discovery.py`) - ✅ All `test_*.py` files are discovered by pytest - ⚠️ Tests with complex imports may fail during execution due to module path issues ## Running Tests ### For test discovery only (Windsurf integration): ```bash cd /home/oib/windsurf/aitbc python -m pytest --collect-only tests/ ``` ### For running all tests (with full setup): ```bash cd /home/oib/windsurf/aitbc python run_tests.py tests/ ``` ## Test Files Found - `tests/e2e/test_wallet_daemon.py` - `tests/integration/test_blockchain_node.py` - `tests/security/test_confidential_transactions.py` - `tests/unit/test_coordinator_api.py` - `tests/test_discovery.py` (simple test file) ## Notes - The original `conftest_full.py` contains complex fixtures requiring full module setup - To run tests with full functionality, restore `conftest_full.py` and use the wrapper script - For Windsurf's test discovery, the minimal `conftest.py` provides better experience