using Agent.Core.TextToSpeech;using Xunit;namespace Agent.Core.DesignTests;public class KokoroTtsSanitizerTests{ [Fact] public void Sanitize_strips_markdown_urls_and_emojis() { string input = "Hello **world**! See https://example.com and `#tag` 😀"; string spoken = KokoroTtsSanitizer.Sanitize(input); Assert.DoesNotContain("**", spoken); Assert.DoesNotContain("http", spoken, StringComparison.OrdinalIgnoreCase); Assert.DoesNotContain("#tag", spoken); Assert.Contains("Hello", spoken); Assert.Contains("world", spoken); } [Fact] public void Sanitize_keeps_natural_punctuation() { string input = "Wait — really? Yes, please."; string spoken = KokoroTtsSanitizer.Sanitize(input); Assert.Contains("Wait", spoken); Assert.Contains("really", spoken); } [Fact] public void Sanitize_verbatim_style_symbols_removed() { string input = "Use `code` and [link](https://x.test) {braces}"; string spoken = KokoroTtsSanitizer.Sanitize(input); Assert.DoesNotContain("`", spoken); Assert.DoesNotContain("{", spoken); Assert.DoesNotContain("https", spoken, StringComparison.OrdinalIgnoreCase); Assert.Contains("link", spoken); } [Fact] public void Sanitize_empty_input_returns_empty() { Assert.Equal(string.Empty, KokoroTtsSanitizer.Sanitize(null)); Assert.Equal(string.Empty, KokoroTtsSanitizer.Sanitize(" ")); }}
Documentation
Version 3 design tests
Automated checks for chat, history, and Kokoro TTS (sanitizer + optional live speech).
Quick run
python src/Version3/DesignTests/run-design-tests.py
python src/Version3/DesignTests/run-design-tests.py --live
.\src\Version3\DesignTests\run-design-tests.ps1 -Live
What runs
| Suite | Needs network | Covers | |-------|----------------|--------| | ChatHistoryStoreTests | No | Same as V1 history XML | | OllamaClientHistoryTests | No | Client save/load | | KokoroTtsSanitizerTests | No | Markdown/emoji/URL stripping for speech | | OllamaLiveTests | Yes (--live) | Ollama chat | | KokoroTtsLiveTests | Yes (--live) | Kokoro model load + SpeakAsync |
First Kokoro live run may download ~320MB of model weights.
Console video (testers)
Record Version 3 console sessions (chat + TTS + history):
python src/TestManager/test_manager.py record v2 chat-tts --build
See src/TestManager/README.md.
All versions
python src/run-all-design-tests.py
python src/run-all-design-tests.py --live