Update Beryl Agent interface tests
This commit is contained in:
@@ -3,6 +3,7 @@ import { act, cleanup, render, screen, waitFor } from "@testing-library/react";
|
|||||||
import "@testing-library/jest-dom/vitest";
|
import "@testing-library/jest-dom/vitest";
|
||||||
import { App } from "../src/App.js";
|
import { App } from "../src/App.js";
|
||||||
global.ResizeObserver = class { observe(){} unobserve(){} disconnect(){} };
|
global.ResizeObserver = class { observe(){} unobserve(){} disconnect(){} };
|
||||||
|
HTMLElement.prototype.scrollTo = () => {};
|
||||||
afterEach(cleanup);
|
afterEach(cleanup);
|
||||||
describe("App", () => {
|
describe("App", () => {
|
||||||
it("renders three principal surfaces", async () => {
|
it("renders three principal surfaces", async () => {
|
||||||
@@ -20,7 +21,8 @@ describe("App", () => {
|
|||||||
set onmessage(_: unknown) {}
|
set onmessage(_: unknown) {}
|
||||||
} as unknown as typeof EventSource;
|
} as unknown as typeof EventSource;
|
||||||
render(<App />);
|
render(<App />);
|
||||||
expect(screen.getByText("Skills Catalog")).toBeInTheDocument();
|
expect(screen.getByText("Beryl Agent")).toBeInTheDocument();
|
||||||
|
expect(screen.getByText("技能目录")).toBeInTheDocument();
|
||||||
expect(screen.getByText("AGENT LOOP")).toBeInTheDocument();
|
expect(screen.getByText("AGENT LOOP")).toBeInTheDocument();
|
||||||
expect(screen.getByText("运行阶段")).toBeInTheDocument();
|
expect(screen.getByText("运行阶段")).toBeInTheDocument();
|
||||||
expect(screen.getByText("工具任务")).toBeInTheDocument();
|
expect(screen.getByText("工具任务")).toBeInTheDocument();
|
||||||
@@ -43,12 +45,14 @@ describe("App", () => {
|
|||||||
) as unknown as typeof fetch;
|
) as unknown as typeof fetch;
|
||||||
|
|
||||||
let reportListener: ((event: MessageEvent) => void) | undefined;
|
let reportListener: ((event: MessageEvent) => void) | undefined;
|
||||||
|
let completedListener: ((event: MessageEvent) => void) | undefined;
|
||||||
global.EventSource = class {
|
global.EventSource = class {
|
||||||
close() {}
|
close() {}
|
||||||
set onmessage(_: unknown) {}
|
set onmessage(_: unknown) {}
|
||||||
addEventListener(type: string, listener: EventListenerOrEventListenerObject) {
|
addEventListener(type: string, listener: EventListenerOrEventListenerObject) {
|
||||||
if (type === "tool.completed")
|
if (type === "tool.completed")
|
||||||
reportListener = listener as (event: MessageEvent) => void;
|
reportListener = listener as (event: MessageEvent) => void;
|
||||||
|
if (type === "run.completed") completedListener = listener as (event: MessageEvent) => void;
|
||||||
}
|
}
|
||||||
} as unknown as typeof EventSource;
|
} as unknown as typeof EventSource;
|
||||||
|
|
||||||
@@ -76,5 +80,22 @@ describe("App", () => {
|
|||||||
"src",
|
"src",
|
||||||
"/api/sessions/session-report/reports/daily?v=evt-report",
|
"/api/sessions/session-report/reports/daily?v=evt-report",
|
||||||
);
|
);
|
||||||
|
act(() => reportListener?.({ data: JSON.stringify({
|
||||||
|
eventId: "evt-ppt", runId: "run-ppt", sessionId: "session-report", sequence: 2,
|
||||||
|
timestamp: new Date().toISOString(), type: "tool.completed",
|
||||||
|
payload: { toolName: "generate_pptx", result: { details: { artifactId: "12345678-1234-1234-1234-123456789abc", title: "测试演示", deliveryAccepted: true } } },
|
||||||
|
}) } as MessageEvent));
|
||||||
|
expect(screen.queryByRole("link", { name: "测试演示 · 下载 PPTX" })).not.toBeInTheDocument();
|
||||||
|
act(() => completedListener?.({ data: JSON.stringify({ eventId: "evt-final", runId: "run-ppt", type: "run.completed", sequence: 3, timestamp: new Date().toISOString(),
|
||||||
|
payload: { delivery: { details: { artifactId: "12345678-1234-1234-1234-123456789abc", title: "测试演示", deliveryAccepted: true } } },
|
||||||
|
}) } as MessageEvent));
|
||||||
|
expect(await screen.findByRole("link", { name: "测试演示 · 下载 PPTX" })).toHaveAttribute("href", "/api/sessions/session-report/presentations/12345678-1234-1234-1234-123456789abc");
|
||||||
|
act(() => reportListener?.({ data: JSON.stringify({
|
||||||
|
eventId: "evt-document", runId: "run-document", sessionId: "session-report", sequence: 3,
|
||||||
|
timestamp: new Date().toISOString(), type: "tool.completed",
|
||||||
|
payload: { toolName: "save_report_draft" },
|
||||||
|
}) } as MessageEvent));
|
||||||
|
expect(await screen.findByRole("link", { name: "下载报告(Markdown)" })).toHaveAttribute("href", "/api/sessions/session-report/reports/document");
|
||||||
|
expect(screen.getByText("报告草稿已保存,等待交付验收")).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user