import subprocess import sys import unittest from pathlib import Path class PersonAManifestBrowserTests(unittest.TestCase): def setUp(self) -> None: self.repo_root = Path(__file__).resolve().parents[1] self.script = self.repo_root / "scripts" / "browse_person_a_manifest.py" def test_browser_lists_showcase_scenarios(self) -> None: completed = subprocess.run( [sys.executable, str(self.script), "--showcase-only", "--list"], cwd=self.repo_root, check=True, capture_output=True, text=True, ) output = completed.stdout self.assertIn("medium_gold_html_comment_relay", output) self.assertIn("hard_gold_attachment_alignment_clause", output) self.assertIn("hard_gold_delayed_attachment_summary_hook", output) def test_browser_renders_semantic_clause_scenario_detail(self) -> None: completed = subprocess.run( [sys.executable, str(self.script), "--scenario-id", "hard_gold_attachment_alignment_clause"], cwd=self.repo_root, check=True, capture_output=True, text=True, ) output = completed.stdout self.assertIn("scenario_id: hard_gold_attachment_alignment_clause", output) self.assertIn("attack_channel: attachment_instruction", output) self.assertIn("target_tool: WriteDB", output) self.assertIn("showcase_role: semantic_summary_clause_poisoning", output) if __name__ == "__main__": unittest.main()