From be2f7c6a3df29a423e9623dbde1d44ca3e90a078 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 21 Aug 2026 01:58:21 -0700 Subject: [PATCH] perf(test): speed up Tasks page state observations (#127121) --- ui/src/pages/tasks/tasks-page.test.ts | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/ui/src/pages/tasks/tasks-page.test.ts b/ui/src/pages/tasks/tasks-page.test.ts index 13e39aa85a14..3054dd085365 100644 --- a/ui/src/pages/tasks/tasks-page.test.ts +++ b/ui/src/pages/tasks/tasks-page.test.ts @@ -3,6 +3,7 @@ import type { GatewayBrowserClient, GatewayEventFrame } from "../../api/gateway. import { sessionRefFromPath } from "../../app-session-route-paths.ts"; import type { ApplicationContext, ApplicationGatewaySnapshot } from "../../app/context.ts"; import type { TaskStatus, TaskSummary } from "../../lib/tasks/task-summary.ts"; +import { waitForFast } from "../../test-helpers/wait-for.ts"; import "./tasks-page.ts"; type TasksPageTestElement = HTMLElement & { @@ -102,7 +103,7 @@ async function createDeferredTaskRefresh(initialTasks: TaskSummary[]) { const page = document.createElement("openclaw-tasks-page") as TasksPageTestElement; page.context = createContext(source.gateway); document.body.append(page); - await vi.waitFor(() => expect(page.tasks).toHaveLength(initialTasks.length)); + await waitForFast(() => expect(page.tasks).toHaveLength(initialTasks.length)); return { active, @@ -314,7 +315,7 @@ describe("TasksPage active pagination", () => { page.context = createContext(source.gateway); document.body.append(page); - await vi.waitFor(() => expect(page.error).toBe("OPENAI_API_KEY=sk-123...cdef")); + await waitForFast(() => expect(page.error).toBe("OPENAI_API_KEY=sk-123...cdef")); }); it("drains active pages with the selected scope and merges each task once", async () => { @@ -356,7 +357,7 @@ describe("TasksPage active pagination", () => { page.context = createContext(source.gateway, "writer"); document.body.append(page); - await vi.waitFor(() => expect(page.tasks).toHaveLength(4)); + await waitForFast(() => expect(page.tasks).toHaveLength(4)); expect(request).toHaveBeenCalledWith( "tasks.list", @@ -402,7 +403,7 @@ describe("TasksPage active pagination", () => { page.context = createContext(source.gateway); document.body.append(page); - await vi.waitFor(() => expect(page.error).toBe("The gateway returned an invalid task list.")); + await waitForFast(() => expect(page.error).toBe("The gateway returned an invalid task list.")); expect(activeCalls).toBe(2); expect(request).toHaveBeenCalledTimes(3); @@ -439,7 +440,7 @@ describe("TasksPage active pagination", () => { task: { ...stale, status: "completed", updatedAt: 200 }, }); finalPage.resolve({ tasks: [stale] }); - await vi.waitFor(() => expect(page.tasks[0]?.status).toBe("completed")); + await waitForFast(() => expect(page.tasks[0]?.status).toBe("completed")); expect(page.tasks).toHaveLength(1); }); @@ -476,7 +477,7 @@ describe("TasksPage cancellation lifecycle", () => { }); try { document.body.append(page); - await vi.waitFor(() => expect(page.tasks).toHaveLength(1)); + await waitForFast(() => expect(page.tasks).toHaveLength(1)); const copyButton = [...page.querySelectorAll("button")].find( (button) => button.textContent?.trim() === "Copy result", @@ -515,7 +516,7 @@ describe("TasksPage cancellation lifecycle", () => { page.context = createContext(source.gateway, "research"); document.body.append(page); - await vi.waitFor(() => + await waitForFast(() => expect(page.querySelector(".session-link")?.getAttribute("href")).toBe( "/chat/research/telegram/12345", ), @@ -613,7 +614,7 @@ describe("TasksPage cancellation lifecycle", () => { const page = document.createElement("openclaw-tasks-page") as TasksPageTestElement; page.context = createContext(source.gateway); document.body.append(page); - await vi.waitFor(() => expect(page.tasks).toHaveLength(1)); + await waitForFast(() => expect(page.tasks).toHaveLength(1)); await page.recoverTask(blocked.taskId, "retry"); @@ -642,7 +643,7 @@ describe("TasksPage cancellation lifecycle", () => { const page = document.createElement("openclaw-tasks-page") as TasksPageTestElement; page.context = createContext(source.gateway); document.body.append(page); - await vi.waitFor(() => expect(page.tasks).toHaveLength(1)); + await waitForFast(() => expect(page.tasks).toHaveLength(1)); const recovery = page.recoverTask(blocked.taskId, "retry"); await vi.waitFor(() => expect(page.cancellingTaskIds.has(blocked.taskId)).toBe(true)); @@ -677,7 +678,7 @@ describe("TasksPage cancellation lifecycle", () => { const page = document.createElement("openclaw-tasks-page") as TasksPageTestElement; page.context = createContext(source.gateway); document.body.append(page); - await vi.waitFor(() => expect(page.tasks).toHaveLength(1)); + await waitForFast(() => expect(page.tasks).toHaveLength(1)); const text = page.textContent ?? ""; expect(text).toContain("Completed; result delivery was dismissed.");