mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
* test(app/e2e): stream auto-scroll and working-indicator→copy-button (Cluster G5) Wire in the unused agent-bottom-anchor helpers and add two new agent stream UI specs: auto-scroll stays pinned to the bottom across token bursts, and the inline working-indicator transitions to a copy-button when the stream ends. Both tests use the mock provider so there is no real LLM dependency in CI. Adds three helpers to helpers/agent-stream.ts: - expectInlineWorkingIndicator - expectTurnCopyButton - expectScrolledToBottom (wraps agent-bottom-anchor) * fixup: address review blockers and nits - Replace expectScrolledToBottom passthrough with expectScrollFollowsNewContent that encapsulates readScrollMetrics → waitForContentGrowth → expectNearBottom - Remove direct agent-bottom-anchor imports from spec body (DSL leak) - Add awaitAssistantMessage before expectInlineWorkingIndicator to anchor on real content before asserting the working indicator - Add comment to expectInlineWorkingIndicator explaining why testId is used (animated spinner View has no ARIA role)
46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import { test } from "./fixtures";
|
|
import {
|
|
awaitAssistantMessage,
|
|
expectAgentIdle,
|
|
expectInlineWorkingIndicator,
|
|
expectTurnCopyButton,
|
|
expectScrollFollowsNewContent,
|
|
} from "./helpers/agent-stream";
|
|
import { startRunningMockAgent } from "./helpers/composer";
|
|
|
|
test.describe("Agent stream UI", () => {
|
|
test("auto-scroll sticks to bottom across token bursts", async ({ page }) => {
|
|
test.setTimeout(120_000);
|
|
const { client, repo } = await startRunningMockAgent(page, {
|
|
prefix: "stream-scroll-",
|
|
model: "one-minute-stream",
|
|
prompt: "Stream for auto-scroll test.",
|
|
});
|
|
try {
|
|
await awaitAssistantMessage(page);
|
|
await expectScrollFollowsNewContent(page);
|
|
} finally {
|
|
await client.close();
|
|
await repo.cleanup();
|
|
}
|
|
});
|
|
|
|
test("working-indicator transitions to copy-button when stream ends", async ({ page }) => {
|
|
test.setTimeout(60_000);
|
|
const { client, repo } = await startRunningMockAgent(page, {
|
|
prefix: "stream-indicator-",
|
|
model: "ten-second-stream",
|
|
prompt: "Stream briefly for indicator transition test.",
|
|
});
|
|
try {
|
|
await awaitAssistantMessage(page);
|
|
await expectInlineWorkingIndicator(page);
|
|
await expectAgentIdle(page, 30_000);
|
|
await expectTurnCopyButton(page);
|
|
} finally {
|
|
await client.close();
|
|
await repo.cleanup();
|
|
}
|
|
});
|
|
});
|