64 lines
1.7 KiB
TypeScript
64 lines
1.7 KiB
TypeScript
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
|
|
import { ClawdbotApp } from "./app";
|
|
|
|
const originalConnect = ClawdbotApp.prototype.connect;
|
|
|
|
function mountApp(pathname: string) {
|
|
window.history.replaceState({}, "", pathname);
|
|
const app = document.createElement("clawdbot-app") as ClawdbotApp;
|
|
document.body.append(app);
|
|
return app;
|
|
}
|
|
|
|
beforeEach(() => {
|
|
ClawdbotApp.prototype.connect = () => {
|
|
// no-op: avoid real gateway WS connections in browser tests
|
|
};
|
|
window.__CLAWDBOT_CONTROL_UI_BASE_PATH__ = undefined;
|
|
localStorage.clear();
|
|
document.body.innerHTML = "";
|
|
});
|
|
|
|
afterEach(() => {
|
|
ClawdbotApp.prototype.connect = originalConnect;
|
|
window.__CLAWDBOT_CONTROL_UI_BASE_PATH__ = undefined;
|
|
localStorage.clear();
|
|
document.body.innerHTML = "";
|
|
});
|
|
|
|
describe("chat markdown rendering", () => {
|
|
it("renders markdown inside tool output sidebar", async () => {
|
|
const app = mountApp("/chat");
|
|
await app.updateComplete;
|
|
|
|
const timestamp = Date.now();
|
|
app.chatMessages = [
|
|
{
|
|
role: "assistant",
|
|
content: [
|
|
{ type: "toolcall", name: "noop", arguments: {} },
|
|
{ type: "toolresult", name: "noop", text: "Hello **world**" },
|
|
],
|
|
timestamp,
|
|
},
|
|
];
|
|
|
|
await app.updateComplete;
|
|
|
|
const toolCards = Array.from(
|
|
app.querySelectorAll<HTMLElement>(".chat-tool-card"),
|
|
);
|
|
const toolCard = toolCards.find((card) =>
|
|
card.querySelector(".chat-tool-card__preview, .chat-tool-card__inline"),
|
|
);
|
|
expect(toolCard).not.toBeUndefined();
|
|
toolCard?.click();
|
|
|
|
await app.updateComplete;
|
|
|
|
const strong = app.querySelector(".sidebar-markdown strong");
|
|
expect(strong?.textContent).toBe("world");
|
|
});
|
|
});
|