cmux/tests/test_terminal_portal_hosting.py

50 lines
1.6 KiB
Python

#!/usr/bin/env python3
"""Regression: terminal views should be portal-hosted near the window root.
This catches regressions where terminal NSViews are reattached deep inside the SwiftUI
hierarchy, which increases Core Animation commit traversal depth and input latency.
"""
import os
import sys
import time
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent))
from cmux import cmux, cmuxError
SOCKET_PATH = os.environ.get("CMUX_SOCKET", "/tmp/cmux-debug.sock")
def main() -> int:
with cmux(SOCKET_PATH) as c:
c.activate_app()
c.new_workspace()
time.sleep(0.2)
c.new_split("right")
time.sleep(0.8)
health = c.surface_health()
terminals = [row for row in health if row.get("type") == "terminal"]
if len(terminals) < 2:
raise cmuxError(f"expected >=2 terminal surfaces after split, got={terminals}")
for row in terminals:
if not row.get("in_window", False):
raise cmuxError(f"terminal not attached to window: {row}")
if row.get("portal") is not True:
raise cmuxError(f"terminal is not portal-hosted: {row}")
depth = row.get("view_depth")
if not isinstance(depth, int):
raise cmuxError(f"missing view_depth in surface_health: {row}")
if depth > 8:
raise cmuxError(f"terminal view depth too deep ({depth}): {row}")
print("PASS: terminal surfaces are portal-hosted with shallow view depth")
return 0
if __name__ == "__main__":
raise SystemExit(main())