Files
hermes-webui/tests/test_issue6799_virtualization_idle_loop.py
T

50 lines
1.8 KiB
Python

"""Regression coverage for the settled-transcript virtualization loop (#6799)."""
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
UI_JS = (ROOT / "static" / "ui.js").read_text(encoding="utf-8")
MESSAGES_JS = (ROOT / "static" / "messages.js").read_text(encoding="utf-8")
def _scroll_listener_body() -> str:
start = UI_JS.index("el.addEventListener('scroll',()=>{")
end = UI_JS.index(" },{passive:true});", start)
return UI_JS[start:end]
def test_programmatic_scroll_cannot_schedule_virtualized_rerender():
listener = _scroll_listener_body()
guard_pos = listener.index("if(_freshProgrammaticScrollActive()) return;")
schedule_pos = listener.index("_scheduleMessageVirtualizedRender();")
assert guard_pos < schedule_pos
def test_settled_full_window_is_restored_to_default_after_render():
assert "function _restoreMessageRenderWindowAfterSettledRender()" in UI_JS
first_expand = MESSAGES_JS.index(
"_messageRenderWindowSize=Math.max(",
MESSAGES_JS.index("// Expand render window to cover all messages"),
)
first_restore = MESSAGES_JS.index(
"_restoreMessageRenderWindowAfterSettledRender();",
first_expand,
)
first_block_end = MESSAGES_JS.index("loadDir('.', { preservePreview: true });", first_expand)
assert first_expand < first_restore < first_block_end
second_expand = MESSAGES_JS.index(
"_messageRenderWindowSize=Math.max(",
MESSAGES_JS.index("// Expand render window so the settled render"),
)
second_render = MESSAGES_JS.index("renderMessages({preserveScroll:true});", second_expand)
second_restore = MESSAGES_JS.index(
"_restoreMessageRenderWindowAfterSettledRender();",
second_render,
)
assert second_expand < second_render < second_restore