From 1add8de9c7c04c346963b2c77d66fc5bd6f2180d Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Sat, 5 Sep 2026 14:47:58 +0200 Subject: [PATCH] test(app): verify submission settlement across reconnect Keep submission acknowledgement separate from turn liveness: disconnect preserves the running turn until authoritative catch-up. Wait for confirmed running chrome before exercising queued cancellation so the alternate-send shortcut cannot race turn startup. --- .../e2e/browser/agent-message-submission.spec.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/app/e2e/browser/agent-message-submission.spec.ts b/packages/app/e2e/browser/agent-message-submission.spec.ts index 295e07ba88..194fe43d1d 100644 --- a/packages/app/e2e/browser/agent-message-submission.spec.ts +++ b/packages/app/e2e/browser/agent-message-submission.spec.ts @@ -5,6 +5,7 @@ import { expectAgentIdle, expectAgentReadyToInterrupt, expectAgentSurfacesIdle, + expectInlineWorkingIndicator, expectRunningAgentChrome, expectVisibleAgentSurfacesIdle, } from "../support/helpers/agent-stream"; @@ -549,9 +550,18 @@ async function expectProviderAcknowledgementBeforeRpcAcceptanceSettlesSubmission const userMessage = await submitMessageWithImage(page, prompt); await gate.waitForHeldServerMessage(); await gate.waitForAgentStreamItem("user_message"); + await gate.waitForAgentStreamEvent("turn_started"); gate.releaseHeldServerMessage(); + await expect(userMessage).toHaveAttribute("aria-busy", "false"); await gate.drop(); - await expect(page.getByTestId("turn-working-indicator")).toHaveCount(0); + await expectInlineWorkingIndicator(page); + await expect(userMessage).toHaveAttribute("aria-busy", "false"); + + await agent.client.waitForFinish(agent.agentId, 30_000); + gate.setServerMessageSuppressed("agent_status", false); + gate.setServerMessageSuppressed("agent_update", false); + gate.restoreFresh(); + await expectVisibleAgentSurfacesIdle(page); await expect(userMessage).toHaveAttribute("aria-busy", "false"); } finally { gate.restore(); @@ -991,7 +1001,7 @@ test.describe("Agent message submission", () => { await openAgentRoute(page, agent); await expectComposerVisible(page); await submitMessage(page, "Keep running until the queued turn is ready."); - await expectAgentReadyToInterrupt(page); + await expectRunningAgentChrome(page, title); await queueMessage(page, secondPrompt); await expect(page.getByRole("button", { name: "Send queued message now" })).toBeVisible();