self-improving-agent / tests /test_regression.py
Zeetay
Initial commit: self-improving ad copy agent eval harness
e6fb135
Raw
History Blame Contribute Delete
1.51 kB
"""Regression test suite.
Loads the golden dataset and runs the eval runner against the active prompt
version, asserting that no golden entry regresses more than 0.5 from its
baseline score.
Run with: pytest tests/test_regression.py
Notes:
- Requires GROQ_API_KEY (the runner regenerates + re-judges via Groq). If it is
not set, the test is skipped rather than failing spuriously.
- If the golden dataset is empty (fresh install, no runs yet), there is nothing
to regress against and the test passes trivially.
"""
import os
import pytest
from dotenv import load_dotenv
load_dotenv()
from evals.golden import GoldenDataset # noqa: E402
from evals.runner import REGRESSION_TOLERANCE, format_report, run_golden_eval # noqa: E402
@pytest.fixture(scope="module")
def golden() -> GoldenDataset:
return GoldenDataset()
def test_no_golden_regressions(golden: GoldenDataset):
if not os.getenv("GROQ_API_KEY"):
pytest.skip("GROQ_API_KEY not set; regression eval needs live model calls.")
if golden.size() == 0:
pytest.skip("Golden dataset is empty; nothing to regress against yet.")
report = run_golden_eval(golden=golden)
# Print a readable summary so failures are diagnosable in CI logs.
print("\n" + format_report(report))
assert report.passed, (
f"{len(report.regressions)} golden entry(ies) regressed more than "
f"{REGRESSION_TOLERANCE} against prompt '{report.prompt_version}'. "
"Do not promote this prompt version."
)