1
0

CI/CD Optimization: Guard Rails, Pre-commit Checks, and Test Fixes (#90)

* CI/CD Optimization: Guard Rails, Black Linting, and Pre-commit Hooks

- Fixed all test collection errors (Selenium imports, fixture paths, syntax)
- Implemented pre-commit hooks with Black formatting and isort
- Created comprehensive Makefile with test targets (unit, integration, functional, e2e)
- Added pytest.ini with marker definitions for test categorization
- Established guard rails to prevent future collection errors
- Wrapped optional dependencies (Selenium, MoviePy) in try-except blocks
- Added conftest_markers for automatic test categorization

This ensures a smooth development stream with:
- Fast feedback loops (pre-commit checks before push)
- Consistent code formatting (Black)
- Reliable CI/CD (no collection errors, proper test isolation)
- Clear test organization (unit, integration, functional, E2E)

* Fix CI/CD test failures:
- Export templates from dashboard.app
- Fix model name assertion in test_agent.py
- Fix platform-agnostic path resolution in test_path_resolution.py
- Skip Docker tests in test_docker_deployment.py if docker not available
- Fix test_model_fallback_chain logic in test_ollama_integration.py

* Add preventative pre-commit checks and Docker test skipif decorators:
- Create pre_commit_checks.py script for common CI failures
- Add skipif decorators to Docker tests
- Improve test robustness for CI environments
This commit is contained in:
Alexander Whitestone
2026-02-28 11:36:50 -05:00
committed by GitHub
parent a5fd680428
commit e5190b248a
20 changed files with 668 additions and 32 deletions

View File

@@ -12,17 +12,22 @@ Run:
import os
import pytest
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
# Skip entire module unless SELENIUM_UI=1 is set
try:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
HAS_SELENIUM = True
except ImportError:
HAS_SELENIUM = False
# Skip entire module unless SELENIUM_UI=1 is set and Selenium is installed
pytestmark = pytest.mark.skipif(
os.environ.get("SELENIUM_UI") != "1",
reason="Set SELENIUM_UI=1 to run Selenium UI tests",
not HAS_SELENIUM or os.environ.get("SELENIUM_UI") != "1",
reason="Selenium not installed or SELENIUM_UI not set to 1",
)
DASHBOARD_URL = os.environ.get("DASHBOARD_URL", "http://localhost:8000")