from __future__ import annotations import json import os import sys import time from importlib.util import module_from_spec, spec_from_file_location from pathlib import Path BASE_URL = os.environ.get("KINK_AUDIT_BASE_URL", "http://127.0.0.1:8011").rstrip("/") ARTIFACT_DIR = Path(os.environ.get("KINK_AUDIT_ARTIFACT_DIR", "/tmp/kink_product_recordings")) ARTIFACT_DIR.mkdir(parents=True, exist_ok=True) def load_product_flow_module(): path = Path(__file__).resolve().parent / "playwright_product_flow.py" spec = spec_from_file_location("playwright_product_flow", path) if spec is None or spec.loader is None: raise RuntimeError(f"Could not load {path}") module = module_from_spec(spec) sys.modules[spec.name] = module spec.loader.exec_module(module) return module def main() -> int: flow = load_product_flow_module() flow.BASE_URL = BASE_URL results = flow.run_selected_scenarios(["all"], headless=True) payload = flow.results_to_json(results) payload["generated_at"] = time.time() payload["base_url"] = BASE_URL out_path = ARTIFACT_DIR / "record_product_flows.json" out_path.write_text(json.dumps(payload, indent=2, sort_keys=True), encoding="utf-8") print(json.dumps({"recording_json": str(out_path), "ok": payload["ok"], "summary": payload["summary"]}, indent=2)) return 0 if payload["ok"] else 1 if __name__ == "__main__": raise SystemExit(main())