32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
"""Regression checks for per-conversation action menu click stability."""
|
|
from pathlib import Path
|
|
|
|
SESSIONS_JS = (Path(__file__).resolve().parent.parent / "static" / "sessions.js").read_text(encoding="utf-8")
|
|
|
|
|
|
def _function_block(src: str, name: str) -> str:
|
|
marker = f"function {name}"
|
|
start = src.find(marker)
|
|
assert start != -1, f"{name} not found"
|
|
brace = src.find("{", start)
|
|
assert brace != -1, f"{name} body not found"
|
|
depth = 1
|
|
i = brace + 1
|
|
while i < len(src) and depth:
|
|
if src[i] == "{":
|
|
depth += 1
|
|
elif src[i] == "}":
|
|
depth -= 1
|
|
i += 1
|
|
assert depth == 0, f"{name} body did not close"
|
|
return src[start:i]
|
|
|
|
|
|
def test_session_list_refresh_does_not_close_open_conversation_actions():
|
|
"""Sidebar refreshes must not eat the three-dot menu before users can click it."""
|
|
body = _function_block(SESSIONS_JS, "renderSessionListFromCache")
|
|
|
|
assert "if(_renamingSid) return;" in body
|
|
assert "if(_sessionActionMenu) return;" in body
|
|
assert body.index("if(_sessionActionMenu) return;") < body.index("closeSessionActionMenu();")
|