feat: complete include/exclude observability, fix validation bugs, and organize tests

- Add structured logging for include/exclude operations with comprehensive event tracking
- Fix duplicate counting bug in validation API by eliminating double validation passes
- Simplify color identity validation UX by consolidating into single 'illegal' status
- Organize project structure by moving all test files to centralized code/tests/ directory
- Update documentation reflecting feature completion and production readiness
- Add validation test scripts and performance benchmarks confirming targets met
- Finalize include/exclude feature as production-ready with EDH format compliance
This commit is contained in:
matt 2025-09-09 20:18:03 -07:00
parent f77bce14cb
commit 3e4395d6e9
32 changed files with 470 additions and 89 deletions

View file

@ -18,7 +18,7 @@ python tests/e2e/run_e2e_tests.py --install-browsers
### Quick Smoke Test (Recommended)
```bash
# Assumes server is already running on localhost:8000
# Assumes server is already running on localhost:8080
python tests/e2e/run_e2e_tests.py --quick
```
@ -47,7 +47,7 @@ pytest test_web_smoke.py -v
## Environment Variables
- `TEST_BASE_URL`: Base URL for testing (default: http://localhost:8000)
- `TEST_BASE_URL`: Base URL for testing (default: http://localhost:8080)
## Test Coverage

View file

@ -24,7 +24,7 @@ class E2ETestRunner:
def __init__(self):
self.project_root = Path(__file__).parent.parent
self.server_process = None
self.base_url = os.getenv('TEST_BASE_URL', 'http://localhost:8000')
self.base_url = os.getenv('TEST_BASE_URL', 'http://localhost:8080')
def start_dev_server(self):
"""Start the development server"""
@ -36,7 +36,7 @@ class E2ETestRunner:
"-m", "uvicorn",
"code.web.app:app",
"--host", "0.0.0.0",
"--port", "8000",
"--port", "8080",
"--reload"
]

View file

@ -9,7 +9,7 @@ import os
class TestConfig:
"""Test configuration"""
BASE_URL = os.getenv('TEST_BASE_URL', 'http://localhost:8000')
BASE_URL = os.getenv('TEST_BASE_URL', 'http://localhost:8080')
TIMEOUT = 30000 # 30 seconds
# Test data