Migrate core render util to use xterm.js as part of the rendering loop. (#19044)

This commit is contained in:
Jacob Richman
2026-02-18 16:46:50 -08:00
committed by GitHub
parent 04c52513e7
commit 04f65f3d55
213 changed files with 7065 additions and 3852 deletions
@@ -310,33 +310,39 @@ describe('MainContent', () => {
});
it('renders in normal buffer mode', async () => {
const { lastFrame } = renderWithProviders(<MainContent />, {
const { lastFrame, unmount } = renderWithProviders(<MainContent />, {
uiState: defaultMockUiState as Partial<UIState>,
});
await waitFor(() => expect(lastFrame()).toContain('AppHeader(full)'));
const output = lastFrame();
expect(output).toContain('AppHeader');
expect(output).toContain('Hello');
expect(output).toContain('Hi there');
unmount();
});
it('renders in alternate buffer mode', async () => {
vi.mocked(useAlternateBuffer).mockReturnValue(true);
const { lastFrame } = renderWithProviders(<MainContent />, {
uiState: defaultMockUiState as Partial<UIState>,
});
await waitFor(() => expect(lastFrame()).toContain('ScrollableList'));
const output = lastFrame();
const { lastFrame, waitUntilReady, unmount } = renderWithProviders(
<MainContent />,
{
uiState: defaultMockUiState as Partial<UIState>,
},
);
await waitUntilReady();
const output = lastFrame();
expect(output).toContain('AppHeader(full)');
expect(output).toContain('Hello');
expect(output).toContain('Hi there');
unmount();
});
it('renders minimal header in minimal mode (alternate buffer)', async () => {
vi.mocked(useAlternateBuffer).mockReturnValue(true);
const { lastFrame } = renderWithProviders(<MainContent />, {
const { lastFrame, unmount } = renderWithProviders(<MainContent />, {
uiState: {
...defaultMockUiState,
cleanUiDetailsVisible: false,
@@ -348,6 +354,7 @@ describe('MainContent', () => {
expect(output).toContain('AppHeader(minimal)');
expect(output).not.toContain('AppHeader(full)');
expect(output).toContain('Hello');
unmount();
});
it('restores full header details after toggle in alternate buffer mode', async () => {
@@ -405,15 +412,19 @@ describe('MainContent', () => {
it('does not constrain height in alternate buffer mode', async () => {
vi.mocked(useAlternateBuffer).mockReturnValue(true);
const { lastFrame } = renderWithProviders(<MainContent />, {
uiState: defaultMockUiState as Partial<UIState>,
});
await waitFor(() => expect(lastFrame()).toContain('Hello'));
const output = lastFrame();
const { lastFrame, waitUntilReady, unmount } = renderWithProviders(
<MainContent />,
{
uiState: defaultMockUiState as Partial<UIState>,
},
);
await waitUntilReady();
const output = lastFrame();
expect(output).toContain('AppHeader(full)');
expect(output).toContain('Hello');
expect(output).toContain('Hi there');
unmount();
});
describe('MainContent Tool Output Height Logic', () => {
@@ -502,10 +513,14 @@ describe('MainContent', () => {
bannerVisible: false,
};
const { lastFrame } = renderWithProviders(<MainContent />, {
uiState: uiState as Partial<UIState>,
useAlternateBuffer: isAlternateBuffer,
});
const { lastFrame, waitUntilReady, unmount } = renderWithProviders(
<MainContent />,
{
uiState: uiState as Partial<UIState>,
useAlternateBuffer: isAlternateBuffer,
},
);
await waitUntilReady();
const output = lastFrame();
@@ -522,6 +537,7 @@ describe('MainContent', () => {
// Snapshots for visual verification
expect(output).toMatchSnapshot();
unmount();
},
);
});