Repository navigation
test: end-to-end coverage of the record -> synthesize -> export chain - #66
Merged
Merged
Conversation
Issue #41 asked for the main chain to be exercised automatically. The smoke test sweeps features one at a time; nothing drove them in sequence, and transcription in particular had no automated coverage at all. `scripts/e2e-test.sh` walks the chain a user walks, against a running server: record a bundled ZipVoice test clip stands in for the microphone transcribe POST /api/transcribe, then assert the text mentions 武汉 synthesize feed that transcript back as prompt_text, so the clone runs on machine output rather than a hand-written string export history WAV and MP3, then a voice package that is exported, deleted and re-imported It fails hard when the STT model is missing instead of skipping (that would hide the one link nothing else covers), and it deletes the history entry and voices it created. CI's smoke job now downloads and caches SenseVoice and runs the script after the smoke sweep. Verified locally against the 15-engine install: 12 passed, 0 failed. Browser-level UI automation is deliberately not included: it would add a Node/Playwright toolchain to a Rust repo whose UI is one static file. Left to its own issue.
This was referenced Oct 30, 2026
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #41 (server side; browser automation split out).
Why
smoke-test.shchecks features one at a time — health, engines, settings, synthesis, mp3, profiles, pairing. Nothing drove them in sequence, and/api/transcribehad no automated coverage at all, even though it is what fills the transcript field for cloned voices.What
New
scripts/e2e-test.shwalks the chain a user walks:POST /api/transcribePOST /api/engines/<id>/synthesizeprompt_textGET /api/history[/{id}/audio]POST /api/profiles→GET …/export→DELETE→POST …/importPK, re-import reportsimported:1It fails instead of skipping when SenseVoice is absent — skipping would hide the one link no other test covers — and removes the history entry and voices it created.
CI: the smoke job now downloads and caches SenseVoice (234 MB, keyed on
download-stt.sh) and runs the script after the smoke sweep. Docs updated in both languages.Local result
Against the 15-engine install on this machine (M4 Pro): 12 passed, 0 failed, transcript
那还是36年前,1987年,我呢考上了武汉大学的计算机系。Not included
Browser-level UI automation (the second checkbox in #41). That needs a Node/Playwright toolchain beside a Rust repo whose UI is one static file; worth its own issue rather than smuggling Node into CI here.