fix(tui): sync test awaits with throttled render pipeline (#3076)
Tests assumed renders complete synchronously after requestRender() +
nextTick + flush(), but commit 6f5f37f8 changed requestRender() to
schedule via setTimeout with a 16ms minimum interval. Tests reading
viewport state before doRender() runs saw stale data.
Add VirtualTerminal.waitForRender() helper that waits for the throttled
render to settle (nextTick + 20ms + xterm flush), and replace all
terminal.flush() calls after render-triggering actions with it.
Fixes 8 failing tests across overlay-short-content, tui-render, and
markdown test suites.
This commit is contained in:
@@ -206,4 +206,11 @@ export class VirtualTerminal implements Terminal {
|
||||
y: buffer.cursorY,
|
||||
};
|
||||
}
|
||||
|
||||
/** Wait for TUI's throttled render pipeline to settle. */
|
||||
async waitForRender(): Promise<void> {
|
||||
await new Promise<void>((resolve) => process.nextTick(resolve));
|
||||
await new Promise<void>((resolve) => setTimeout(resolve, 20));
|
||||
await this.flush();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user