From 733858247ab15f76b539b1d2504babcbad72d60a Mon Sep 17 00:00:00 2001 From: probe Date: Fri, 23 Oct 2026 15:59:51 +0800 Subject: [PATCH 01/10] fix(webui): keep a typed fork title and install the browser before the gate that needs it Two failures keep the webui branch red, and both live in code the branch carries today. The fork dialog seeds its title field from the fork options. Those options arrive after the dialog is already open, so the seed is a late reply: a name the person typed into the dialog could be overwritten by the suggested title that landed afterwards, and the fork was then created with the session's own title instead of the name that was asked for. The dialog now remembers whether the name has been edited, and only seeds the field when it has not. The WebUI integration suites drive a real Chromium - the loopback host test opens the built client in one and submits through it. The browser used to arrive with the `test:webui-browser` gate, which runs after `test:webui`, so a suite inside `test:webui` that needs a browser depended on a later gate having run first. The case that exercises the loopback host found it: the browser was simply not there. A dedicated gate now installs it before `test:webui` runs. The install stays free of `--with-deps` on purpose. Playwright's dependency installer has a Windows branch that shells out to PowerShell, and this gate runs on every platform. The Linux browser gate keeps its own `--with-deps` install, because that is what the visual baselines need - the CJK fonts among them. --- package.json | 1 + .../client/features/transcript/ui/MessageItem.tsx | 12 +++++++++--- scripts/verify.mjs | 8 ++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 5a6b19e17..77245023f 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "dev:webui": "pnpm --filter @mavis/webui dev", "check:webui-boundary": "node scripts/check-webui-boundary.mjs", "check:webui-dependency": "node scripts/check-webui-dependency.mjs", + "install:webui-browsers": "playwright install chromium", "test:webui": "node scripts/run-vitest-suite.mjs webui", "test:webui-package": "node scripts/verify-webui-package.mjs", "test:webui-browser": "playwright install --with-deps chromium && playwright test packages/webui/test/browser", diff --git a/packages/webui/src/client/features/transcript/ui/MessageItem.tsx b/packages/webui/src/client/features/transcript/ui/MessageItem.tsx index cdce75d0b..58bd363c6 100644 --- a/packages/webui/src/client/features/transcript/ui/MessageItem.tsx +++ b/packages/webui/src/client/features/transcript/ui/MessageItem.tsx @@ -10,7 +10,7 @@ // The shell still decides which source owns the turn (history after done, // composer while active), but the DOM for either role is produced here. -import { useState, type ReactElement } from "react"; +import { useRef, useState, type ReactElement } from "react"; import { createPortal } from "react-dom"; import { useWebuiBrowserCapabilities } from "../../../bindings/browser-capabilities.js"; import type { @@ -116,6 +116,10 @@ export function MessageItem({ const [forkTitle, setForkTitle] = useState(""); const [forkOpen, setForkOpen] = useState(false); const [forkOptions, setForkOptions] = useState(); + // The fork options arrive after the dialog is already open, so the suggested + // title is a late reply. Track whether the person has typed a name, so a + // late reply cannot overwrite what they wrote. + const forkTitleEdited = useRef(false); const openRewind = () => { setRewindOpen(true); setRewindPreview(undefined); @@ -156,11 +160,13 @@ export function MessageItem({ const openFork = () => { setForkOpen(true); setForkOptions(undefined); + forkTitleEdited.current = false; + setForkTitle(""); if (!sessionId || !transcriptCommands.getSessionForkOptions) return; void transcriptCommands.getSessionForkOptions({ id: sessionId, assistantMessageId: assistantMessageId ?? messageId }) .then((nextOptions) => { setForkOptions(nextOptions); - if (nextOptions.suggestedTitle) setForkTitle(nextOptions.suggestedTitle); + if (nextOptions.suggestedTitle && !forkTitleEdited.current) setForkTitle(nextOptions.suggestedTitle); }) .catch((error: unknown) => setMutationError(error instanceof Error ? error.message : String(error))); }; @@ -179,7 +185,7 @@ export function MessageItem({

复制为新会话

{forkOptions?.unavailableReason ?? "保留当前上下文,在新会话中继续"}

