























@@ -2843,18 +2843,14 @@ describe("google-meet plugin", () => {
28432843 respond,
28442844});
284528452846-expect(respond.mock.calls[0]?.[1]).toMatchObject({
2847-spoken: false,
2848-session: {
2849-chrome: {
2850-health: {
2851-micMuted: true,
2852-speechReady: false,
2853-speechBlockedReason: "meet-microphone-muted",
2854-},
2855-},
2856-},
2857-});
2846+const payload = requireRecord(respond.mock.calls[0]?.[1], "join response payload");
2847+expect(payload.spoken).toBe(false);
2848+const session = requireRecord(payload.session, "join session");
2849+const chrome = requireRecord(session.chrome, "join chrome session");
2850+const health = requireRecord(chrome.health, "join chrome health");
2851+expect(health.micMuted).toBe(true);
2852+expect(health.speechReady).toBe(false);
2853+expect(health.speechBlockedReason).toBe("meet-microphone-muted");
28582854} finally {
28592855Object.defineProperty(process, "platform", { value: originalPlatform });
28602856}
@@ -2896,18 +2892,14 @@ describe("google-meet plugin", () => {
28962892await vi.advanceTimersByTimeAsync(2_000);
28972893await run;
289828942899-expect(respond.mock.calls[0]?.[1]).toMatchObject({
2900-spoken: false,
2901-session: {
2902-chrome: {
2903-health: {
2904-micMuted: true,
2905-speechReady: false,
2906-speechBlockedReason: "meet-microphone-muted",
2907-},
2908-},
2909-},
2910-});
2895+const payload = requireRecord(respond.mock.calls[0]?.[1], "join response payload");
2896+expect(payload.spoken).toBe(false);
2897+const session = requireRecord(payload.session, "join session");
2898+const chrome = requireRecord(session.chrome, "join chrome session");
2899+const health = requireRecord(chrome.health, "join chrome health");
2900+expect(health.micMuted).toBe(true);
2901+expect(health.speechReady).toBe(false);
2902+expect(health.speechBlockedReason).toBe("meet-microphone-muted");
29112903expect(inspectCount).toBeGreaterThanOrEqual(2);
29122904} finally {
29132905vi.useRealTimers();
@@ -2941,48 +2933,66 @@ describe("google-meet plugin", () => {
2941293329422934expect(respond.mock.calls[0]?.[0]).toBe(true);
29432935expect(nodesList.mock.calls[0]).toStrictEqual([]);
2944-expect(nodesInvoke).toHaveBeenCalledWith(
2945-expect.objectContaining({
2946-nodeId: "node-1",
2947-command: "googlemeet.chrome",
2948-params: expect.objectContaining({
2949-action: "stopByUrl",
2950-url: "https://meet.google.com/abc-defg-hij",
2951-mode: "transcribe",
2952-}),
2953-}),
2954-);
2955-expect(nodesInvoke).toHaveBeenCalledWith(
2956-expect.objectContaining({
2957-nodeId: "node-1",
2958-command: "browser.proxy",
2959-params: expect.objectContaining({
2960-path: "/tabs/open",
2961-body: { url: "https://meet.google.com/abc-defg-hij" },
2962-}),
2963-}),
2964-);
2965-expect(nodesInvoke).toHaveBeenCalledWith(
2966-expect.objectContaining({
2967-nodeId: "node-1",
2968-command: "googlemeet.chrome",
2969-params: expect.objectContaining({
2970-action: "start",
2971-url: "https://meet.google.com/abc-defg-hij",
2972-mode: "transcribe",
2973-launch: false,
2974-}),
2975-}),
2976-);
2977-expect(respond.mock.calls[0]?.[1]).toMatchObject({
2978-session: {
2979-transport: "chrome-node",
2980-chrome: {
2981-nodeId: "node-1",
2982-launched: true,
2983-},
2984-},
2936+const stopCall = nodesInvoke.mock.calls.find(([rawCall]) => {
2937+const call = requireRecord(rawCall, "node invoke");
2938+const params = requireRecord(call.params, "node invoke params");
2939+return call.command === "googlemeet.chrome" && params.action === "stopByUrl";
2940+});
2941+if (!stopCall) {
2942+throw new Error("Expected googlemeet.chrome stopByUrl node invoke");
2943+}
2944+expect(requireRecord(stopCall[0], "stop node invoke").nodeId).toBe("node-1");
2945+expect(requireRecord(stopCall[0], "stop node invoke").command).toBe("googlemeet.chrome");
2946+expect(
2947+requireRecord(requireRecord(stopCall[0], "stop node invoke").params, "stop params"),
2948+).toEqual({
2949+action: "stopByUrl",
2950+url: "https://meet.google.com/abc-defg-hij",
2951+mode: "transcribe",
2952+});
2953+const openCall = nodesInvoke.mock.calls.find(([rawCall]) => {
2954+const call = requireRecord(rawCall, "node invoke");
2955+const params = requireRecord(call.params, "node invoke params");
2956+return call.command === "browser.proxy" && params.path === "/tabs/open";
2957+});
2958+if (!openCall) {
2959+throw new Error("Expected browser.proxy /tabs/open node invoke");
2960+}
2961+expect(requireRecord(openCall[0], "open node invoke").nodeId).toBe("node-1");
2962+expect(requireRecord(openCall[0], "open node invoke").command).toBe("browser.proxy");
2963+expect(
2964+requireRecord(requireRecord(openCall[0], "open node invoke").params, "open params"),
2965+).toEqual({
2966+method: "POST",
2967+path: "/tabs/open",
2968+timeoutMs: 30000,
2969+body: { url: "https://meet.google.com/abc-defg-hij" },
29852970});
2971+const startCall = nodesInvoke.mock.calls.find(([rawCall]) => {
2972+const call = requireRecord(rawCall, "node invoke");
2973+const params = requireRecord(call.params, "node invoke params");
2974+return call.command === "googlemeet.chrome" && params.action === "start";
2975+});
2976+if (!startCall) {
2977+throw new Error("Expected googlemeet.chrome start node invoke");
2978+}
2979+expect(requireRecord(startCall[0], "start node invoke").nodeId).toBe("node-1");
2980+expect(requireRecord(startCall[0], "start node invoke").command).toBe("googlemeet.chrome");
2981+const startParams = requireRecord(
2982+requireRecord(startCall[0], "start node invoke").params,
2983+"start params",
2984+);
2985+expect(startParams.action).toBe("start");
2986+expect(startParams.url).toBe("https://meet.google.com/abc-defg-hij");
2987+expect(startParams.mode).toBe("transcribe");
2988+expect(startParams.launch).toBe(false);
2989+expect(startParams.joinTimeoutMs).toBe(30000);
2990+const payload = requireRecord(respond.mock.calls[0]?.[1], "join response payload");
2991+const session = requireRecord(payload.session, "join session");
2992+expect(session.transport).toBe("chrome-node");
2993+const chrome = requireRecord(session.chrome, "join chrome session");
2994+expect(chrome.nodeId).toBe("node-1");
2995+expect(chrome.launched).toBe(true);
29862996});
2987299729882998it("reuses an active Meet session for the same URL and transport", async () => {
@@ -3021,12 +3031,13 @@ describe("google-meet plugin", () => {
30213031expect(
30223032nodesInvoke.mock.calls.filter(([call]) => call.command === "googlemeet.chrome"),
30233033).toHaveLength(2);
3024-expect(second.mock.calls[0]?.[1]).toMatchObject({
3025-session: {
3026-chrome: { health: { inCall: true, micMuted: false } },
3027-notes: expect.arrayContaining(["Reused existing active Meet session."]),
3028-},
3029-});
3034+const payload = requireRecord(second.mock.calls[0]?.[1], "second join response payload");
3035+const session = requireRecord(payload.session, "second join session");
3036+const chrome = requireRecord(session.chrome, "second join chrome session");
3037+const health = requireRecord(chrome.health, "second join chrome health");
3038+expect(health.inCall).toBe(true);
3039+expect(health.micMuted).toBe(false);
3040+expect(session.notes).toContain("Reused existing active Meet session.");
30303041});
3031304230323043it("reuses active Meet sessions across URL query differences", async () => {
@@ -3065,11 +3076,9 @@ describe("google-meet plugin", () => {
30653076expect(
30663077nodesInvoke.mock.calls.filter(([call]) => call.command === "googlemeet.chrome"),
30673078).toHaveLength(2);
3068-expect(second.mock.calls[0]?.[1]).toMatchObject({
3069-session: {
3070-notes: expect.arrayContaining(["Reused existing active Meet session."]),
3071-},
3072-});
3079+const payload = requireRecord(second.mock.calls[0]?.[1], "second join response payload");
3080+const session = requireRecord(payload.session, "second join session");
3081+expect(session.notes).toContain("Reused existing active Meet session.");
30733082});
3074308330753084it("reuses existing Meet browser tabs across URL query differences", async () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。