"""matrix-synapse — install stage (recipe #4, DB + media store). D2 install: the synapse client API answers 200 over real HTTPS through the gateway (nginx -> synapse). The base recipe has no browser UI (element-web is an addon), so the functional assertion is the JSON client API, not Playwright.""" import json import os import sys sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "runner")) from harness import lifecycle # noqa: E402 def test_client_api_healthy(deployed_app): status = lifecycle.http_get(deployed_app, "/_matrix/client/versions") assert status == 200, f"expected 200 from {deployed_app}/_matrix/client/versions, got {status}" def test_client_api_advertises_versions(deployed_app): """The client-API version document is real synapse JSON (proves the app, not just a proxy 200).""" body = lifecycle.http_body(deployed_app, "/_matrix/client/versions") doc = json.loads(body) assert isinstance(doc.get("versions"), list) and doc["versions"], "no matrix client versions advertised"