Files
hermes-webui/tests/test_numpad_enter_submit.py
T
2026-05-29 13:00:15 +08:00

27 lines
1.0 KiB
Python

"""Keyboard contract for treating Numpad Enter as a submit shortcut."""
from pathlib import Path
REPO = Path(__file__).resolve().parents[1]
BOOT_JS = (REPO / "static" / "boot.js").read_text(encoding="utf-8")
def test_boot_defines_numpad_enter_helper():
assert "function _isNumpadEnter(e)" in BOOT_JS
assert "e.code==='NumpadEnter'" in BOOT_JS
assert "e.location===KeyboardEvent.DOM_KEY_LOCATION_NUMPAD" in BOOT_JS
def test_ctrl_enter_mode_allows_numpad_enter_to_submit():
ctrl_branch = BOOT_JS.split("if(window._sendKey==='ctrl+enter'||_mobileDefault){", 1)[1]
ctrl_branch = ctrl_branch.split("} else {", 1)[0]
assert "isNumpadEnter" in ctrl_branch
assert "if(isNumpadEnter||e.ctrlKey||e.metaKey){e.preventDefault();send();}" in ctrl_branch
def test_ime_guard_runs_before_numpad_enter_detection():
enter_branch = BOOT_JS.split("if(e.key==='Enter'){")[-1]
ime_idx = enter_branch.index("if(_isImeEnter(e)){return;}")
numpad_idx = enter_branch.index("const isNumpadEnter=_isNumpadEnter(e);")
assert ime_idx < numpad_idx