from pathlib import Path def test_main_interface_copy_is_builder_facing() -> None: html = Path("static/index.html").read_text(encoding="utf-8") app_js = Path("static/app.js").read_text(encoding="utf-8") combined = f"{html}\n{app_js}" assert "Live project atlas" in html assert "Refresh map" in html assert "Open advisor" in html assert 'id="atlas-search"' in html assert "Search projects, ideas, quests..." in html assert 'id="advisor-view"' in html assert "/api/dashboard" in app_js assert "/api/dashboard/search" in app_js assert "/api/dashboard/refresh" in app_js assert "renderAtlasSvg" in app_js assert "Directions to test" in html assert "Closest project echoes" in html assert "Press Plan to draft build steps for the selected idea." in app_js assert "Loading an example idea board." in app_js assert "Example idea board loaded with a plan and share page." in app_js assert "/api/artifact.png" in app_js assert "/api/agent-turn" in app_js assert "/api/transcribe" in app_js assert "MediaRecorder" in app_js assert "voiceRecordingState" in app_js assert "stopVoiceRecording" in app_js assert 'recording: "Stop"' in app_js assert 'stopping: "Stopping..."' in app_js assert "questBadgeHint" in app_js assert 'title="${escapeAttribute(hint)}"' in app_js assert "README evidence" in app_js assert "App file evidence" in app_js assert "readNdjson" in app_js assert "@gradio/client" not in app_js assert "renderArtifactCanvas" not in app_js assert "canvas.toDataURL" not in app_js assert 'aria-label="Export build notes"' in html assert 'aria-label="Export idea-board chapter"' in html assert 'aria-label="Export current page as PNG"' in html assert 'aria-label="Voice input"' in html assert "Voice note" in html assert "ideaCardAriaLabel" in app_js assert "Select idea:" in app_js assert "Hybrid" not in combined assert "Keyword" not in combined assert "Semantic" not in combined assert "Refresh failed:" not in app_js assert "Refresh could not start: ${error.message}" not in app_js assert "Refresh status unavailable: ${error.message}" not in app_js assert "atlasRefreshProgressEl.textContent = error.message" not in app_js stale_jargon = [ "No wax path pressed.", "Gold has not gathered.", "No red ink yet.", "Demo rehearsal", "demo rehearsal", "press a new seal", "The page is choosing its words.", "Still riffling the inked pages.", "YOU VS THE WOOD", "current Wood", "advisor turns", ] for phrase in stale_jargon: assert phrase not in combined def test_visible_static_shell_does_not_promote_submission_evidence() -> None: html = Path("static/index.html").read_text(encoding="utf-8").lower() promotional_terms = [ "judge", "prize", "submission", "badge", "build-small", "hackathon criteria", ] for term in promotional_terms: assert term not in html def test_server_png_copy_uses_interface_language() -> None: source = Path("hackathon_advisor/png_export.py").read_text(encoding="utf-8") assert "IDEA MAP" in source assert "YOU VS THE WOOD" not in source