fix: seal workbench final response from terminal trace
This commit is contained in:
@@ -43,6 +43,41 @@ test.describe("terminal completed without final response", () => {
|
||||
});
|
||||
});
|
||||
|
||||
test.describe("terminal assistant event final response", () => {
|
||||
test.use({ scenarioId: "terminal-assistant-event-final-response" });
|
||||
|
||||
test("renders the sealed Workbench final response from the authoritative terminal assistant event", async ({ page }, testInfo) => {
|
||||
const sessionId = "ses_terminal_assistant_final";
|
||||
const traceId = "trc_terminal_assistant_final";
|
||||
const messagesResponse = await page.request.get(`/v1/workbench/sessions/${sessionId}/messages?limit=100`);
|
||||
expect(messagesResponse.status()).toBe(200);
|
||||
const messagesPayload = await messagesResponse.json();
|
||||
const agentMessage = messagesPayload.messages.find((message: { role?: string }) => message.role === "agent");
|
||||
expect(agentMessage?.text).toContain("全部六份数据到手");
|
||||
expect(agentMessage?.finalResponse?.text).toBe(agentMessage?.text);
|
||||
|
||||
const turnResponse = await page.request.get(`/v1/workbench/turns/${traceId}`);
|
||||
expect(turnResponse.status()).toBe(200);
|
||||
const turnPayload = await turnResponse.json();
|
||||
expect(turnPayload.turn.finalResponse.text).toBe(agentMessage?.text);
|
||||
|
||||
const traceResponse = await page.request.get(`/v1/workbench/traces/${traceId}/events?limit=20`);
|
||||
expect(traceResponse.status()).toBe(200);
|
||||
const tracePayload = await traceResponse.json();
|
||||
const finalEvent = tracePayload.events.find((event: { label?: string; final?: boolean }) => event.label === "agentrun:assistant:message" && event.final === true);
|
||||
expect(finalEvent?.replyAuthority).toBe(true);
|
||||
expect(finalEvent?.message).toBe(agentMessage?.text);
|
||||
|
||||
await gotoWorkbench(page, `/workbench/sessions/${sessionId}`);
|
||||
const card = page.locator(`${selectors.messageCard}[data-role="agent"][data-status="completed"]`).last();
|
||||
await expect(card.locator(".message-markdown.message-text")).toContainText("全部六份数据到手");
|
||||
await expect(card.locator(".message-markdown.message-text table")).toHaveCount(1);
|
||||
await card.locator("summary.trace-disclosure-summary").click();
|
||||
await expect(card.locator(".trace-row-markdown table")).toHaveCount(1);
|
||||
await saveScreenshot(page, testInfo, "terminal-assistant-event-final-response");
|
||||
});
|
||||
});
|
||||
|
||||
test.describe("non-terminal tool completed event", () => {
|
||||
test.use({ scenarioId: "tool-completed-projection-running" });
|
||||
|
||||
|
||||
Reference in New Issue
Block a user