test: remove voice call manager sleeps

This commit is contained in:
Peter Steinberger
2026-05-11 16:41:11 +01:00
parent 561c19cb58
commit 8e1f1b56ae
2 changed files with 35 additions and 12 deletions
@@ -1,4 +1,4 @@
import { describe, expect, it } from "vitest";
import { describe, expect, it, vi } from "vitest";
import { createManagerHarness, FakeProvider, markCallAnswered } from "./manager.test-harness.js";
function requireCall(
@@ -20,6 +20,18 @@ function requireTurnToken(provider: Awaited<ReturnType<typeof createManagerHarne
return firstStart.turnToken;
}
function expectTranscriptWaiter(
manager: Awaited<ReturnType<typeof createManagerHarness>>["manager"],
callId: string,
) {
const waiters = (
manager as unknown as {
transcriptWaiters: Map<string, unknown>;
}
).transcriptWaiters;
expect(waiters.has(callId)).toBe(true);
}
describe("CallManager closed-loop turns", () => {
it("completes a closed-loop turn without live audio", async () => {
const { manager, provider } = await createManagerHarness({
@@ -32,7 +44,10 @@ describe("CallManager closed-loop turns", () => {
markCallAnswered(manager, started.callId, "evt-closed-loop-answered");
const turnPromise = manager.continueCall(started.callId, "How can I help?");
await new Promise((resolve) => setTimeout(resolve, 0));
await vi.waitFor(() => {
expect(provider.startListeningCalls).toHaveLength(1);
expectTranscriptWaiter(manager, started.callId);
});
manager.processEvent({
id: "evt-closed-loop-speech",
@@ -107,7 +122,10 @@ describe("CallManager closed-loop turns", () => {
markCallAnswered(manager, started.callId, "evt-turn-token-answered");
const turnPromise = manager.continueCall(started.callId, "Prompt");
await new Promise((resolve) => setTimeout(resolve, 0));
await vi.waitFor(() => {
expect(provider.startListeningCalls).toHaveLength(1);
expectTranscriptWaiter(manager, started.callId);
});
const expectedTurnToken = requireTurnToken(provider);
@@ -122,11 +140,7 @@ describe("CallManager closed-loop turns", () => {
turnToken: "wrong-token",
});
const pendingState = await Promise.race([
turnPromise.then(() => "resolved"),
new Promise<"pending">((resolve) => setTimeout(() => resolve("pending"), 0)),
]);
expect(pendingState).toBe("pending");
expectTranscriptWaiter(manager, started.callId);
manager.processEvent({
id: "evt-turn-token-good",
@@ -158,7 +172,10 @@ describe("CallManager closed-loop turns", () => {
markCallAnswered(manager, started.callId, "evt-multi-answered");
const firstTurn = manager.continueCall(started.callId, "First question");
await new Promise((resolve) => setTimeout(resolve, 0));
await vi.waitFor(() => {
expect(provider.startListeningCalls).toHaveLength(1);
expectTranscriptWaiter(manager, started.callId);
});
manager.processEvent({
id: "evt-multi-speech-1",
type: "call.speech",
@@ -171,7 +188,10 @@ describe("CallManager closed-loop turns", () => {
await firstTurn;
const secondTurn = manager.continueCall(started.callId, "Second question");
await new Promise((resolve) => setTimeout(resolve, 0));
await vi.waitFor(() => {
expect(provider.startListeningCalls).toHaveLength(2);
expectTranscriptWaiter(manager, started.callId);
});
manager.processEvent({
id: "evt-multi-speech-2",
type: "call.speech",
@@ -212,7 +232,10 @@ describe("CallManager closed-loop turns", () => {
for (let i = 1; i <= 5; i++) {
const turnPromise = manager.continueCall(started.callId, `Prompt ${i}`);
await new Promise((resolve) => setTimeout(resolve, 0));
await vi.waitFor(() => {
expect(provider.startListeningCalls).toHaveLength(i);
expectTranscriptWaiter(manager, started.callId);
});
manager.processEvent({
id: `evt-loop-speech-${i}`,
type: "call.speech",
@@ -91,7 +91,7 @@ function requireSingleStartListeningCall(provider: FakeProvider) {
type HarnessManager = Awaited<ReturnType<typeof createManagerHarness>>["manager"];
async function waitForPlaybackDispatch() {
await new Promise((resolve) => setTimeout(resolve, 0));
await new Promise<void>((resolve) => setImmediate(resolve));
}
async function initiateCallWithMessage(