* Fold a run's step messages behind its latest message Long tool runs posted every step as its own bubble, so the answer drowned in narration and a summary written before saving a file appeared twice. Web and mobile now fold a run's text-only step messages behind one "N steps" line above the run's latest message. The thread snapshot also stops replaying live narration that was already posted, which showed steps again after a refresh. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Tgvrj34NMnaqvtgvruYQZZ * Keep a run's last step visible above a card A card such as the peer-message receipt has no words of its own, so folding the narration into it hid everything the bot said. Steps now fold only into a written answer or the live row; before a card the last step stays visible. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Tgvrj34NMnaqvtgvruYQZZ --------- Co-authored-by: Claude <noreply@anthropic.com>
25 lines
1.2 KiB
TypeScript
25 lines
1.2 KiB
TypeScript
import { expect, test } from "@playwright/test";
|
|
import { captureScreenshot, completeOnboarding, signup, waitForChatComposer } from "./helpers";
|
|
|
|
test("a long run shows its answer with the earlier steps folded", async ({ page }, testInfo) => {
|
|
const stamp = Date.now();
|
|
await signup(page, `run-steps-${stamp}@rakazo.test`, "password12", "Steps");
|
|
await completeOnboarding(page);
|
|
await waitForChatComposer(page);
|
|
const composer = page.getByRole("combobox", { name: /Message|Nachricht/i });
|
|
await composer.fill("Show your steps");
|
|
await composer.press("Enter");
|
|
|
|
const transcript = page.getByTestId("transcript");
|
|
await expect(transcript.getByText("Here is the summary.")).toBeVisible({ timeout: 60_000 });
|
|
const steps = transcript.getByTestId("run-steps");
|
|
await expect(steps).toHaveCount(1);
|
|
await expect(transcript.getByText("Opening the page.")).toHaveCount(0);
|
|
await captureScreenshot(page, testInfo, "run-steps-folded");
|
|
|
|
await steps.getByRole("button", { name: "2 steps" }).click();
|
|
await expect(steps.getByText("Opening the page.")).toBeVisible();
|
|
await expect(steps.getByText("Reading the article.")).toBeVisible();
|
|
await captureScreenshot(page, testInfo, "run-steps-open");
|
|
});
|