25 lines
1.3 KiB
Python
25 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
from __future__ import annotations
|
|
import json, os, urllib.request
|
|
from pathlib import Path
|
|
import commercial_astrology_e2e_acceptance_runner as runner
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
DEFAULT_CONTEXT = ROOT / "artifacts" / "commercial_astrology_e2e_contexts_2026_07_19_run6"
|
|
|
|
def _get(url: str, cookie: str = "") -> dict:
|
|
req = urllib.request.Request(url, headers={"cookie": cookie} if cookie else {})
|
|
with urllib.request.urlopen(req, timeout=20) as r:
|
|
return {"status": r.status, "body": r.read(2000).decode("utf-8", "replace")}
|
|
|
|
def run(base_url: str | None = None, context_dir: Path = DEFAULT_CONTEXT) -> dict:
|
|
base_url = base_url or os.getenv("JYOTISHA_PRODUCTION_BASE_URL")
|
|
cookie = os.getenv("JYOTISHA_PRODUCTION_COOKIE", "")
|
|
health = _get(base_url.rstrip("/") + "/api/health", cookie) if base_url else {"status": "skipped_no_base_url"}
|
|
acceptance = runner.evaluate(context_dir=context_dir)
|
|
status = "pass" if acceptance["status"] == "pass" and (not base_url or health["status"] == 200) else "fail"
|
|
return {"scope": "production_e2e_monitor", "status": status, "health": health, "acceptance": acceptance}
|
|
|
|
if __name__ == "__main__":
|
|
print(json.dumps(run(), ensure_ascii=False, indent=2, sort_keys=True))
|