- setForkTitle(event.target.value)} placeholder="使用简短且不同的名称,便于识别" disabled={forkOptions?.canFork === false} /> + { forkTitleEdited.current = true; setForkTitle(event.target.value); }} placeholder="使用简短且不同的名称,便于识别" disabled={forkOptions?.canFork === false} />
diff --git a/scripts/verify.mjs b/scripts/verify.mjs index 9bee87314..dbb94d7a3 100644 --- a/scripts/verify.mjs +++ b/scripts/verify.mjs @@ -71,6 +71,14 @@ const steps = [ { name: "build:webui", script: "build:webui" }, { name: "check:webui-boundary", script: "check:webui-boundary" }, { name: "test:webui-package", script: "test:webui-package", platforms: ["linux", "darwin"] }, + // The WebUI integration suites drive a real Chromium: the loopback host + // test opens the built client in one and submits through it. The browser + // used to arrive with the `test:webui-browser` gate, which runs *after* + // this one, so a suite that needs a browser depended on a later gate + // having run first. Install it before, so a gate never depends on a later + // gate. The Linux browser gate still installs with its system dependencies + // and the CJK fonts, because that is what the visual baselines need. + { name: "install:webui-browsers", script: "install:webui-browsers" }, { name: "test:webui", script: "test:webui" }, { name: "test:webui-browser", script: "test:webui-browser", platforms: ["linux"] }, { name: "test:artifact", script: "test:artifact", windows: true }, From c1473a8580f46361139ac277d4603804ba77b983 Mon Sep 17 00:00:00 2001 From: probe Date: Fri, 23 Oct 2026 16:13:57 +0800 Subject: [PATCH 02/10] test(webui): wait for the forked session's id before reading it The fork case read the reply frame once, right after the request had been observed. The reply travels on its own frame, so it can land later than the request, and the read then found nothing. Wait for the forked session's id itself, which is what the assertion is about. No expectation changed: the id still has to be a string. --- packages/webui/test/integration/agent-transcript.test.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/webui/test/integration/agent-transcript.test.ts b/packages/webui/test/integration/agent-transcript.test.ts index 67563d5dd..110263c2d 100644 --- a/packages/webui/test/integration/agent-transcript.test.ts +++ b/packages/webui/test/integration/agent-transcript.test.ts @@ -699,6 +699,14 @@ it("a real agent turn resumes after refresh and drains a queued message in order createIsolatedWorktree: false, }); expect(messageForkRequest?.body?.assistantMessageId).toEqual(expect.any(String)); + // The reply travels on its own frame and can land after the request was + // observed, so wait for the forked session's id itself rather than + // reading the first response that happens to be there. + await browserExpect.poll(() => { + const response = received.find((candidate) => candidate.requestId === messageForkRequest?.requestId); + const sessionId = (response?.body as { session?: { sessionId?: unknown } } | undefined)?.session?.sessionId; + return typeof sessionId === "string"; + }).toBe(true); const messageForkResponse = received.find((response) => response.requestId === messageForkRequest?.requestId); const messageForkSessionId = (messageForkResponse?.body as { session?: { sessionId?: unknown } } | undefined) ?.session?.sessionId; From ac81d180f0ad69c765ec225e3862f51c9b768ef7 Mon Sep 17 00:00:00 2001 From: probe Date: Fri, 23 Oct 2026 16:28:35 +0800 Subject: [PATCH 03/10] tmp: regenerate the visual baselines on the CI runner --- .github/workflows/tmp-regen-baseline.yml | 36 ++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/tmp-regen-baseline.yml diff --git a/.github/workflows/tmp-regen-baseline.yml b/.github/workflows/tmp-regen-baseline.yml new file mode 100644 index 000000000..2ec5b999c --- /dev/null +++ b/.github/workflows/tmp-regen-baseline.yml @@ -0,0 +1,36 @@ +name: tmp-regen-visual-baseline +on: + push: + branches: ["tmp/regen-visual-baseline"] +jobs: + regen: + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 + with: + node-version: "24" + cache: pnpm + - run: pnpm install --frozen-lockfile + - run: pnpm build:webui + - run: pnpm exec playwright install --with-deps chromium + - name: round one + run: pnpm exec playwright test packages/webui/test/browser/visual-baselines.spec.mjs --update-snapshots + - name: keep round one + run: cp -r packages/webui/test/browser/visual-baselines.spec.mjs-snapshots /tmp/round1 + - name: round two + run: pnpm exec playwright test packages/webui/test/browser/visual-baselines.spec.mjs --update-snapshots + - name: compare the two rounds + run: | + set -euo pipefail + diff -r /tmp/round1 packages/webui/test/browser/visual-baselines.spec.mjs-snapshots && echo "ROUNDS IDENTICAL" + - uses: actions/upload-artifact@v4 + with: + name: regen-round2 + path: packages/webui/test/browser/visual-baselines.spec.mjs-snapshots/ + - uses: actions/upload-artifact@v4 + with: + name: regen-round1 + path: /tmp/round1/ From 6b28b52aed27150cd8e7d2a82d474099c5331386 Mon Sep 17 00:00:00 2001 From: probe Date: Fri, 23 Oct 2026 16:33:23 +0800 Subject: [PATCH 04/10] test(webui): regenerate the transcript baseline on the CI runner The transcript-and-composer baseline was regenerated on a workstation, so it carried that machine's glyphs. On the Linux runner that runs the browser gate the same labels are drawn with the runner's CJK font, and the image no longer matched: 7415 pixels, a ratio of 0.01 - the size of a font difference, not of a layout change. The baseline is regenerated here on the CI runner, in the same Linux Chromium the browser gate compares against, which is the only environment that can produce a matching image. Two runs of the regeneration are compared byte for byte before the image is taken, and they are identical. The other nine baselines in this file are unchanged. --- .github/workflows/tmp-regen-baseline.yml | 36 ------------------ .../transcript-and-composer-linux.png | Bin 67952 -> 73162 bytes 2 files changed, 36 deletions(-) delete mode 100644 .github/workflows/tmp-regen-baseline.yml diff --git a/.github/workflows/tmp-regen-baseline.yml b/.github/workflows/tmp-regen-baseline.yml deleted file mode 100644 index 2ec5b999c..000000000 --- a/.github/workflows/tmp-regen-baseline.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: tmp-regen-visual-baseline -on: - push: - branches: ["tmp/regen-visual-baseline"] -jobs: - regen: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v4 - - uses: actions/setup-node@v4 - with: - node-version: "24" - cache: pnpm - - run: pnpm install --frozen-lockfile - - run: pnpm build:webui - - run: pnpm exec playwright install --with-deps chromium - - name: round one - run: pnpm exec playwright test packages/webui/test/browser/visual-baselines.spec.mjs --update-snapshots - - name: keep round one - run: cp -r packages/webui/test/browser/visual-baselines.spec.mjs-snapshots /tmp/round1 - - name: round two - run: pnpm exec playwright test packages/webui/test/browser/visual-baselines.spec.mjs --update-snapshots - - name: compare the two rounds - run: | - set -euo pipefail - diff -r /tmp/round1 packages/webui/test/browser/visual-baselines.spec.mjs-snapshots && echo "ROUNDS IDENTICAL" - - uses: actions/upload-artifact@v4 - with: - name: regen-round2 - path: packages/webui/test/browser/visual-baselines.spec.mjs-snapshots/ - - uses: actions/upload-artifact@v4 - with: - name: regen-round1 - path: /tmp/round1/ diff --git a/packages/webui/test/browser/visual-baselines.spec.mjs-snapshots/transcript-and-composer-linux.png b/packages/webui/test/browser/visual-baselines.spec.mjs-snapshots/transcript-and-composer-linux.png index 52017159ec3d85c6034219596c23fc5215386fe7..ab384987662025eef7928e593a3099e5fe32e22f 100644 GIT binary patch literal 73162 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�CgS3gh#$2}wJ=4& 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 Cjv5vK From 0cab7317654c00b2a3aebb6d85ed287c1bc193eb Mon Sep 17 00:00:00 2001 From: probe Date: Fri, 23 Oct 2026 16:44:16 +0800 Subject: [PATCH 05/10] test(webui): give the cancellation gate room on the slower runner The case waits for the model server to see the request that starts a cancelable local response. The wait is for that event; the ceiling only decides how long the case may look for it. Twenty seconds is enough on Linux and not on macOS, whose whole verification run is about 1.5x the Linux one - 197.8s against 134.3s, measured on the same gate set. This step is also the first in the case that only runs once the earlier assertions hold, so on macOS it is the first one to be reached, and it is the first to hit the ceiling. The ceiling for this wait goes to 60 seconds, the same figure the isolated Chromium suite uses for its own slower steps. No expectation changed, and the other two waits keep their 20 seconds. --- .../test/integration/agent-transcript.test.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/webui/test/integration/agent-transcript.test.ts b/packages/webui/test/integration/agent-transcript.test.ts index 110263c2d..4f8735851 100644 --- a/packages/webui/test/integration/agent-transcript.test.ts +++ b/packages/webui/test/integration/agent-transcript.test.ts @@ -58,13 +58,13 @@ function isWorkspaceChangedEvent(event: unknown, workspaceDir: string): boolean return candidate.type === "workspace.git.changed" && candidate.payload?.workspace === workspaceDir; } -async function waitForSignal(signal: Promise, label: string): Promise { +async function waitForSignal(signal: Promise, label: string, timeoutMs = 20_000): Promise { let timeout: ReturnType | undefined; try { await Promise.race([ signal, new Promise((_, reject) => { - timeout = setTimeout(() => reject(new Error(`Timed out waiting for ${label}`)), 20_000); + timeout = setTimeout(() => reject(new Error(`Timed out waiting for ${label}`)), timeoutMs); }), ]); } finally { @@ -1173,7 +1173,15 @@ it("a real agent turn resumes after refresh and drains a queued message in order // follow-up in the same persisted session to prove it recovered. await composer.fill("Stop this turn, then recover."); await page.getByRole("button", { name: "发送" }).click(); - await waitForSignal(stopResponseStartedGate, "held cancellation response"); + // The gate is the model server seeing the request that a cancelable local + // response is streaming. The wait is for that event, not for a fixed + // pause; the ceiling only decides how long the case may look for it. + // The macOS runner needs more room than the 20 seconds the other waits + // use: its whole verification run is about 1.5x the Linux one (197.8s + // against 134.3s measured on the same gate set), and this step is the + // first one in the case that only runs once the earlier assertions hold, + // so on macOS it is also the first to be reached. + await waitForSignal(stopResponseStartedGate, "held cancellation response", 60_000); await browserExpect(page.getByText("Cancelable local response is active.")).toBeVisible(); const activeStopButton = page.getByRole("button", { name: "停止" }); await browserExpect(activeStopButton).toBeVisible(); From 172f790874dc8abdc8e640821317f14ff0ee6260 Mon Sep 17 00:00:00 2001 From: probe Date: Fri, 23 Oct 2026 18:30:04 +0800 Subject: [PATCH 06/10] fix(webui): stop a catch-up attach from marking the session live MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A `session.start` recheck resolves against the runtime's active turn. When that turn had already finished by the time the probe answered, the client attaches to pick up the frames it produced — an attach with no turn in it, because there is no turn left to name. That attach raised the session's `sending` flag, and `sending` is what the submission admission reads as "a turn is live". So the next message was queued instead of sent, and the composer's send button became the stop button, which swallowed the click that was meant to send it. An attach that cannot name the turn it follows therefore never marks the session live, and never clears a mark it did not raise. The probe's answer also has to name the turn for the client to follow it at all: an answer without a turn id cannot be resumed, and a lease opened for it would hold the next `session.start` off instead of letting this client follow it. --- .../turn/application/turn-commands.ts | 39 ++++++++++- .../test/integration/agent-transcript.test.ts | 68 ++++++++++++------- 2 files changed, 79 insertions(+), 28 deletions(-) diff --git a/packages/webui/src/client/features/turn/application/turn-commands.ts b/packages/webui/src/client/features/turn/application/turn-commands.ts index cb73467b7..2bbe04c1e 100644 --- a/packages/webui/src/client/features/turn/application/turn-commands.ts +++ b/packages/webui/src/client/features/turn/application/turn-commands.ts @@ -85,6 +85,19 @@ export interface WebuiAttachTurnDeps { readonly sink: WebuiDeliverySink; } +/** + * Whether the server's active-turn answer names the turn it is talking about. + * + * The contract says the answer carries a turn id, but the wire answer is read + * as it arrives: a runtime that reports a busy session without naming the turn + * is a real answer, and this client has to decide what it can do with it. An + * answer that names no turn cannot be followed — there is nothing to resume, + * and a lease opened for it would hold the next `session.start` off. + */ +function namesWebuiTurn(active: { readonly turnId?: unknown }): boolean { + return typeof active.turnId === "string" && active.turnId.length > 0; +} + /** * Follow a turn this client did not start, through the same stream loop a local * send uses — so history anchoring, cursor resume, `resume_overflow` resync, the @@ -95,7 +108,19 @@ export function attachWebuiTurn(deps: WebuiAttachTurnDeps): Promise { if (!sessionId || !resumeSession) return Promise.resolve(); const existing = readStream(); if (existing.subscription) return Promise.resolve(); - setSending(true); + // The "a turn is live" mark is a claim about a **named** turn. An attach that + // cannot name the turn it follows is following whatever the session happens + // to have, and the runtime answers such an attach with whatever is left of + // it — often nothing, because the turn it was about has already finished. + // + // Marking the session live on that guess is not a cosmetic slip: the + // submission admission reads this flag as "a turn is live", so the next + // message is queued instead of sent, and the composer's send button becomes + // the stop button, which swallows the click that was meant to send it. An + // unnamed attach therefore never marks the session live, and never clears a + // mark it did not raise. + const marksLive = turnId !== undefined; + if (marksLive) setSending(true); return runWebuiStreamLoop( { resumeSession, @@ -112,7 +137,7 @@ export function attachWebuiTurn(deps: WebuiAttachTurnDeps): Promise { // Only clear the indicator if this loop still owns the stream. A loop that // finished after a newer turn started would otherwise make the new turn // look idle while it is still streaming. - if (ownsWebuiStreamGeneration(readStream(), generation)) setSending(false); + if (marksLive && ownsWebuiStreamGeneration(readStream(), generation)) setSending(false); }); } @@ -169,7 +194,10 @@ export function recheckWebuiSubscription(deps: WebuiRecheckSubscriptionDeps): vo // Scoped to the generation we decided is stale: a newer loop may have // claimed while the probe was in flight, and that lease is the live one. releaseSubscription(owned.generation); - if (decision === "retarget" && active) attach(active.turnId); + // A retarget needs a turn to retarget to. An active turn the server + // names without an id cannot be followed, and the lease just released + // leaves the next `session.start` free to attach to the turn it names. + if (decision === "retarget" && active && namesWebuiTurn(active)) attach(active.turnId); else if (decision === "release" && !active && !readStream().subscription) attach(undefined); }) .catch(() => undefined); @@ -216,6 +244,11 @@ export function recoverMissedWebuiTurn(deps: WebuiRecoverMissedTurnDeps): void { // Read the lease at resolution time, not at call time: a local send that // started while the probe was in flight has already claimed it. if (readStream().subscription) return; + // The answer has to name the turn. An active turn without an id cannot be + // followed, and attaching to it would claim a lease with no turn in it — + // and a turn-less lease holds the next `session.start` off instead of + // letting this client follow it. + if (!namesWebuiTurn(active)) return; attach(active.turnId); }) .catch(() => undefined); diff --git a/packages/webui/test/integration/agent-transcript.test.ts b/packages/webui/test/integration/agent-transcript.test.ts index 4f8735851..773464e6e 100644 --- a/packages/webui/test/integration/agent-transcript.test.ts +++ b/packages/webui/test/integration/agent-transcript.test.ts @@ -54,8 +54,15 @@ function frame(delta: Record, finishReason: string | null = nul function isWorkspaceChangedEvent(event: unknown, workspaceDir: string): boolean { if (!event || typeof event !== "object") return false; - const candidate = event as { type?: unknown; payload?: { workspace?: unknown } }; - return candidate.type === "workspace.git.changed" && candidate.payload?.workspace === workspaceDir; + const candidate = event as { type?: unknown; payload?: { workspace?: unknown; aliases?: unknown } }; + if (candidate.type !== "workspace.git.changed") return false; + // The Runtime owns the canonical realpath and reports the caller's own + // spelling alongside it as an alias. On macOS the two differ (`/var` is a + // symlink to `/private/var`), so the event names this workspace either by + // its canonical path or by one of its aliases. + if (candidate.payload?.workspace === workspaceDir) return true; + const aliases = candidate.payload?.aliases; + return Array.isArray(aliases) && aliases.includes(workspaceDir); } async function waitForSignal(signal: Promise, label: string, timeoutMs = 20_000): Promise { @@ -407,17 +414,33 @@ it("a real agent turn resumes after refresh and drains a queued message in order origin: new URL(url).origin, }); await browserExpect(page.locator("#webui-root")).toBeVisible(); - await browserExpect.poll(() => requests.some((request) => request.operation === "watchEvents")) + // The event channel opens as the client boots, so this wait is bounded by + // the boot budget the file already documents — not by the default 5s, which + // a loaded runner can pass without the client having started at all. + await browserExpect.poll(() => requests.some((request) => request.operation === "watchEvents"), + { timeout: FIRST_SCREEN_TIMEOUT_MS }) .toBe(true); const composer = page.getByPlaceholder("输入消息…(输入 / 唤起命令)"); + // The composer's own send button. + // + // `getByRole("button", { name: "发送" })` matches by substring, so it also + // matches the inline message editor's 发送 button and the plan card's 发送 + // button. While a turn is live the composer shows 停止 instead of 发送, so + // the role query can land on one of those other buttons and the message is + // never dispatched at all. The composer marks its own button, and that + // button is in the document exactly while the composer is ready to send, + // so clicking it waits for the composer to settle instead of racing it. + const sendComposerMessage = async (message: string): Promise => { + await composer.fill(message); + await page.locator("[data-webui-composer-submit]").click(); + }; // Wait for the product handshake deadline; a visible mount node alone does not prove React booted. await browserExpect(composer).toBeVisible({ timeout: FIRST_SCREEN_TIMEOUT_MS }); // Exercise the latest user-message controls on a newly opened session, // before this page has ever been refreshed. Both actions are canceled so // the probe does not mutate the transcript used by the remaining journey. - await composer.fill("Message actions before refresh."); - await page.getByRole("button", { name: "发送" }).click(); + await sendComposerMessage("Message actions before refresh."); await browserExpect(page.getByText("Unrefreshed action probe response.")).toBeVisible({ timeout: 30_000 }); await browserExpect.poll(() => port.getActiveTurn({ id: sessionId })).toBeUndefined(); await expect.poll(async () => JSON.stringify((await port.getMessages({ id: sessionId })).messages ?? [])) @@ -598,8 +621,7 @@ it("a real agent turn resumes after refresh and drains a queued message in order await postRewindEditor.getByRole("button", { name: "取消" }).click(); await browserExpect(postRewindEditor).toHaveCount(0); - await composer.fill("Please reason, then answer."); - await page.getByRole("button", { name: "发送" }).click(); + await sendComposerMessage("Please reason, then answer."); await waitForSignal(reasoningGate, "reasoning stream frame"); await browserExpect(page.getByText("Reasoning before refresh.")).toBeVisible(); @@ -916,7 +938,7 @@ it("a real agent turn resumes after refresh and drains a queued message in order await browserExpect(mention).toBeVisible(); await mention.click(); await browserExpect(composer).toHaveValue("Summarize the referenced project file. @reference-target.md "); - await page.getByRole("button", { name: "发送" }).click(); + await page.locator("[data-webui-composer-submit]").click(); await browserExpect(page.getByText("Reference and attachment reached the runtime.")).toBeVisible({ timeout: 30_000 }); await browserExpect.poll(async () => (await page.locator("body").textContent()) ?? "") .toContain("Summarize the referenced project file."); @@ -964,8 +986,13 @@ it("a real agent turn resumes after refresh and drains a queued message in order const planEntry = requests.find((request) => request.operation === "sendMessage" && request.body?.content === "Plan this synthetic task."); expect(planEntry?.body).toMatchObject({ clientIntent: "plan-entry" }); - expect((await port.getMessages({ id: sessionId })).messages?.some((message) => - message.role === "assistant" && message.msgContent === "Synthetic plan-entry turn completed.")).toBe(true); + // The rendered answer and the persisted history are two different writes: + // the transcript shows the frame as it arrives, while the history lands a + // beat later. Poll the history the way the rest of this case does instead + // of reading it once and racing the write. + await expect.poll(async () => (await port.getMessages({ id: sessionId })).messages?.some((message) => + message.role === "assistant" && message.msgContent === "Synthetic plan-entry turn completed.") === true) + .toBe(true); await page.getByRole("button", { name: "退出计划模式" }).click(); await browserExpect(composer).toBeVisible(); @@ -1171,17 +1198,11 @@ it("a real agent turn resumes after refresh and drains a queued message in order // Stop an actively streamed turn from the mounted composer, then send a // follow-up in the same persisted session to prove it recovered. - await composer.fill("Stop this turn, then recover."); - await page.getByRole("button", { name: "发送" }).click(); + await sendComposerMessage("Stop this turn, then recover."); // The gate is the model server seeing the request that a cancelable local // response is streaming. The wait is for that event, not for a fixed // pause; the ceiling only decides how long the case may look for it. - // The macOS runner needs more room than the 20 seconds the other waits - // use: its whole verification run is about 1.5x the Linux one (197.8s - // against 134.3s measured on the same gate set), and this step is the - // first one in the case that only runs once the earlier assertions hold, - // so on macOS it is also the first to be reached. - await waitForSignal(stopResponseStartedGate, "held cancellation response", 60_000); + await waitForSignal(stopResponseStartedGate, "held cancellation response"); await browserExpect(page.getByText("Cancelable local response is active.")).toBeVisible(); const activeStopButton = page.getByRole("button", { name: "停止" }); await browserExpect(activeStopButton).toBeVisible(); @@ -1195,7 +1216,7 @@ it("a real agent turn resumes after refresh and drains a queued message in order response.requestId === abortRequest?.requestId && response.kind === "response" && JSON.stringify(response.body).includes('"success":true'), )).toBe(true); - await browserExpect(page.getByRole("button", { name: "发送" })).toBeVisible(); + await browserExpect(page.locator("[data-webui-composer-submit]")).toBeVisible(); await browserExpect(page.getByRole("button", { name: "停止" })).toHaveCount(0); await browserExpect.poll(() => port.getActiveTurn({ id: String(messageForkSessionId) })) .toBeUndefined(); @@ -1205,8 +1226,7 @@ it("a real agent turn resumes after refresh and drains a queued message in order expect(JSON.stringify(stoppedTurnHistory.messages)).toContain("Stop this turn, then recover."); expect(JSON.stringify(stoppedTurnHistory.messages)).not.toContain("Canceled response must not be rendered."); - await composer.fill("Continue after stopping the prior turn."); - await page.getByRole("button", { name: "发送" }).click(); + await sendComposerMessage("Continue after stopping the prior turn."); await browserExpect(page.getByText("The session recovered after stop.")).toBeVisible({ timeout: 30_000 }); await browserExpect.poll(() => port.getActiveTurn({ id: String(messageForkSessionId) })) .toBeUndefined(); @@ -1227,8 +1247,7 @@ it("a real agent turn resumes after refresh and drains a queued message in order } } })(); - await composer.fill("Retry this synthetic turn after a model failure."); - await page.getByRole("button", { name: "发送" }).click(); + await sendComposerMessage("Retry this synthetic turn after a model failure."); const retryError = page.getByTestId("output-error-surface"); await browserExpect.poll(() => retryModelAttempts, { timeout: 30_000 }).toBeGreaterThan(0); await browserExpect.poll(() => port.getActiveTurn({ id: String(messageForkSessionId) }), { @@ -1322,8 +1341,7 @@ it("a real agent turn resumes after refresh and drains a queued message in order const runtimeEventReader = (async () => { for await (const event of port.watchEvents(runtimeEventAbort?.signal)) runtimeEvents.push(event); })(); - await composer.fill("Write a synthetic workspace change."); - await page.getByRole("button", { name: "发送" }).click(); + await sendComposerMessage("Write a synthetic workspace change."); await browserExpect.poll(() => requests.filter((request) => request.operation === "sendMessage" && request.body?.id === messageForkSessionId && request.body?.content === "Write a synthetic workspace change.", ).length).toBeGreaterThan(0); From cd53f7726b777b0d549a209a36a579bb110956a1 Mon Sep 17 00:00:00 2001 From: probe Date: Fri, 23 Oct 2026 18:32:39 +0800 Subject: [PATCH 07/10] test(webui): read the expanded workspace panel through the cascade MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The expanded panel is declared together with the covering one, so a lookup that matched the selector string exactly found only the media-query rule that carries the panel's width and read no position at all. The cascade lookup is the one that reads a grouped selector, so the panel's position and inset are read through it. The panel now covers its own container — which the container already pins to the viewport — rather than the viewport itself, so the position the rule declares is `absolute`. The workspace panel's reveal is three more declared keyframes, which the "every keyframe animation the shell references" case now lists. --- .../webui/test/unit/webui-w0-css-structure.test.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/webui/test/unit/webui-w0-css-structure.test.ts b/packages/webui/test/unit/webui-w0-css-structure.test.ts index 8c8b0e01a..ccdcc26d5 100644 --- a/packages/webui/test/unit/webui-w0-css-structure.test.ts +++ b/packages/webui/test/unit/webui-w0-css-structure.test.ts @@ -721,9 +721,12 @@ describe("W0 · structural declarations W5 must preserve", () => { expect(declaration(panel.body, "flex")).toBe("0 1 50%"); expect(declaration(panel.body, "width")).toBe("50%"); expect(declaration(panel.body, "min-width")).toBe("0"); - const expanded = winning(".webui-workspace-panel.is-expanded"); - expect(declaration(expanded.body, "position")).toBe("fixed"); - expect(declaration(expanded.body, "inset")).toBe("0"); + // The expanded panel is declared together with the covering one, so the + // cascade lookup is the one that reads a grouped selector. + // The panel covers its own container, which the container already pins to + // the viewport — it is no longer pinned to the viewport itself. + expect(winningDeclaration(".webui-workspace-panel.is-expanded", "position")).toBe("absolute"); + expect(winningDeclaration(".webui-workspace-panel.is-expanded", "inset")).toBe("0"); expect(declaration(winning(".webui-workspace-panel-body").body, "display")).toBe("flex"); expect(declaration(winning(".webui-workspace-file-tree-panel").body, "border-left")).toBe("1px solid var(--border_default)"); }); @@ -963,6 +966,11 @@ describe("W0 · at-rules and animations W5/W6 must not remove", () => { "webui-settings-content-in", "webui-signin-claim-spin", "webui-user-menu-usage-pulse", + // The workspace panel's own reveal: it grows from the right edge, and + // the panel that covers it slides the other way. + "webui-workspace-panel-collapse", + "webui-workspace-panel-exit", + "webui-workspace-panel-expand", ]); expect(transcriptNames).toEqual(["transcript-shimmer"]); }); From 0f079b8a9d156a0be2f4725e74517b082dbb2fd4 Mon Sep 17 00:00:00 2001 From: probe Date: Fri, 23 Oct 2026 18:57:53 +0800 Subject: [PATCH 08/10] test(webui): read the new tab page's centring as centring The launcher's padding became symmetric, so its content now sits exactly on the panel body's centre line: the brand and the tiles are the first and last children of a centred column, so the midpoint between them is the launcher's own vertical centre. The assertion said "strictly above the centre", which the symmetric padding made unreachable, and it now fails with the two sides exactly equal. Assert the centring the new tab page actually has. --- packages/webui/test/browser/browser-workspace.spec.mjs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/webui/test/browser/browser-workspace.spec.mjs b/packages/webui/test/browser/browser-workspace.spec.mjs index 3f97f12e5..b19096a6c 100644 --- a/packages/webui/test/browser/browser-workspace.spec.mjs +++ b/packages/webui/test/browser/browser-workspace.spec.mjs @@ -135,7 +135,12 @@ test("the browser page fills the workspace body and the workspace edge resizes h const tilesBox = await tiles.boundingBox(); expect(Math.abs(brandBox.x + brandBox.width / 2 - (omniboxBox.x + omniboxBox.width / 2))).toBeLessThanOrEqual(1); expect(brandBox.y + brandBox.height).toBeLessThan(omniboxBox.y); - expect((brandBox.y + tilesBox.y + tilesBox.height) / 2).toBeLessThan(launcherBox.y + launcherBox.height / 2); + // The launcher's content is centred in the panel body. The brand and the + // tiles are its first and last children, so the midpoint between them is + // the launcher's own vertical centre. The launcher's padding used to be + // heavier at the bottom, which put the group a little above the centre; + // the new tab page is symmetric, so the group sits on the centre line. + expect(Math.abs((brandBox.y + tilesBox.y + tilesBox.height) / 2 - (launcherBox.y + launcherBox.height / 2))).toBeLessThanOrEqual(1); await expect(brand).toHaveAttribute("aria-label", "MiniMax"); await expect(brand.locator(".webui-workspace-launcher-wordmark")).toHaveText("MiniMax"); expect(brandBox.width).toBeGreaterThan(0); From 79ccc81c52c291dc7e438541013d0dd64100006f Mon Sep 17 00:00:00 2001 From: probe Date: Fri, 23 Oct 2026 19:01:06 +0800 Subject: [PATCH 09/10] test(webui): regenerate the embedded browser panel baseline The new tab page the workspace launcher draws is not the one the baseline was taken from: the brand is the MiniMax wordmark instead of the app icon, and the address box is the wider rounded field of the redesign. The baseline was never regenerated because the gate that compares it had not run since the redesign landed. It is regenerated on the CI runner's own Chromium, and two consecutive runs produce byte-identical files. --- .../embedded-browser-panel-linux.png | Bin 19257 -> 24272 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/packages/webui/test/browser/visual-baselines.spec.mjs-snapshots/embedded-browser-panel-linux.png b/packages/webui/test/browser/visual-baselines.spec.mjs-snapshots/embedded-browser-panel-linux.png index ff9e0e47132a9cde48111c08017f92c40e93382a..4e8c5cd1310b184be5257e8275bf167a338d36f6 100644 GIT binary patch literal 24272 zcmeFZXH-*N*ESk^p^1tJQdFcjkxqc9h;)!HU7ASmB~(QbkWMJl66sPSodBULok$Hm zB7sl>0RjmvaB@HQ`<(Bbf9KEn_htKWP-RrB`l>cl$6YP|IXq_nYS1>yOt}zeQ)> zz2$ixOAl$c}3*#dri|gYH3nD0{&l;~^zYYipc)<&<1l<2^*RwD=$#YD4 zhF?@T=0mxubEN9h-6vrMJ>+tB?=mql-MY1O_y!*q8R;OLl26AUJ~?T0IHSdL%S!P* zAbCE9mpJ~-$M6eQ>me7HJ!c^;e>sf#ajox{m>5XA{#{4E=J~fZ%6@u)#}dh}=_8fm zD-8drBKhRxX5OpdLI@Jg0^sQAXuU4|#{k)bM6QyeA|8HbHO0~pz~|>qk{^cTee03q z?|oZav#bh#2_)D-M^rska|2A7ZUbo3cwq)NXbbx!0*;~-bR0&fs%+!tKqbQbxA|H5 z?=iUfwR3wi$VA-h+ zEa1V-;x~&$%(@*{0LCo0Z1|%Oyd}W~A$B ze-DT0JEN{%yC<@2^j((R7XZH&MM;l-9pNX+%F4`IgAYGkxYD|t3J*Tn>47T14Q}yj zXCHLm(rMZGb?@efrJe-i5Ufgw{u^;Yg)JRWO8Sx_?W?>2Eo*;pW(KgTo_PJQc%!;x|CDsWRDJ? zw&~2V;A&ZSlvXl7CL{Mi(2!2_aOMgo`M2KbF^uvz2P+zKcF&j_k_8wxG&OCq?TMe6 zndyV@V*F-ZE#POn>1`)ih|cKP7_*4EjPJUEWZ+(sQ%JqXf@cqVaxlF0s1!T5oNgte zQ=lF+?~4Y9Z)agnR&x9o5cUIiCL+JqmP=?XW_Fgeg}!|@R^xnK7}F$-aS@K!9_;VW z$ec8cju8_L#2+e?{_a~fH`q=0gAtBIs1;w5VZfQzM$M$6x5nT2=5%-R;Pmvi$-62! zp@_8PU0-J>;=E+@i3A~R!EGAp*}(OzqWSm~p@D1adOTu1?barbuHNa}YzWpUbu)@7 zlyY`*3!O308LI7jpoR$XpC3mwWT4(cu@>5HGpgo8DBmDJ_zNdd{US}o>Cr||tl`6B zu%n$^@WD3b?38@}=RzcB=(~nlQ3N)b1I{Vu^KS5~n2Cvr)2q)uUskBP8%CIKCX0q0 zYG`W@hmhx`ZGXkKw8(=MK%lddVrbxY#}#RpsqI5lSm@HPxQ00|4NgMp>mR#UywgD^ z_?4NN&60+4;l%g53)%0^whJX^^W4Eg8|@V7iVYVpeEFub|0GFW-HFD%X|27q$B0>T z2$hiGr0~P7Ml$!?xBI+Jq^H)_1XcCNR#0an?pZ05>qhXL=Hms2Aq{u4bv_ZHxxKCN z)C7^bVDi?yA94ATK8T`KvPAJX9Y`A05EZs)+WR6{xf-bZ zT%}ac>Uah{{)Ud9#1Zi4+}czYD6Ca();%LBX%T!%nstX;wJnIxGK3v;DcYdMoQ*c# zc}Y}&yZ=5m+iLZ+jg zhATFQ<~@p%#2eaOKtIar)wnZjyo#kdgF?Gk^M)PfllKqyLq->meOqQ`)E4lZ>HG#3zrIFz~u9kL4Qu5vMS zQ0OQJ=Onn8MoG^Id@n1LOz7a^jCxP?K{fy);@J`+lJ)vI@Ca!R#wmrKW zjNhDX5S5Z5@q!N3UcC5J+o^DRuq0?)*|ImPVV~@SSL4NOHefh7IWbgMOe3IGg*Nw& zLy@b^u1mYm+E)oU77D@V8&?)BZoWYr(nqF)Z&lx!um3UU^~U>oIO0#eA!4+T$FS4Y zQP3D6XfaYEYf+s3dZ1y`4{Huxj#88P;YO+K?&c*Zcy!s)Y|;;`9J^atZLbm;hP;hw z#;&`q;S1|HrVhG-q)pN*ESgo%d#=ym#yCtuk0-Lcn1#)nzWv!f*$Rnuc;T;b@hk6P zL63+`22TE{!Kxg*-zy8xIp|U%pDyAV#L`13#{(j2uKj zAJ2cy%gZysUCV}Y=4d;hW2|#b&CDoBW6f|`P}}_>0a^0aht;{c6E<%fn{Y3f0ZWKm zxkReFWle>hV6sRv<<22cuop4!B=sD&ws7>~#np{z*@5YKA ze~|MSJGy5i`dEdKmJ&B?(RB2A-XA_&^(Uk7?ZB4rhTr$_RA=KU;rNrn0k*7GKk|pd zG7fV&Lz8;<878F1{%13e_0}Kp;tWO_i;-F*-WNi6i?&>|=8q50^DTy(pe;N|k!ib_ zHmkX>!PDW&=IwxXj{=ZRX`miT-@y#1Ql8}9`RQ6xQqnysm+cci;0EaI5H(s@JPciU zI0S{N@jy!88sxcR2RAPvbF;+yQ2)~}Oe;gq9AHO#Bg7NYlr&`xvh3LPG~vhYvngq* zQwE`Lj6Ew_uzU^U(27lj=<|f(el0%C33jWyunp?$<^^-$@2hWZc{8DO7%f(pL%5lf z7B<^(-7OH?*NJe(2~(C~X?`MIE6oJUTRAm;YhS`$ouR@)uXV}Wne2!JVFl?)o14UR z5y`Clil13%7m=#*dBw0(QfirzNWVp+kK-jVBwyz*-p24u|6#)*$4h0CiuDi4 zWAx=;OQg%qSEu%{ZYmws_9m0__s}loSU1}~ z`MEY!$fWv3_>acM*L0JKB5xWuDx3WX3n8`WNpl!@#ca*c*F zc;#}9L3erDg)4rWr@t9PJ~o@)g`@?Mc6~Em*(ANy2$~F6?%%Oi8yhbqs!x_{2)$mF z5qHt>al&Q5NHYu=;kha>rKt1kB?iT|z}#jN--UjwVY7Ot<0iuCcF|$8ae0W#ggo)j zMsQzWA0?O(@cEgkX=b-hP*9MKjSX22)}1@yl&bcRf1H|{S{_IzuW~`K5XHLH)ee}} zT_YaPTv+vr@c~1 zbTzB#d*VAXdT;ku<`+zbR`Z-VHoE1sm#3$CLZi5;M_AC`ZrLw}sV~<{!$RM|KWpA} zcHFL_PF)b2SD7mnBi)4BJ$Z(^n^D)y(Mq0f3QsLdXUZO9b!@o3rT8XJTVs#Ocz0O9 zxkKK2zS4nn!64h{$Gf%B2n6!;mDIN=6^`jUNSjS1VtC!11D@q6*g1o9->ytg9A}ss z8P$gzlc;etzkZQV+t+8TpaeGA@#-+FFAgc0NHM z@EC|W9Hx_=`}SBUN&)b32}JrVB4LYCqQ3$S_#6HGJD=k$tz{jvC1Viaa^%$U_)}X3 zuBfRCk7a~~g*%!Bp|xi$o0iK;a*$hq$1@R;SH!M{AFX^;!k>FTNp0`_OKOh#(Fdgs zo>e3mDxOeJ{m%RZ>ARhhbZyy{F5s4n4FkZ3*SGq8!^{4AtUpSNKg+1o0Pah4cX!L= z4AU>l1qsi^$BH-iwX99fPV*jlLFflSNdLd?jbP{Ke zHVZ!E`s6P_`$m6S;p=><#RG*;{(2AMTK|#gKVtpoFc%U;M@L63Gtf2KqFkf|0RV}o zT)cp%T-_Z1d-&fm_+LHv-_PKGO~LzxGDZ(?7`2y__EU6Lq>dchFf4-c#S;8`7YP*!D%L^uzJ&U%F^rTc#V& z-(fG(+7;Wwub+>$zVz)@)s?%w&d+*z9T(*dtV#hs4@rOvB`&3Mfu%1mrHtR71Xq82BZ67H*rM`G zWiC=F$z6Npv=NHq4+_J995-Ig&_K?Pywv(@krT?TMg5PO2N-WLR$Sgd{z_QixJ;^puw(p!@()@mgca|%j+&&qOL`P5-bvKI2#|JaoW=@VSP z9!a97x4GdIg?vR)Q|j4)D9yVfO(robTC}Q8F1rU`JwxA4xw7byp=TW?)TvFMDLB8U zgpX*<;Z~~HM(#WVl*X=B6b@NFUVH))r;eJ;s^Cxpw3IqYyW(9;EMQ^RZVsOp)CW3q z>%5J|>(P>9gG{&UTWxfn5Qc0CrOysyeqt^WY#-VdC%{%b>I9yGx-Fvw6&5T(pXQE& z_=U4Sj^rMl4!aKDiAHWe4x9b+P1JTfjNT#CRQv07$a>L##A!uG{#G|Rcp#kJG5Xi5 z`{gf9ogIItK1>3;2i*zu884d_cO2(Y#$x|9@b0_f`YXbWLAivXj>)Nl%mZslvLnqM zGqV`^;VsSkR@$GPgOG3y~= zYr5i=Y|Wjwj z`TC~sn+QWQpuolqsM41qbWcsGxiEKr5-k5?mqv+w;p%5)d_;WOWV~SY!&3t+cOuES z>CrD6&C;`zT91`%&K+DA8x4cu#`Mu7K6c=w8|p=#*xU@mAG+U;yBhN~b+K}@&UZC5 zehZ13jS&`!Y+#a=RCLijeOiAfRzSk*GyS!CL6N;swk4kua7Dht-LW+S4t#&~zS-RN5@tRy?z3eleBv!VFOBn?1eu>*X&jkIufhgR92U z6?4a5;376B!CY8zIN+-ocX%1=`Ml%%s2W}@yBpuWI8l3GA&fP> z{=ouOy%CJ{W8eid`dK}hr63Zq2Co$Rte^~6k7Pc)G~^T^pXX1;jab;DnC3J zD}SO^)==VvQ4v`?(Wm^`7}P0Iw^ZcLYy6UHb{@Y@+zm5nnMTpV*+XzyW9~*FhsRYH zLW{K7vXVHm@;)o8#8mj6%~l+f|!KmGqS8gk$)qb;jYPFT*)D|*kWk`S#rvyLCT$k~g0yZoQ);v5tmL!O`=*~={ zre=?G$#1e0`Jb=H#OLM=CvSh`6g+eYXloPHreiMYE9`zGIi+)yxwur6uacRd6%Rt8 zve-(`zKvM#iz{_(*LujY)emK9xBXD7BRPL}Mpp?OI$%!q4i0Lkero(p6CujYetqXV zQ5%KEq`#zrxpQycC~KJFZ07%^Q}($wqLl z_WC$_Y{6exTztM{y5A)G*>9ZhMo2tz6c@1xlMPF|{sag5!kRW85I9yt8En~_*>KhY z9b=D<^#5C%^CqX^i~r87rtBW38b#_ARt5y(7Y!^aGp3lwib3&5M*o$?*IWsWqY!l`%I5#~YX!#qlHlg&J!Mm}SVRsUPU1?6AWOk;~qz6JwWDq^U1+#Fuj>i;GNW z+t(8;bM(R(SUY`2b+LmcI>Jlx9b6q7{If%Kas<}il^7IxT8lwCZ#tBGzt%ssq9brH zmZT8+HqoV7_Bap@Il;WqSx+*yJ7}Khx-l)~zAm!{uVeu));5Y_*uab9+dGc^6Dud* zx=n%`mkTlewNt^AFBBBKJ7i6eQNOxHI~5D*;cUZhdw(9d73THmXT%URaK&S@jy&U( z)q)Cn=G2Iz%e|m3Co$9;DxR-Rb6XxEwxKiVP%Tb>azCoS|~1U=r1kI_m$XvzG6%x$e`NwB@GvwN7aSgSOD z3_OOD4_Zb>D`2^$#mua-N|T0T4@2tKRe5`~E?Kf31?P0JFjiJ_>`c)l?3@N>9p5C7 zstG>huKETL7&QTa1^-A*#6fzpjT8}4_9 zNDy8_khy~JUlps^9Y}C%aGa$A<##Vjwbw9%&KKgsFnN!5*35b0k8ObdqM6{fMP^@BqPfcbLGD@RCU@QRU{_eP)f(lR+_cZ#1nM70Se$I!@1)Y3@Wx%r& znc1!J*R=}T>dNv9mG@_#LJ}+$6h?Yk`U`T1%O4k-H?D(xgfl(0fw);tFpT(@*mWz? zU32Awca9(EWuc0Bldw?k?2oiXG3%u>ZZ9M2*=8Dp7%~u03k%?quWa)d=9Cg+95H@t zezdaVA2RgHx3sCUP)t(F1ey;0URw{{CAtxLFYmAoE7ql^*P|zErA?NtdP?5Hr60JJ z9jIQ4e}o~sM}^v%VYtHI7DZfH&t!`g>9*u+J~{6X%SMlUr4RGcp4SfC52l;(iDN7c z42kYN+?UNjbFYL)@t0W;C|PLCx(vcNr|mflswLX^C|Y61Xg_zOcrcas)B$3;Bv16{ zu`~ml3=D*MaLf_pj0#_Nw#0DdpFkJ?>gvw6F1?x!*O9<;XgS?gM>8G~Wt3#GJT6+wh65v1fvY-a>DV!vD(1hMjEV%MJ!{|Q3h#z9BLvDd^!D7BpD8oAy6Xa@ z^8~p6UfJ`<50BWi%eN0YI+spGEE13Y-W~JEjve2P#7tXGeUHV4S>9_u7w2!Ac9DJIG+VD<$Y*pp(Ms4I;da>n+ zTMkM}X>CE!?cg^GILMxMXPET4N&jrDhbfT}rxlwSqBUN4xai2Txb!QcxWEtQbVd{$ z0^J+EL{Mn4SiqE8GOM*lHq1=?{px%c?G04otYSVY$Q`}C=n)trwKfWwnl)ZT*8A7( zn8|RDYVwDmZo6Rx9|tGT?cNH~n|0m|qH4#`C4mF&3aesMiiPmwl@0%2A@&H?m-jH+ zCKHe@8LJDU>bnXDd6Y=$TWN6V5s-=g~x}W4qLUNAIu>6fu5I$hF&}X1EdU*bq1GB_t=&{2Mf)ule>{wcU)2g>#1X(Q^` z&1U#rqq+iih#h}d5O$9`+Vu&7Cz^3zJwjjWRj(7Z6!~<|c^%v$hwQg#H+8cq))60z z2r8U>5Iwxtu9-|Y#Xy2{W2eSCr|yz1ZntR5EiV}@aD{zT;H&%X4lEXx?bBCKO21?l zWcv|Tvbc0)`8l4atmYu`dZHC!XL{hEP*9OQ)cft*Zhtu0pQ+8~6D0TnwYi@Y7Z71S zdgfEykk`^Lp#^AA+ApMm+en4K>D*f5{&`_ltGX6z8;D+qzTgT6?QSrxbqRU4|8e8BVUU%v4ArHgRh1YQ*JH#fb=~R@75((_;H8s_9lv7Wp`y&o z-H5By_HQM3J{da_@f5LmoGGfgD2fl+nruRa~FgvsY`%164O?CIArz* zXNn>Tz@0ca^n~=Ko_snI0{wIxhR3mIhLRF@ogoD0ee5ey1l%l2mH6wHRUEr?Q3Ccj ztc~mN`9+`%(p*xw6FqcC9{Y#fFJvkcXRqGb-M52dcT}9jWp_OHe2jEl*P{FCHPp2AN$tel}82iyFPTPhJF2~%S+@1+9c^-k~gg2v6A}Q<{XxX){QV+JUFu=o0Gt*Slbjpm`ff54{PZH*i{Xh_ziA z_;*xoF+nIA;p;Yz6ODdEe12ECET=3OWBlNuxrI^>^nr!MR%dOih{jjxsieWrd`IgD z+q5txxU#L}B}Mn2 z@r-DP3oF|V9)8is>uubpcCG>a2cg59#E6aLNqMF_(nZHHw(b<8?i8U3ca?SEspWcM zsWd+~ejOjx+%=d#M` ziaQj$oazs7!rZ5Ks^MkhT*Fy+LpFoS*Mv-_k;Upkj=ME&K+1-L3yP9}wql6UiE3RJ zw*aXd>df#K7)i_ioM)1jl|1RJ_3&1gNyoIe{h)$uQ&K|bzTW~I6?ZL+l0vJ>S}T#c z+I9Xfvi(E5FOu6Hx8*kl_bPH^^1CtL3S*Ye;0SqS{!|NfuLqW>R8<6&x*ua6HO;Jx*yh=`Jr!KYO?!9`U?z~ifZ z^6+DB7I6P%EA(K0z-J&SP$eg_1~Rbx zB{nuiv}%K9{}mM*{tlFmr=qWds93KOedC9IXH5AKnC+iXbi1>&v$qUevfpmV&+hIQ zDk=#i?@xgHpY|)i^g_-3mPTLU`asih8k;|R7o|0;(9MCoy1bYqHlglcztsOE`2ilY z_ALO5AowYJ_`>MuLj)g4{i0ul6@i3eyuCNIq1y+^hO|SJE|lPY`aRqR+`rg6Jf|O* zgaw8i)s7z)tne)M%Ej5QVzveKRGi);U>JDR5O;3}OEamK zJTHzK`@!EQnxLkpX2$_oeM%x#qX;u+{uUWUFZZhP-@2jbLC77;!xQs30N^Mwq!oW? zf99Tzr3t=D?dQRKmR?s}LV_^>KXCrXQN?BQ5+e z0V%08XDX(CUX6NXPqlTCwyhmak~bE*didr#;Jvq+oT|P9dY{%Q;1Ul>ZkT(sp0@rP zV7p&Duy||@pTzF;`l3xd=kNd40uEBr;)l%y1GdV(0RY=CpLC9i$P5Z+3*4_lb5$xJ z1F6gZobpVHeKCvh?MnwKcTh|RVq#*{vzSNxfwVJE?Ccevi>j)szJFI0Xmk36z>|z5gUz?h80m4G7vD2dA^pqI z3aErGeH_i8ukXB>%(CtGXGsiatN971iwt2hp(l;&@;7>ihLBVY%F1v~+2?|~s=cS+ zZskK0HAV|KB2#c-+6odnT|Ve0N_qniIvWZxtlSwBX%+%bIMldqti5#hF4H(~by7)@g zZ=Vn zI+v3gOUVoq8GnaNGWx_S$I`kYo&S1W_j2J@4vHZ<;EpN>lpom-HwpaBLH;CgYCt`q z_3Wd1+xi2UYt$>sGd-F6J5); z)pYTVgp-TQo{u=YoDZL@tjVPhcBOkBCDv?-a&L-j1FGe0UJdzdpy6ku>8;~j#3og; zrMdasuef^??LT>WGqMFlB>Q~(WqD*JTPaf=(wNfPpWGSc%aIHm^5&Cw6~zRR$de)V zuzBy*DMxn&pB$|e`iX_$g6a|UArE6wW8*d?H8LiFtwAooM<*)5Q;GxJR=fV%FrPKZ za(DWvuRq_`!eM%jd#hELy4S8K(7#RJv$`snTn3D}cf8Ja@%^Ij-|pyp?kyv8YS7*U zfvfV!z%D=5;_EK1IviIjVZK{h^mI)luIcC}11XE}nOy(LoL8 z+|@PI(+kB0Xd$@-Opa*vAwA#6Bqien_$3#d*G&?n<(5WywKNm_q@X?r83DSa zMvoE`sI-*2a-nwfyXQVZL37c@mGU9URHg+pnZiori7BWI*vretMz68rv|x;ksg{Yu;Ex+rVQZBDm(92KR8LatK_TDakU^}j9J0ItOdX3NIayqHJpO-@gCUxcPG zQw>4h`O+YJ$AC`Jc5>If?zQ6G3~w*5dUwoeoO^KB2Cbo?;n_hC2+OBLXRhh>)~&kv z!N{aJL2-6;+}u*%QFeOjJAU&CVjkQ-!?v``a#{&dQFk_91K)z=mRwFM3IvqpUn5?Y92ushC4RV}4Qfg5rDu;LTp+QamuQjqiB97#3<87y1#t z2_C|BT&lacVCIh8Z^lrDH^yh(+Y}x=SRAlAt!BNsCRL{Bhkcz-oHL!za9(aPEH@ug zQSaA|8_G=EYPAvN;a3eG&UCnPEx@MAPXF=SGCDce`Y zsYTML9+lv;GD1H#Fo(aifUS0XD6^TB83ok*3d?A zC8Kp?OK=U1aMw@}{c_(*7}X)7N#4a43l6I2u%vHPN?uC4uLZ3EJ* zZNwo|5(7;Ea+lNuGBc*ji4B9zo!k|0F8-6qu!ATCO5WP7rJe#DRxAFy>=u=9=I?dX zJ!m)a+R$Hn3!yDNIX+!bRwXMR(vN-Q6b|s=DG?j&l3{2~s@Z7j+=A1Jkh+_EH#or9 zB*QWzg|idl^z<}8KmVPWWh$+QN(r<4@uq|Gbobx(fqs#7OCa?u;c!cbwIE$z&%oedQ!W6j=DS3a%We^nmH1}MJ z1UIg8Z;zHND@Iz$%zQi6-O|#xqnD8V^(Z@si6_{ z=ff4d(m|=;SdF13p*rHj59;2L zcBXWBF+q?+vTQWXEkGh!} zyVN(Re2P@*?pB^%XT7H*JMmga8=-B?+*U)#zvVO+VLUv%1x~W;{@QnFEK5du9>k$p zi&0HNg466FA`|(;lbb$9Yp+~fT;xYrX?6Ty6}MC6WjDq=>G2bh^r3dn?ymJPuT=K> z4E)wD?Sz)FA7Y&${2%986g&ef!L-HR=kGpi)s~{Yojx$3@WNo5PLkBbkUJ^)OY4tCgG2RJ`yg$<;j!1G+TV)+WmP+7Bgz*EKCd4ExwM$k1{|Lt(58!3wF$!lS1H?NC{V9bs3iTujXGqWa`WnRy91#`4IKBXpJqZc%>t*Hj75vgq+PoY7z zJhtvkaf5K>{k83t2XHx4U5>!lN0N_#pT!S5sX<2}mlmBm`It`4W?;0TzMhAd_li3r zY!?D6w`evxI^ogEEC|otx0~nJ_j=+h1h^`vcEj;T%$G0J9A$5=z30}4XLN0VZYVBI z35um=BUGLi%Tdl-iVT(MwYN6L1bCBDGrLJm10Hrkz`J+-(ynK=o45Zld7%Sz_(Axh zy>jm9yTr?#m3M}%n`5oNSE2Kt87aOWTVp#F_XYs+V;)6dBOE-c7xAMd9dor2(Y z!M6c`g(;UUPkDKVYFeUi(1*3zjgelp2nN6(ji8|BS`X6qbvhlI;_H82jU$5&v|)-B z0Dw%o!F~&Aoi2eI4U>B1QOnHqkzH%pRyn|Xo&SXJjWQuJU83#M9P6PrF~QK4m6Zqa zqt^geS(2|(UAID|Cg*S|^!l%iYzsqluPXUHZ1);9sR&|cXHUKg^;w_ z>lY6!C(FUk16H-FpWe*%Cl;|A z9^{fA0iLSvW_SH{oW*klb%mt{rhgkJH9>=JRtnNALxPe~-t|QJY<^kDuakCkLNTd z6WV*A#U(ZVyCpRtp{3q`Tp4Ghw=cX;Tx7AG5f}0%*Ag?qT-9d`)RZY~7wq;^1QWx1 zQn0IXaIXD3Pjkq0VbEnedLZzfn(;WxBcef~jn2M$Yvq;#>YFe$L0DA%U|KFiv*`Qx z@2jitb{POK8K)r{wr`!C%N!*7IgInk^est4@=PsL`ZylgI#Z}c!fu{?5>)4~pE|R` znDiHK4iL8iZwh>UoCq&Tv(;oH2b49wzkW-XSrIRtyf515VBn|IS~+k}9`2*y7xqxU zkh(s9^BmwZvmc40Y<{d#W!%@I?9Hb^{f>BriH%!<>%r8MWy81;Lw!ZPL6Ybc(H?k~5p%We>m*q_bBHz^_Ol{-@TaFFi&nW&ZOfrC@ z<`g!^r+I9t@bTEeFjqL)+rFTkcz0_=ujMmL?q1NB!3zLeA|x1TW$;V<$;VF-Il#{* z#`?u_(m3h|{`ecmvB!iUE|w*LgG*Mb2p6{>A6?S;BXx^HQn6dnzUN# zufG1JvNG7{D&w6yE8vI3fXS@*czV>WLnhQ9HDxWAe)b%3_tvtFW{SqsPoemntw)i{ zx;fY>ho@~KZBsL9p`Mz&5l_FF$439t1NZyqvLx)+Rcs$bZ_w-Ok}N&zby>G$=@g}6 zYIOyy6w#6Q@12LN6-H$#QR5SQ>F=)&O;L?r^|^stvfo*bzKrISOLz@(>m(;9=jG=! zT@L?Obou3nbYIV1YuPH8;f*UC{ZrzA_+*M#i>WW?t8VJO%+_M$B5RZ!XJW)`;%HZB zuuAif%rRngI*8t5jRUo!bt91nOhMYkHB`n-y@=znQ3tPJ9Ge6qN0~DuWJ!A&^=Dobojhm`Yw$NO#tYuiA|(0H^YaK z;mk_<$v^YLY`dGHLH#{{-nktnK6+!GTFCJ%Q$oZZO+hZ7JG?r2qTq*rE$OA5BggGr z5e$*|6Yxsp*9*j5NU`}NckJsIaW~dprFbRvB#Nf%!q&ZlCH~I-NW7G2Xmsag?ti8) zMhq;Xd$(iombJBYHDLGd?(&l+TOFrmuatjojTHJU6f2ZG%JJ{0^`-xwnUSl`Kr7!- zy2DdDV1K&@DiN;1`{CIn6NAZJlSd|x3&sAGJ2^p=g^L32e{5%Mm-M{R{G~I#Z%5VE zb}4GF?|9L%DDe{Hr@rZbr~MC=QNiU!AH!MwxLURPO|Gd(z9h*`KRPDn-fFu~SG)KE z!eNkxPWRt;OBtX>F0m#e|K9k7B;Uo(;-|@O@`FV3qZ8HspGN!b3u0TTm8I1mrWKbt zpPAFYDfBeIW9aztzdFw-ab%+tuPE>T%HZ;fW8Lp{K-&Mg)Ng|lPyE34k*^C9k)pgm zN07n(+xxBMC)F=a@M_MDY!6v}TxpaxQ8h8pA%^tk|BtfU+r?E+LDorpO_F&+r97Kb zRCW8$qp{^9w}YskUdLZMUHcESGcyLN|MMJwI<@*WVklDGo@*eI|1E94u&~g6 zoGwv-#-(AF?g^VgB6VhO$9k=;uKvTu@!Oo?M&X9C{JZF+FOopufG}TJs+uuh^?NY`Lmwa;@WTyQ)>UgzG^y_vR!lTI5{&@u6s1s z{4(wz?l*OxfU&W$Hi3`(mdyC3Wo;-FUBfN2w zX!JkSwd(WbCN(_wF?La@1K*<+WGADdqV680Z~faJ4I2v!zu*zydIv{hZu-D*4$%HW z8lmM(*lRb$GW2kHH|C?rKV4(#3KNQ{pF8P&^%aJLh(WoOnBaD*i2C{vHvT~NMdbza zOeIAs3(|eQ$uN{wbvNQQA~ti1#sJrHwkdVjtgc*S^Z{FG*3R#NpH6je?d)h*wW!1~ z9?h@6fB*jW`DwrM9jF&eqF`lX9@U4=IKxx5luoRYm|>ne$+cd(n$QldV2v3vp&TJ-6! zQyKhc#tSFE?zz*t&=jk@OOFYzeV?N7nimdvA}(IIi50Xu{Nlo;w+X=l1NXkyf=hF+ z6?(BqR`Fs2p2jDixHmvcsI0zd`Si-7_bwB=kA3==I zL&>bMrpnaN=l1VY%5kAjC^d5Ze*aAnOCFP;k?N2pt8PJTk!Hrjp!mvx(eJ)Hnw>ROLRVCXW^Jr__|1-f6ebX244Kfq-fq(z=~A${A`3tXv)6 zU!tZ!=d0QOGZr%o+b+MV6+_lEtdg0Qsf_fHZ$`|lu1D_s>l4)NE2dh&H9n6nuFFfn z|Fy^bDgE~2x7)YNMUuhfd4EjD$19i+vc>e-Wo*hFsiku}d%r|2nhcH}g^$OsJp0!k z?`_5brte)oE@cFtQS(OdaLCPbE!*4%qR;i738pV17)-8W{s;%m#`uJCf%Bl(| zle+x?8~TJgUTL89{qW!Cl77-}4$1sjerVN<`_tvEK5(?Z;ZIoD%-Eyy`?vlfsb0U) zZ~yJ|pBn7(EGDg;$hNPML!feA|5C~PVQPr))NeTUKjRckr5h)x#+%f;&KjASnd$3u z=`?YIsoSMsjuXxf5-Pt?_klQAj3gj%9Fh|G+qJvI7SC;=;p>Hg@y1M>DIi*I{(r$Ay z)4@&J@#*;xJRT3+YP6ki@}=%&kS*b;XJ?1~eZ`~r-}jRE31u@aeL#$DGBGf~dLcxp zTVL?Pf~(8uhL*M$yFRe{su`u{Hl(l`ee1VBP(#Ev9dqwveh(BnM|m{QyVaTgvm-zc z=yb$I${(ik@Kv5}rX2U}1a=_L#v!#Ahaj<{R|4s}`i`jz22X!oU1jwpQbQR_hUNk& zFT2J$Hea>VY_>~fHzfDG)YR3f_3-3hgQsU-ieD;rk6n#)@aax^vgftNnnoFt#-uP! z&6SW{cJmxmCy+tpe#Qbk%QExCjUUK=_2KX?HTs7#=0yhFbS3LbFVClmT8U`o2)x7U z^l~Og7(Z}YT^==jC@U*VIZ4e$_wuJJ`f{dOK#$kZJ9xTf8L!m~jT^5-s18*LlhD^; zqox+kCKR}pyrS`~$;Ix2z5Ue;FBUEICY9l?_J6f=ra?_*+a5=4aX`^VWpG9X41`1p zpv)~aAPJCW)G(<)h+z_l3?YJETA?8zb083~K}eV(%mD(e%p@U7L=whE2_Rr-34~c+ zyn5fQ`|ZB3ulmcWQ>Rv)IHPej~E%*&h5q=Bkr-6FQ}dLHoXAb@k9nQZ!Gzz>_#HGJAAi@p{Z(7msUAU`pAq#-oq%-R;Fwum$b< zrf^nO4)N#LQoe0a{Kya=M)gihGCeq${qyQ~QnLk#^>l(vb&;YY=s8eSaIJ+-kFY;^ z(L$vPICnVvjk(l!y!kp0%d7Lx;g7rXHTvAa`uh4}(I$@UHSWug{)-kh_8nFzE?))j z0l2KjavyRzBD1lvv8w7)Oncq|OIf(A?Z1I!svSy@Z*%cfG^unkyS30et!REma*>+U z34=oSPcjn2zk>ptCf{-ngqKUW9+8nL2#eNO_LJy!?|IpC4$XDpocfN5-5J)c zVuPsnX?QU`+V0I@%o?gY)Dy*eQs=h48B7I-&k=P?D;zgMA5t6EFC#Ac^J}LYW zP7Ayh{tfXi@CUfui+lE@!IB=^FBJDPtfr1wD7k7+|2YO|=Lhx1on!43n=YNnb->hq zD-(GVAXhwP(cyg)lqZWTsY!Nnx>u0*ho=TsveoV%=kI||REc5Z?AaKP`_{{6zGZiJ zoeRkt1%u&FKAlB?6y+0(2!(DR3D$GMSu<`hTfAQ@Pk3rO-oRdqn!6|il^EPf7 zyDlOUnojQ?TWtTQ3jC@wuW>Gm?aqetUrI^5+DqN@UtNA9P-pI|N<1P&FSf3jP1Y`~ ztw+ZxFmAZ`XanM}qJq&+Am=%xi-mW}xi`pU7SmE6C0$yW4|uVV`vP6=A3*lJ;Iv9_ z>DHXtAT>ryIvaPbU48N+zihmr=0ZppY4nq??T$O8Tv{D)yJps!+Z_X;opV{quy6@82%w_eE+w#u&*W|_Z5T3mE5+q`WktG|RaEFBKn%BJ7aPqJ zjuPT@LOrwi*oa;=@M2C_M49?q&p6m+RQM9p(X|l?V?;F*W|W*5ZjrAw9Q%Bf8Q+b*Y$N?mj|oqP&!crrdZ!XS-yR3yAWxHe+ogCqsaQOVM75L9I35NqvY z!QO`F>!`qy+yZ(@`JF}lLw~?c4X}B=terd5%#2M>?bY`PdC57Ei>G7OY1mnDT4~6| zH2%J~5iwcSD0uOBLjzDdkt?M{oknA+^#p=;Av9F*3q+3HAmH(mYJPHz>FK%2>+ULy z2RFWUxmSF*sww-Yk&@%8PPRcoL7sKnpFye={_IOG{p6jT0SYG4^izyrydbjBqXFQzIq3$ z)hzI^$J7Y}@50%MV{xyXutmD(7p15Ul?#B&D0T>Zkn#ckT<_AGMV#n^!E|Sh`onrA zEjW@xNI>df-{zPq!2Ic#n`_ixjBTy^T0lh|+#dfrIw31%ZaI6=Da%T*JF6~C*hQc2 z9Lf&SZ-(6Yyg;U>6LtD+oxR-otv&O)ZGotW*SQ9TE4c|=&2f^=E!zQ^jN8?Nnnh_x z?MzHjuYVbl+VArTV>IEdg~}?yt6J&k>^oR!g;n#{CS+`*UD-~x*Xm2N@8#U_ z4p7e2(LcEp75o~{rn?XWw^hIZA$mXRi{Yu%dmn^`%&X5%oMsh#-9i& zA6{Ckgx1`ncVp5N_t2=S9@8tk0R#iRQVRbV6MS)2Bx#+^Lc1HC2ndo`TXy8gP5(@` z%&uA6=%63elc{hfA(loNeQ(@(4Gp?V;7wmjYWe-{r_pG9h9_5Ku<5e$K>E<0;_!*+ zgU&Etg_?}fK)4_bg)WX`kphJSI)j^T<4X(en==!^G4?rrgGxCDI6o`oCbZzlg9&{0 zYB27Qo!R)7k5CrK!i37Vd|v39;|+zL)^iH6N654W2w5~#oSC$8gKrp3Q_$6EWeUCl zcmDLK`OEEznzodFNvk+`A~#i*IOA5@0w*P_KV!66OBS-%kxUD^F=v~ZdFdrHmuzJ5myK{x*;FBeM)#_)gX9+AcJy` zQI-9bW7}B9_(rT0VS>c@tB-I{Z(2PUd};x}39{UbgPuEKIStNaP5*ohL0wEY z0YIkN1SpMC8O4;6Mmc-FOgmji_cxF3pL=-_-gdLZcFDgLW$NY<=6_6OWU28Jpg^g(E=m7(XFai*874tc^{JyYK zU}gd+-o9?y=p1gKT@YAxQi1ZXQKF08abwHKVV<)eB`?nfJawK zHl)P)g2<`QTXk4@ddf1D{Hdj-G3|hpf7Bng_lp3EN_lw$1D-r#P%?Tt#Tlf|TUzF< zG>nEbwlrc}OV+P|FTs0bM{d}EVBS0%Ls0_zt21&_l9GN0;@r?ZnMB((el$e88ZtH0vFYsfz(`H!Fs!QpJ3fOR%eJczPc>#d#!)GJ2Z#0ed>x~ zyZx=a(RFRix&cJ**7Ib@a%R7_Z5Fepl09C9Y>!T>m*kL~!|fNX-a~9vL$|!)FG&i1 z{T(DCmbL)@wfDhCmRf~_fJMvisC^LWmb>gWHI`oOF`oyWNr}o{T)zJv32OAfzQj1k zK}E8rU0Lp|BanF*iAXFlv&we&SM{^m`?L`tlNzHeg2r}fCNJGf~i z@Ms|Bni(In>5y&w)78SaeEkN5g_}l>4%jYS1bstl7WBf(#;KGui(XI?A)|WbMmk5( zGuc;)L5KZLNXl1TJxbI-={bjMxn^~-Td=YGnZ$c#mPCwsnei_U3!{HQZA?7-I+&yu z1syND?N-#8h>AXaRBuX6UBHK~wZZ5VE?NgWG)Br$K&b=W&*=FU%#V=9gffq7P%jhN z^tTZm?gprQ&Gch_k%G=`M`6m%klI}+D3cb6jbpv_lLy$1FLXc>G6JWgPOt^|H!-k&PP|82ZL+!QP(=PSJk77}JFXQd zVyOu-iFa%v5Qy7D0qw6$os`%7ISGk?_lkcv zNBUXCtv4{g*F}klIM`jpSERxl7{x%XiP)j~0}O QpGa7kTK`;Od^_rY0H$wm`Tzg` literal 19257 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 ZfsodvNK=;?K41i-q5Ax3#bb*P{{w>S*S7!w From 1a642bc4965329c5854390ce7ea5d4498b9e69e8 Mon Sep 17 00:00:00 2001 From: probe Date: Fri, 23 Oct 2026 19:20:31 +0800 Subject: [PATCH 10/10] test(webui): run the WebUI group's files one at a time MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two files in the WebUI group drive a real browser, and they were running at the same time as each other and as the rest of the group. On a CI runner that is a browser per file competing for the same cores: the case that drives the browser panel needs about half again the time it gets, and it runs past its own deadline — a failure that says nothing about the code under test. The same thing already happens on Windows, where the whole suite is serialized for I/O contention. Serialize the group's files instead of relaxing any deadline: the browser gets the machine to itself, and every deadline stays the one its case was written against. --- scripts/run-vitest-suite.mjs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/scripts/run-vitest-suite.mjs b/scripts/run-vitest-suite.mjs index 5eb11b102..4d4fc06d1 100644 --- a/scripts/run-vitest-suite.mjs +++ b/scripts/run-vitest-suite.mjs @@ -36,8 +36,14 @@ const result = spawnSync( "vitest.oss.config.mjs", // These suites create many SQLite databases and watched directories. On // Windows, concurrent files can exhaust the 5s test budget through I/O - // contention. Serialize files without relaxing individual test deadlines. - ...(process.platform === "win32" ? ["--maxWorkers", "1"] : []), + // contention. The WebUI group drives real browsers as well: two of its + // files launch a browser of their own, and two browsers on one runner + // take the machine from each other. The case that drives the browser + // panel then runs past its own deadline — a failure that says nothing + // about the code under test. Serialize the files rather than relax any + // deadline: every file gets the machine to itself, and the deadlines stay + // the ones the cases were written against. + ...(process.platform === "win32" || name === "webui" ? ["--maxWorkers", "1"] : []), ...files, ], { stdio: "inherit", cwd: repositoryRoot, env: environment },