test(cli): refactor tests for async render utilities (#23252)

This commit is contained in:
Tommaso Sciortino
2026-03-20 20:08:29 +00:00
committed by GitHub
parent 86a3a913b5
commit 6c78eb7a39
198 changed files with 3592 additions and 4802 deletions

View File

@@ -29,10 +29,9 @@ describe('<AnsiOutputText />', () => {
createAnsiToken({ text: 'world!' }),
],
];
const { lastFrame, waitUntilReady, unmount } = render(
const { lastFrame, unmount } = await render(
<AnsiOutputText data={data} width={80} />,
);
await waitUntilReady();
expect(lastFrame().trim()).toBe('Hello, world!');
unmount();
});
@@ -47,10 +46,9 @@ describe('<AnsiOutputText />', () => {
{ style: { inverse: true }, text: 'Inverse' },
])('correctly applies style $text', async ({ style, text }) => {
const data: AnsiOutput = [[createAnsiToken({ text, ...style })]];
const { lastFrame, waitUntilReady, unmount } = render(
const { lastFrame, unmount } = await render(
<AnsiOutputText data={data} width={80} />,
);
await waitUntilReady();
expect(lastFrame().trim()).toBe(text);
unmount();
});
@@ -61,10 +59,9 @@ describe('<AnsiOutputText />', () => {
{ color: { fg: '#00ff00', bg: '#ff00ff' }, text: 'Green FG Magenta BG' },
])('correctly applies color $text', async ({ color, text }) => {
const data: AnsiOutput = [[createAnsiToken({ text, ...color })]];
const { lastFrame, waitUntilReady, unmount } = render(
const { lastFrame, unmount } = await render(
<AnsiOutputText data={data} width={80} />,
);
await waitUntilReady();
expect(lastFrame().trim()).toBe(text);
unmount();
});
@@ -76,10 +73,9 @@ describe('<AnsiOutputText />', () => {
[createAnsiToken({ text: 'Third line' })],
[createAnsiToken({ text: '' })],
];
const { lastFrame, waitUntilReady, unmount } = render(
const { lastFrame, unmount } = await render(
<AnsiOutputText data={data} width={80} />,
);
await waitUntilReady();
const output = lastFrame();
expect(output).toBeDefined();
const lines = output.split('\n');
@@ -96,10 +92,9 @@ describe('<AnsiOutputText />', () => {
[createAnsiToken({ text: 'Line 3' })],
[createAnsiToken({ text: 'Line 4' })],
];
const { lastFrame, waitUntilReady, unmount } = render(
const { lastFrame, unmount } = await render(
<AnsiOutputText data={data} availableTerminalHeight={2} width={80} />,
);
await waitUntilReady();
const output = lastFrame();
expect(output).not.toContain('Line 1');
expect(output).not.toContain('Line 2');
@@ -115,10 +110,9 @@ describe('<AnsiOutputText />', () => {
[createAnsiToken({ text: 'Line 3' })],
[createAnsiToken({ text: 'Line 4' })],
];
const { lastFrame, waitUntilReady, unmount } = render(
const { lastFrame, unmount } = await render(
<AnsiOutputText data={data} maxLines={2} width={80} />,
);
await waitUntilReady();
const output = lastFrame();
expect(output).not.toContain('Line 1');
expect(output).not.toContain('Line 2');
@@ -135,7 +129,7 @@ describe('<AnsiOutputText />', () => {
[createAnsiToken({ text: 'Line 4' })],
];
// availableTerminalHeight=3, maxLines=2 => show 2 lines
const { lastFrame, waitUntilReady, unmount } = render(
const { lastFrame, unmount } = await render(
<AnsiOutputText
data={data}
availableTerminalHeight={3}
@@ -143,7 +137,6 @@ describe('<AnsiOutputText />', () => {
width={80}
/>,
);
await waitUntilReady();
const output = lastFrame();
expect(output).not.toContain('Line 2');
expect(output).toContain('Line 3');
@@ -156,10 +149,9 @@ describe('<AnsiOutputText />', () => {
for (let i = 0; i < 1000; i++) {
largeData.push([createAnsiToken({ text: `Line ${i}` })]);
}
const { lastFrame, waitUntilReady, unmount } = render(
const { lastFrame, unmount } = await render(
<AnsiOutputText data={largeData} width={80} />,
);
await waitUntilReady();
// We are just checking that it renders something without crashing.
expect(lastFrame()).toBeDefined();
unmount();