perf(test): merge chat and system run cases

This commit is contained in:
Peter Steinberger
2026-04-20 19:32:01 +01:00
parent bdc5a96db6
commit dab1be48fc
2 changed files with 188 additions and 239 deletions

View File

@@ -919,140 +919,81 @@ describe("chat view", () => {
expect(container.textContent).not.toContain("MEDIA:https://example.com/photo.png");
});
it("keeps user transcript images visible after history reload", () => {
const container = document.createElement("div");
renderGroupedMessage(
container,
{
id: "user-history-image",
role: "user",
content: "",
MediaPath: "/tmp/openclaw/user-upload.png",
timestamp: Date.now(),
},
"user",
{
it("renders allowed transcript images and skips blocked/non-image media", () => {
const renderUserMedia = (message: unknown) => {
const container = document.createElement("div");
renderGroupedMessage(container, message, "user", {
showToolCalls: false,
basePath: "/openclaw",
assistantAttachmentAuthToken: "session-token",
localMediaPreviewRoots: ["/tmp/openclaw"],
},
);
});
return container;
};
const image = container.querySelector<HTMLImageElement>(".chat-message-image");
expect(image?.getAttribute("src")).toBe(
let container = renderUserMedia({
id: "user-history-image",
role: "user",
content: "",
MediaPath: "/tmp/openclaw/user-upload.png",
timestamp: Date.now(),
});
expect(
container.querySelector<HTMLImageElement>(".chat-message-image")?.getAttribute("src"),
).toBe(
"/openclaw/__openclaw__/assistant-media?source=%2Ftmp%2Fopenclaw%2Fuser-upload.png&token=session-token",
);
});
it("keeps transcript images visible when MIME falls back to application/octet-stream", () => {
const container = document.createElement("div");
renderGroupedMessage(
container,
{
id: "user-history-image-octet-stream",
role: "user",
content: "",
MediaPath: "/tmp/openclaw/user-upload.png",
MediaType: "application/octet-stream",
timestamp: Date.now(),
},
"user",
{
showToolCalls: false,
basePath: "/openclaw",
assistantAttachmentAuthToken: "session-token",
localMediaPreviewRoots: ["/tmp/openclaw"],
},
);
const image = container.querySelector<HTMLImageElement>(".chat-message-image");
expect(image?.getAttribute("src")).toBe(
container = renderUserMedia({
id: "user-history-image-octet-stream",
role: "user",
content: "",
MediaPath: "/tmp/openclaw/user-upload.png",
MediaType: "application/octet-stream",
timestamp: Date.now(),
});
expect(
container.querySelector<HTMLImageElement>(".chat-message-image")?.getAttribute("src"),
).toBe(
"/openclaw/__openclaw__/assistant-media?source=%2Ftmp%2Fopenclaw%2Fuser-upload.png&token=session-token",
);
});
it("keeps plural user transcript images visible after history reload", () => {
const container = document.createElement("div");
renderGroupedMessage(
container,
{
id: "user-history-images",
role: "user",
content: "",
MediaPaths: ["/tmp/openclaw/first.png", "/tmp/openclaw/second.jpg"],
MediaTypes: ["image/png", "application/octet-stream"],
timestamp: Date.now(),
},
"user",
{
showToolCalls: false,
basePath: "/openclaw",
assistantAttachmentAuthToken: "session-token",
localMediaPreviewRoots: ["/tmp/openclaw"],
},
);
const imageSources = [
...container.querySelectorAll<HTMLImageElement>(".chat-message-image"),
].map((image) => image.getAttribute("src"));
expect(imageSources).toEqual([
container = renderUserMedia({
id: "user-history-images",
role: "user",
content: "",
MediaPaths: ["/tmp/openclaw/first.png", "/tmp/openclaw/second.jpg"],
MediaTypes: ["image/png", "application/octet-stream"],
timestamp: Date.now(),
});
expect(
[...container.querySelectorAll<HTMLImageElement>(".chat-message-image")].map((image) =>
image.getAttribute("src"),
),
).toEqual([
"/openclaw/__openclaw__/assistant-media?source=%2Ftmp%2Fopenclaw%2Ffirst.png&token=session-token",
"/openclaw/__openclaw__/assistant-media?source=%2Ftmp%2Fopenclaw%2Fsecond.jpg&token=session-token",
]);
});
it("does not render blocked local transcript image paths", () => {
const container = document.createElement("div");
renderGroupedMessage(
container,
{
id: "user-history-image-blocked",
role: "user",
content: "",
MediaPath: "/Users/test/Documents/private.png",
MediaType: "image/png",
timestamp: Date.now(),
},
"user",
{
showToolCalls: false,
basePath: "/openclaw",
assistantAttachmentAuthToken: "session-token",
localMediaPreviewRoots: ["/tmp/openclaw"],
},
);
container = renderUserMedia({
id: "user-history-image-blocked",
role: "user",
content: "",
MediaPath: "/Users/test/Documents/private.png",
MediaType: "image/png",
timestamp: Date.now(),
});
expect(container.querySelector(".chat-message-image")).toBeNull();
expect(container.querySelector(".chat-bubble")).toBeNull();
});
it("skips non-image transcript media paths after history reload", () => {
const container = document.createElement("div");
renderGroupedMessage(
container,
{
id: "user-history-document",
role: "user",
content: "",
MediaPath: "/tmp/openclaw/user-upload.pdf",
MediaType: "application/pdf",
timestamp: Date.now(),
},
"user",
{
showToolCalls: false,
basePath: "/openclaw",
assistantAttachmentAuthToken: "session-token",
localMediaPreviewRoots: ["/tmp/openclaw"],
},
);
container = renderUserMedia({
id: "user-history-document",
role: "user",
content: "",
MediaPath: "/tmp/openclaw/user-upload.pdf",
MediaType: "application/pdf",
timestamp: Date.now(),
});
expect(container.querySelector(".chat-message-image")).toBeNull();
});