perf(test): speed up Tasks page state observations (#127121)

This commit is contained in:
Peter Steinberger
2026-08-21 01:58:21 -07:00
committed by GitHub
parent d17bbfc31a
commit be2f7c6a3d
+11 -10
View File
@@ -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<HTMLAnchorElement>(".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.");