Files
the-door/tests/test_safety_plan_chat_header.py
Alexander Whitestone b8bb9be131
All checks were successful
Sanity Checks / sanity-test (pull_request) Successful in 6s
Smoke Test / smoke (pull_request) Successful in 8s
feat: expose safety plan from chat header (#38)
2026-04-14 11:35:43 -04:00

43 lines
1.8 KiB
Python

from pathlib import Path
INDEX_HTML = Path(__file__).resolve().parents[1] / 'index.html'
HTML = INDEX_HTML.read_text()
def _between(start_marker: str, end_marker: str) -> str:
start = HTML.index(start_marker)
end = HTML.index(end_marker)
return HTML[start:end]
def test_persistent_safety_plan_button_lives_in_chat_header():
assert 'id="chat-header"' in HTML, 'expected a dedicated chat header area'
header_html = _between('<div id="chat-header"', '<div id="chat-area"')
assert 'id="chat-safety-plan-btn"' in header_html
assert 'aria-label="Open my safety plan"' in header_html
assert 'aria-controls="safety-plan-modal"' in header_html
assert 'aria-haspopup="dialog"' in header_html
def test_chat_header_entry_point_reuses_same_modal_open_flow():
assert "var chatSafetyPlanBtn = document.getElementById('chat-safety-plan-btn');" in HTML
assert 'function openSafetyPlanModal(trigger) {' in HTML
assert 'loadSafetyPlan();' in HTML
assert "safetyPlanModal.classList.add('active');" in HTML
assert "safetyPlanModal.setAttribute('aria-hidden', 'false');" in HTML
assert 'openSafetyPlanModal(chatSafetyPlanBtn);' in HTML
assert 'openSafetyPlanModal(footerSafetyPlanBtn);' in HTML
assert 'openSafetyPlanModal(crisisSafetyPlanBtn);' in HTML
def test_modal_returns_focus_and_supports_escape_to_close():
assert 'var lastSafetyPlanTrigger = null;' in HTML
assert 'lastSafetyPlanTrigger = trigger || document.activeElement;' in HTML
assert 'document.getElementById(\'sp-warning-signs\').focus();' in HTML
assert 'closeSafetyPlanModal();' in HTML
assert "safetyPlanModal.setAttribute('aria-hidden', 'true');" in HTML
assert 'lastSafetyPlanTrigger.focus();' in HTML
assert "if (e.key === 'Escape' && safetyPlanModal.classList.contains('active'))" in HTML