test: fix merge gate regressions
This commit is contained in:
parent
1708043ffb
commit
aab43448ef
@ -13,6 +13,7 @@ Docs: https://docs.openclaw.ai
|
||||
|
||||
### Fixes
|
||||
|
||||
- Dashboard/agents and chat: scope the Agents > Skills view to the selected agent, restore clean sidebar status and log rendering, and keep oversized inline markdown images from expanding across the chat UI. (#45451) Thanks @BunsDev.
|
||||
- Browser/existing-session: accept text-only `list_pages` and `new_page` responses from Chrome DevTools MCP so live-session tab discovery and new-tab open flows keep working when the server omits structured page metadata.
|
||||
- Ollama/reasoning visibility: stop promoting native `thinking` and `reasoning` fields into final assistant text so local reasoning models no longer leak internal thoughts in normal replies. (#45330) Thanks @xi7ang.
|
||||
- Cron/isolated sessions: route nested cron-triggered embedded runner work onto the nested lane so isolated cron jobs no longer deadlock when compaction or other queued inner work runs. Thanks @vincentkoc.
|
||||
|
||||
@ -328,11 +328,13 @@ describe("BlueBubbles webhook monitor", () => {
|
||||
}
|
||||
|
||||
function createHangingWebhookRequest(url = "/bluebubbles-webhook?password=test-password") {
|
||||
const req = new EventEmitter() as IncomingMessage & { destroy: ReturnType<typeof vi.fn> };
|
||||
const req = new EventEmitter() as IncomingMessage & {
|
||||
destroy: (error?: Error) => IncomingMessage;
|
||||
};
|
||||
req.method = "POST";
|
||||
req.url = url;
|
||||
req.headers = {};
|
||||
req.destroy = vi.fn();
|
||||
req.destroy = vi.fn((_: Error | undefined) => req) as typeof req.destroy;
|
||||
setRequestRemoteAddress(req, "127.0.0.1");
|
||||
return req;
|
||||
}
|
||||
|
||||
@ -14,6 +14,17 @@ vi.mock("../send.js", () => ({
|
||||
describe("registerMatrixMonitorEvents", () => {
|
||||
const roomId = "!room:example.org";
|
||||
|
||||
function createRoomEvent(event: Partial<MatrixRawEvent>): MatrixRawEvent {
|
||||
return {
|
||||
event_id: "$default",
|
||||
sender: "@bot:example.org",
|
||||
type: "m.room.message",
|
||||
origin_server_ts: 0,
|
||||
content: {},
|
||||
...event,
|
||||
} as MatrixRawEvent;
|
||||
}
|
||||
|
||||
beforeEach(() => {
|
||||
sendReadReceiptMatrixMock.mockClear();
|
||||
});
|
||||
@ -67,10 +78,10 @@ describe("registerMatrixMonitorEvents", () => {
|
||||
|
||||
it("sends read receipt immediately for non-self messages", async () => {
|
||||
const { client, onRoomMessage, roomMessageHandler } = createHarness();
|
||||
const event = {
|
||||
const event = createRoomEvent({
|
||||
event_id: "$e1",
|
||||
sender: "@alice:example.org",
|
||||
} as MatrixRawEvent;
|
||||
});
|
||||
|
||||
roomMessageHandler("!room:example.org", event);
|
||||
|
||||
@ -81,22 +92,26 @@ describe("registerMatrixMonitorEvents", () => {
|
||||
});
|
||||
|
||||
it("does not send read receipts for self messages", async () => {
|
||||
await expectForwardedWithoutReadReceipt({
|
||||
event_id: "$e2",
|
||||
sender: "@bot:example.org",
|
||||
});
|
||||
await expectForwardedWithoutReadReceipt(
|
||||
createRoomEvent({
|
||||
event_id: "$e2",
|
||||
sender: "@bot:example.org",
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
it("skips receipt when message lacks sender or event id", async () => {
|
||||
await expectForwardedWithoutReadReceipt({
|
||||
sender: "@alice:example.org",
|
||||
});
|
||||
await expectForwardedWithoutReadReceipt(
|
||||
createRoomEvent({
|
||||
sender: "@alice:example.org",
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
it("caches self user id across messages", async () => {
|
||||
const { getUserId, roomMessageHandler } = createHarness();
|
||||
const first = { event_id: "$e3", sender: "@alice:example.org" } as MatrixRawEvent;
|
||||
const second = { event_id: "$e4", sender: "@bob:example.org" } as MatrixRawEvent;
|
||||
const first = createRoomEvent({ event_id: "$e3", sender: "@alice:example.org" });
|
||||
const second = createRoomEvent({ event_id: "$e4", sender: "@bob:example.org" });
|
||||
|
||||
roomMessageHandler("!room:example.org", first);
|
||||
roomMessageHandler("!room:example.org", second);
|
||||
@ -110,7 +125,7 @@ describe("registerMatrixMonitorEvents", () => {
|
||||
it("logs and continues when sending read receipt fails", async () => {
|
||||
sendReadReceiptMatrixMock.mockRejectedValueOnce(new Error("network boom"));
|
||||
const { roomMessageHandler, onRoomMessage, logVerboseMessage } = createHarness();
|
||||
const event = { event_id: "$e5", sender: "@alice:example.org" } as MatrixRawEvent;
|
||||
const event = createRoomEvent({ event_id: "$e5", sender: "@alice:example.org" });
|
||||
|
||||
roomMessageHandler("!room:example.org", event);
|
||||
|
||||
@ -126,7 +141,7 @@ describe("registerMatrixMonitorEvents", () => {
|
||||
const { roomMessageHandler, onRoomMessage, getUserId } = createHarness({
|
||||
getUserId: vi.fn().mockRejectedValue(new Error("cannot resolve self")),
|
||||
});
|
||||
const event = { event_id: "$e6", sender: "@alice:example.org" } as MatrixRawEvent;
|
||||
const event = createRoomEvent({ event_id: "$e6", sender: "@alice:example.org" });
|
||||
|
||||
roomMessageHandler("!room:example.org", event);
|
||||
|
||||
|
||||
@ -409,10 +409,10 @@ describe("onboard (non-interactive): gateway and remote auth", () => {
|
||||
|
||||
let capturedError = "";
|
||||
const runtimeWithCapture = {
|
||||
log: () => {},
|
||||
error: (message: string) => {
|
||||
capturedError = message;
|
||||
throw new Error(message);
|
||||
log: (..._args: unknown[]) => {},
|
||||
error: (...args: unknown[]) => {
|
||||
capturedError = args.map(String).join(" ");
|
||||
throw new Error(capturedError);
|
||||
},
|
||||
exit: (_code: number) => {
|
||||
throw new Error("exit should not be reached after runtime.error");
|
||||
|
||||
@ -35,6 +35,7 @@ import {
|
||||
import type {
|
||||
ExecEventPayload,
|
||||
ExecFinishedEventParams,
|
||||
ExecFinishedResult,
|
||||
RunResult,
|
||||
SkillBinsProvider,
|
||||
SystemRunParams,
|
||||
|
||||
@ -17,7 +17,6 @@ vi.mock("../../../pairing/pairing-store.js", () => ({
|
||||
}));
|
||||
|
||||
type MessageHandler = (args: { event: Record<string, unknown>; body: unknown }) => Promise<void>;
|
||||
type AppMentionHandler = MessageHandler;
|
||||
type RegisteredEventName = "message" | "app_mention";
|
||||
|
||||
type MessageCase = {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user