"""Executable and static quality gates for isolated HUX-08 research UX.""" from __future__ import annotations import json from pathlib import Path from hux_node_gate import run_node_coverage ROOT = Path(__file__).resolve().parents[2] RESEARCH = ROOT / "dockerfiles" / "hermes-webui-hux" / "research" def test_hux_research_node_suite_and_coverage(): run_node_coverage( [ "dockerfiles/hermes-webui-hux/research/model.ts", "dockerfiles/hermes-webui-hux/research/security.ts", "dockerfiles/hermes-webui-hux/research/endpoints.ts", ], [ "testing/tests/test_hermes_hux_ui_research.mjs", ], {"branches": 95, "functions": 95, "lines": 95}, strip_types=True, ) def test_hux_research_matches_shared_contract_and_stays_default_off(): schema = json.loads( (ROOT / "services/hermes/contracts/hux/citation.schema.json").read_text( encoding="utf-8" ) ) model = (RESEARCH / "model.ts").read_text(encoding="utf-8") for definition in ("source", "passage", "citation", "notebook"): assert schema["$defs"][definition]["properties"]["schema"]["const"] in model for value in schema["$defs"]["source"]["properties"]["kind"]["enum"]: assert f'"{value}"' in model for value in schema["$defs"]["source"]["properties"]["classification"][ "enum" ]: assert f'"{value}"' in model for value in schema["$defs"]["citation"]["properties"]["support"]["enum"]: assert f'"{value}"' in model assert "researchEnabled(props.flags)" in ( RESEARCH / "ResearchWorkspace.tsx" ).read_text(encoding="utf-8") assert "dockerfiles/hermes-webui-hux/research" not in ( ROOT / "dockerfiles/Dockerfile.hermes-webui" ).read_text(encoding="utf-8") def test_hux_research_ui_is_accessible_and_evidence_is_not_executable(): component = (RESEARCH / "ResearchWorkspace.tsx").read_text(encoding="utf-8") endpoints = (RESEARCH / "endpoints.ts").read_text(encoding="utf-8") security = (RESEARCH / "security.ts").read_text(encoding="utf-8") styles = (RESEARCH / "styles.css").read_text(encoding="utf-8") assert "if (!enabled || !page) return null" in component assert 'aria-label="Research and citations"' in component assert 'aria-expanded={expanded}' in component assert 'aria-controls={panelId}' in component assert 'aria-live="polite"' in component assert "primary source" not in component # classification is data-driven assert "Research notes" in component assert "Assumptions" in component assert "Unresolved questions" in component assert 'rel="noopener noreferrer"' in component assert "dangerouslySetInnerHTML" not in component assert "