diff --git a/ui/src/ui/app.test.ts b/ui/src/ui/app.test.ts index 6a4007b2850..72a57758f5d 100644 --- a/ui/src/ui/app.test.ts +++ b/ui/src/ui/app.test.ts @@ -136,13 +136,10 @@ describe("OpenClawApp dictation recorder lifecycle", () => { await app.toggleChatDictation(); const recorder = MockMediaRecorder.instances[0]; recorder.emitData(new Blob(["audio"], { type: "audio/webm" })); - transcribeChatAudioMock.mockImplementationOnce(async () => { - expect(app.chatDictationChunks).toEqual([]); - return null; - }); + const transcription = createDeferred(); + transcribeChatAudioMock.mockReturnValueOnce(transcription.promise); await app.toggleChatDictation(); - await Promise.resolve(); expect(app.chatDictationChunks).toEqual([]); expect(transcribeChatAudioMock).toHaveBeenCalledTimes(1); @@ -150,6 +147,8 @@ describe("OpenClawApp dictation recorder lifecycle", () => { size: 5, type: "audio/webm", }); + transcription.resolve(null); + await transcription.promise; }); it("ignores duplicate starts while microphone permission is pending", async () => { diff --git a/ui/src/ui/app.ts b/ui/src/ui/app.ts index 83d25dfba6e..50da8be7577 100644 --- a/ui/src/ui/app.ts +++ b/ui/src/ui/app.ts @@ -1015,8 +1015,7 @@ export class OpenClawApp extends LitElement { if (this.chatDictationRecorder !== recorder) { return; } - const chunks = [...this.chatDictationChunks]; - this.chatDictationChunks = []; + const chunks = this.chatDictationChunks.splice(0); const canceledByRequest = this.chatDictationCancelNextStop; this.chatDictationCancelNextStop = false; this.chatDictationRecorder = null;