perf: narrow grouped render test imports

This commit is contained in:
Peter Steinberger
2026-04-23 19:36:20 +01:00
parent c96da8ea18
commit 42d1ff8433

View File

@@ -4,7 +4,6 @@ import { html, render } from "lit";
import { afterEach, describe, expect, it, vi } from "vitest";
import { getSafeLocalStorage } from "../../local-storage.ts";
import type { MessageGroup } from "../types/chat-types.ts";
import { buildChatItems, type BuildChatItemsProps } from "./build-chat-items.ts";
import {
renderMessageGroup,
resetAssistantAttachmentAvailabilityCacheForTest,
@@ -104,6 +103,44 @@ function createMessageGroup(message: unknown, role: string): MessageGroup {
};
}
function createAssistantCanvasBlock(params: {
suffix: string;
title?: string;
url?: string;
preferredHeight?: number;
presentationTarget?: "assistant_message" | "tool_card";
}) {
const viewId = `cv_inline_${params.suffix}`;
const url = params.url ?? `/__openclaw__/canvas/documents/${viewId}/index.html`;
const title = params.title ?? "Inline demo";
const preferredHeight = params.preferredHeight ?? 360;
return {
type: "canvas",
preview: {
kind: "canvas",
surface: "assistant_message",
render: "url",
viewId,
title,
url,
preferredHeight,
},
rawText: JSON.stringify({
kind: "canvas",
view: {
backend: "canvas",
id: viewId,
url,
title,
preferred_height: preferredHeight,
},
presentation: {
target: params.presentationTarget ?? "assistant_message",
},
}),
};
}
function renderMessageGroups(
container: HTMLElement,
groups: MessageGroup[],
@@ -123,24 +160,6 @@ function renderMessageGroups(
);
}
function renderBuiltMessageGroups(
container: HTMLElement,
props: Partial<BuildChatItemsProps>,
opts: Partial<RenderMessageGroupOptions> = {},
) {
const groups = buildChatItems({
sessionKey: "main",
messages: [],
toolMessages: [],
streamSegments: [],
stream: null,
streamStartedAt: null,
showToolCalls: true,
...props,
}).filter((item) => item.kind === "group");
renderMessageGroups(container, groups, opts);
}
function clearDeleteConfirmSkip() {
try {
getSafeLocalStorage()?.removeItem("openclaw:skipDeleteConfirm");
@@ -1110,41 +1129,22 @@ describe("grouped chat rendering", () => {
it("renders hidden assistant_message canvas results with the configured sandbox", () => {
const container = document.createElement("div");
const renderCanvas = (params: { embedSandboxMode?: "trusted"; suffix: string }) =>
renderBuiltMessageGroups(
renderMessageGroups(
container,
{
showToolCalls: false,
messages: [
[
createMessageGroup(
{
id: `assistant-canvas-inline-${params.suffix}`,
role: "assistant",
content: [{ type: "text", text: "Inline canvas result." }],
content: [
{ type: "text", text: "Inline canvas result." },
createAssistantCanvasBlock({ suffix: params.suffix }),
],
timestamp: Date.now(),
},
],
toolMessages: [
{
id: `tool-artifact-inline-${params.suffix}`,
role: "tool",
toolCallId: `call-artifact-inline-${params.suffix}`,
toolName: "canvas_render",
content: JSON.stringify({
kind: "canvas",
view: {
backend: "canvas",
id: `cv_inline_${params.suffix}`,
url: `/__openclaw__/canvas/documents/cv_inline_${params.suffix}/index.html`,
title: "Inline demo",
preferred_height: 360,
},
presentation: {
target: "assistant_message",
},
}),
timestamp: Date.now() + 1,
},
],
},
"assistant",
),
],
{
embedSandboxMode: params.embedSandboxMode ?? "scripts",
},
@@ -1169,19 +1169,22 @@ describe("grouped chat rendering", () => {
it("renders assistant_message canvas results in the assistant bubble even when tool rows are visible", () => {
const container = document.createElement("div");
renderBuiltMessageGroups(
renderMessageGroups(
container,
{
showToolCalls: true,
messages: [
[
createMessageGroup(
{
id: "assistant-canvas-inline-visible",
role: "assistant",
content: [{ type: "text", text: "Inline canvas result." }],
content: [
{ type: "text", text: "Inline canvas result." },
createAssistantCanvasBlock({ suffix: "visible" }),
],
timestamp: Date.now(),
},
],
toolMessages: [
"assistant",
),
createMessageGroup(
{
id: "tool-artifact-inline-visible",
role: "tool",
@@ -1202,8 +1205,9 @@ describe("grouped chat rendering", () => {
}),
timestamp: Date.now() + 1,
},
],
},
"tool",
),
],
{
isToolMessageExpanded: () => true,
},
@@ -1222,19 +1226,19 @@ describe("grouped chat rendering", () => {
it("opens generic tool details instead of a canvas preview from tool rows", () => {
const container = document.createElement("div");
const onOpenSidebar = vi.fn();
renderBuiltMessageGroups(
renderMessageGroups(
container,
{
showToolCalls: true,
messages: [
[
createMessageGroup(
{
id: "assistant-canvas-sidebar",
role: "assistant",
content: [{ type: "text", text: "Sidebar canvas result." }],
timestamp: Date.now(),
},
],
toolMessages: [
"assistant",
),
createMessageGroup(
{
id: "tool-artifact-sidebar",
role: "tool",
@@ -1255,8 +1259,9 @@ describe("grouped chat rendering", () => {
}),
timestamp: Date.now() + 1,
},
],
},
"tool",
),
],
{
isToolExpanded: () => true,
isToolMessageExpanded: () => true,