





















@@ -3,6 +3,7 @@ import fs from "node:fs/promises";
33import path from "node:path";
44import type { RuntimeEnv } from "openclaw/plugin-sdk/runtime-env";
55import { afterAll, afterEach, beforeEach, describe, expect, it, vi } from "vitest";
6+import { stripAnsi } from "../../../../src/terminal/ansi.js";
67import { loginWeb } from "./login.js";
78import { renderQrTerminal } from "./qr-terminal.js";
89import { createWaSocket, formatError, waitForWaConnection } from "./session.js";
@@ -80,6 +81,10 @@ async function flushTasks() {
8081await Promise.resolve();
8182}
828384+function runtimeMessageCalls(fn: ReturnType<typeof vi.fn>) {
85+return fn.mock.calls.map((call) => stripAnsi(String(call[0])));
86+}
87+8388describe("loginWeb coverage", () => {
8489beforeEach(() => {
8590vi.useFakeTimers();
@@ -112,8 +117,8 @@ describe("loginWeb coverage", () => {
112117expect(createWaSocketMock).toHaveBeenCalledTimes(2);
113118const firstSock = await createWaSocketMock.mock.results[0]?.value;
114119expect(firstSock.ws.close).toHaveBeenCalled();
115-expect(runtime.log).toHaveBeenCalledWith(
116-expect.stringContaining("Linked after restart; web session ready."),
120+expect(runtimeMessageCalls(runtime.log)).toContain(
121+"✅ Linked after restart; web session ready.",
117122);
118123vi.runAllTimers();
119124const secondSock = await createWaSocketMock.mock.results[1]?.value;
@@ -160,7 +165,9 @@ describe("loginWeb coverage", () => {
160165await expect(loginWeb(false, waitForWaConnectionMock as never, runtime)).rejects.toThrow(
161166/cache cleared/i,
162167);
163-expect(runtime.error).toHaveBeenCalledWith(expect.stringContaining("session is logged out"));
168+expect(runtimeMessageCalls(runtime.error)).toEqual([
169+"WhatsApp reported the session is logged out. Cleared cached web session; please rerun openclaw channels login and scan the QR again.",
170+]);
164171expect(rmMock).toHaveBeenCalledWith(path.resolve(testState.authDir), {
165172recursive: true,
166173force: true,
@@ -173,9 +180,9 @@ describe("loginWeb coverage", () => {
173180await expect(loginWeb(false, waitForWaConnectionMock as never, runtime)).rejects.toThrow(
174181"formatted:Error: boom",
175182);
176-expect(runtime.error).toHaveBeenCalledWith(
177-expect.stringContaining("WhatsApp Web connection ended before fully opening."),
178-);
183+expect(runtimeMessageCalls(runtime.error)).toEqual([
184+"WhatsApp Web connection ended before fully opening. formatted:Error: boom",
185+]);
179186expect(formatErrorMock).toHaveBeenCalled();
180187});
181188});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。