(".markdown-stream-tail");
expect(tail?.innerHTML).toContain(" {
const { container, rerender } = render(Markdown, {
props: { text: "# Hello\n\nbody", streaming: true },
});
expect(container.querySelector(".markdown-stream-prefix")).not.toBeNull();
await rerender({ text: "# Hello\n\nbody", streaming: false });
expect(container.querySelector(".markdown-stream-prefix")).toBeNull();
expect(container.querySelector(".markdown-stream-tail")).toBeNull();
expect(screen.getByRole("heading", { level: 1, name: "Hello" })).toBeInTheDocument();
});
it("streaming: the delegated copy-button listener still works for tail code blocks", async () => {
const writeText = vi.fn().mockResolvedValue(undefined);
Object.defineProperty(navigator, "clipboard", { value: { writeText }, configurable: true });
const { container } = render(Markdown, {
props: { text: "para\n\n```js\nconst y = 2;", streaming: true },
});
const button = container.querySelector("[data-copy]");
expect(button).not.toBeNull();
if (button === null) throw new Error("expected a copy button");
await fireEvent.click(button);
expect(writeText).toHaveBeenCalledTimes(1);
expect(writeText.mock.calls[0]?.[0]).toContain("const y = 2;");
});
});