fix: seal terminal workbench timing (#2118)

This commit is contained in:
Lyon
2026-06-25 13:12:42 +08:00
committed by GitHub
parent 77979025e7
commit d608c272ea
6 changed files with 239 additions and 15 deletions
@@ -38,8 +38,30 @@ test("Code Agent message headers render canonical timing metadata", async ({ pag
const canceled = page.locator(`${selectors.messageCard}[data-role="agent"][data-status="canceled"]`).first();
await expect(canceled.locator(selectors.messageDurationMeta)).toContainText("耗时 0 秒");
await expect(canceled.locator(selectors.messageActivityMeta)).toHaveCount(0);
await page.clock.fastForward(60000);
await expect(canceled.locator(selectors.messageDurationMeta)).toContainText("耗时 0 秒");
await expect(page.locator(`${selectors.messageCard}[data-role="user"] ${selectors.messageDurationMeta}`)).toHaveCount(0);
await expect(page.locator(`${selectors.messageCard}[data-role="user"] ${selectors.messageActivityMeta}`)).toHaveCount(0);
await saveScreenshot(page, testInfo, "message-timing-headers");
});
test.describe("terminal timing seal", () => {
test.use({ scenarioId: "terminal-canceled-late-timing" });
test("canceled message duration stays sealed after late timing snapshots", async ({ page }, testInfo) => {
const baseTime = new Date("2026-06-17T09:39:04.000Z");
await page.clock.install({ time: baseTime });
await page.clock.pauseAt(baseTime);
await gotoWorkbench(page, "/workbench/sessions/ses_running");
const canceled = page.locator(`${selectors.messageCard}[data-role="agent"][data-status="canceled"]`).first();
await expect(canceled.locator(selectors.messageDurationMeta)).toContainText("耗时 12 秒");
await expect(canceled.locator(selectors.messageActivityMeta)).toHaveCount(0);
await page.waitForTimeout(1200);
await expect(canceled.locator(selectors.messageDurationMeta)).toContainText("耗时 12 秒");
await expect(canceled.locator(selectors.messageDurationMeta)).not.toContainText("14 秒");
await saveScreenshot(page, testInfo, "message-timing-canceled-sealed");
});
});