























@@ -2885,11 +2885,14 @@ describe("google-meet plugin", () => {
28852885}) => Promise<void>)
28862886| undefined;
28872887const respond = vi.fn();
2888+vi.useFakeTimers();
288828892889-await handler?.({
2890+const run = handler?.({
28902891params: { url: "https://meet.google.com/abc-defg-hij" },
28912892 respond,
28922893});
2894+await vi.advanceTimersByTimeAsync(2_000);
2895+await run;
2893289628942897expect(respond.mock.calls[0]?.[1]).toMatchObject({
28952898spoken: false,
@@ -2905,6 +2908,7 @@ describe("google-meet plugin", () => {
29052908});
29062909expect(inspectCount).toBeGreaterThanOrEqual(2);
29072910} finally {
2911+vi.useRealTimers();
29082912Object.defineProperty(process, "platform", { value: originalPlatform });
29092913}
29102914});
@@ -4831,6 +4835,7 @@ describe("google-meet plugin", () => {
48314835});
4832483648334837it("stops paired-node realtime audio after repeated input pull failures", async () => {
4838+vi.useFakeTimers();
48344839const bridge = {
48354840connect: vi.fn(async () => {}),
48364841sendAudio: vi.fn(),
@@ -4860,38 +4865,42 @@ describe("google-meet plugin", () => {
48604865},
48614866};
486248674863-const handle = await startNodeRealtimeAudioBridge({
4864-config: resolveGoogleMeetConfig({
4865-realtime: { provider: "openai", model: "gpt-realtime" },
4866-}),
4867-fullConfig: {} as never,
4868-runtime: runtime as never,
4869-meetingSessionId: "meet-1",
4870-nodeId: "node-1",
4871-bridgeId: "bridge-1",
4872-logger: noopLogger,
4873-providers: [provider],
4874-});
4875-4876-await vi.waitFor(
4877-() => {
4878-expect(bridge.close).toHaveBeenCalled();
4879-},
4880-{ timeout: 3_000 },
4881-);
4882-expect(handle.getHealth()).toMatchObject({
4883-bridgeClosed: true,
4884-consecutiveInputErrors: 5,
4885-lastInputError: "node invoke timeout",
4886-});
4887-expect(runtime.nodes.invoke).toHaveBeenCalledWith(
4888-expect.objectContaining({
4868+try {
4869+const handle = await startNodeRealtimeAudioBridge({
4870+config: resolveGoogleMeetConfig({
4871+realtime: { provider: "openai", model: "gpt-realtime" },
4872+}),
4873+fullConfig: {} as never,
4874+runtime: runtime as never,
4875+meetingSessionId: "meet-1",
48894876nodeId: "node-1",
4890-command: "googlemeet.chrome",
4891-params: { action: "stop", bridgeId: "bridge-1" },
4892-timeoutMs: 5_000,
4893-}),
4894-);
4877+bridgeId: "bridge-1",
4878+logger: noopLogger,
4879+providers: [provider],
4880+});
4881+4882+await vi.waitFor(
4883+() => {
4884+expect(bridge.close).toHaveBeenCalled();
4885+},
4886+{ timeout: 3_000 },
4887+);
4888+expect(handle.getHealth()).toMatchObject({
4889+bridgeClosed: true,
4890+consecutiveInputErrors: 5,
4891+lastInputError: "node invoke timeout",
4892+});
4893+expect(runtime.nodes.invoke).toHaveBeenCalledWith(
4894+expect.objectContaining({
4895+nodeId: "node-1",
4896+command: "googlemeet.chrome",
4897+params: { action: "stop", bridgeId: "bridge-1" },
4898+timeoutMs: 5_000,
4899+}),
4900+);
4901+} finally {
4902+vi.useRealTimers();
4903+}
48954904});
4896490548974906it("exposes node-host list and stop-by-url bridge actions", async () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。