mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 05:50:43 +00:00
perf: narrow grouped render test imports
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user