import React from "react";
import { render, screen } from "@testing-library/react";
import { describe, it, expect } from "vitest";
import { CopilotChatView } from "../CopilotChatView";
import { CopilotKitProvider } from "../../../providers/CopilotKitProvider";
import { CopilotChatConfigurationProvider } from "../../../providers/CopilotChatConfigurationProvider";
// Minimal provider wrapper. No agent registry is required because these tests
// only exercise local render decisions (welcome-screen suppression) that
// don't touch the agent runtime.
const TestWrapper: React.FC<{ children: React.ReactNode }> = ({ children }) => (
{children}
);
describe("CopilotChatView connect-gating", () => {
it("suppresses the welcome screen while isConnecting=true", () => {
render(
,
);
// Switching threads would otherwise flash the welcome greeting before
// bootstrap messages arrive.
expect(screen.queryByTestId("copilot-welcome-screen")).toBeNull();
});
it("suppresses the welcome screen when hasExplicitThreadId=true", () => {
render(
,
);
// A caller-managed thread (threadId prop / config provider) should never
// display the generic "start a new chat" welcome — even when the thread
// has no messages yet.
expect(screen.queryByTestId("copilot-welcome-screen")).toBeNull();
});
it("shows the welcome screen by default for a fresh empty chat", () => {
render(
,
);
// Positive control: with no threadId supplied and no connect in flight,
// an empty chat should still render the welcome screen.
expect(screen.getByTestId("copilot-welcome-screen")).toBeDefined();
});
});