28 lines
1.9 KiB
TypeScript
28 lines
1.9 KiB
TypeScript
import { expect, gotoWorkbench, saveScreenshot, test } from "../fixtures/test";
|
|
import { selectors, sessionTab } from "../fixtures/selectors";
|
|
|
|
test("TraceTimeline renders readable rows and hides backend noise", async ({ page }, testInfo) => {
|
|
await gotoWorkbench(page, "/workbench/sessions/cnv_completed");
|
|
await expect(page.locator(sessionTab("cnv_completed"))).toHaveAttribute("data-active", "true");
|
|
const trace = page.locator(`${selectors.traceTimeline}[data-status="completed"]`);
|
|
await expect(trace).toBeVisible();
|
|
await trace.locator("summary.trace-disclosure-summary").click();
|
|
await expect(page.locator(`${selectors.traceRow}[data-row-kind="tool"]`)).toContainText("commandExecution");
|
|
await expect(page.locator(`${selectors.traceRow}[data-terminal="true"]`)).toContainText("构建和 Trace 渲染检查完成");
|
|
await expect(page.locator(selectors.conversationList)).not.toContainText("token_count");
|
|
await page.locator(".message-detail-button").first().click();
|
|
await expect(page.locator(selectors.messageDetailDialog)).toContainText("trc_completed");
|
|
await expect(page.locator(selectors.messageDetailDialog)).toContainText("ses_completed");
|
|
await saveScreenshot(page, testInfo, "trace-rendering-detail");
|
|
});
|
|
|
|
test("failed trace exposes readable failure row", async ({ page }, testInfo) => {
|
|
await gotoWorkbench(page, "/workbench/sessions/cnv_failed");
|
|
const trace = page.locator(`${selectors.traceTimeline}[data-status="failed"]`);
|
|
await expect(trace).toBeVisible();
|
|
await trace.locator("summary.trace-disclosure-summary").click();
|
|
await expect(page.locator(`${selectors.traceRow}[data-event-status="blocked"][data-row-kind="tool"]`)).toContainText("missing controlled dependency");
|
|
await expect(page.locator(`${selectors.messageCard}[data-status="failed"]`)).toContainText("缺少受控依赖");
|
|
await saveScreenshot(page, testInfo, "trace-rendering-failed");
|
|
});
|