Files
pikasTech-HWLAB/web/hwlab-cloud-web/tests/workbench-e2e/specs/trace-rendering.spec.ts
T

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");
});