test: consolidate duplicate terminal redraw scenarios (#29709)

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
This commit is contained in:
OrcaWin
2026-10-16 07:44:40 -07:00
committed by GitHub
co-authored by OrcaWin
parent eada95e960
commit 40f56eb7bb
2 changed files with 5 additions and 63 deletions
@@ -88,33 +88,6 @@ export function registerPtyConnectionRendererRiskRepaintTests(): void {
)
})
it('does not switch renderers when background SGR is split across PTY chunks', async () => {
const { connectPanePty } = await import('./pty-connection')
const transport = createMockTransport()
const capturedDataCallback: { current: ((data: string) => void) | null } = { current: null }
transport.connect.mockImplementation(
async ({ callbacks }: { callbacks: ConnectCallbacks }) => {
capturedDataCallback.current = callbacks.onData ?? null
return 'pty-id'
}
)
transportFactoryQueue.push(transport)
const pane = createPane(1)
const manager = createManager(1)
const deps = createDeps()
connectPanePty(pane as never, manager as never, deps as never)
await flushAsyncTicks(6)
capturedDataCallback.current?.('\x1b[48')
expect(manager.markPaneHasComplexScriptOutput).not.toHaveBeenCalled()
capturedDataCallback.current?.(';2;52;52;52m codex block \x1b[0m\r\n')
expect(manager.markPaneHasComplexScriptOutput).not.toHaveBeenCalled()
})
it('does not switch renderers across split background SGR PTY chunks', async () => {
const { connectPanePty } = await import('./pty-connection')
const transport = createMockTransport()
@@ -143,40 +116,6 @@ export function registerPtyConnectionRendererRiskRepaintTests(): void {
expect(manager.markPaneHasComplexScriptOutput).not.toHaveBeenCalled()
})
it('forces a viewport refresh for foreground Codex-style background redraws', async () => {
const { connectPanePty } = await import('./pty-connection')
const transport = createMockTransport()
const capturedDataCallback: { current: ((data: string) => void) | null } = { current: null }
transport.connect.mockImplementation(
async ({ callbacks }: { callbacks: ConnectCallbacks }) => {
capturedDataCallback.current = callbacks.onData ?? null
return 'pty-id'
}
)
transportFactoryQueue.push(transport)
const pane = createPane(1)
const manager = createManager(1)
const refresh = vi.fn()
const terminal = pane.terminal as typeof pane.terminal & {
_core?: { refresh: typeof refresh }
}
terminal._core = { refresh }
terminal.write = vi.fn((_data: string, callback?: () => void) => {
callback?.()
})
connectPanePty(pane as never, manager as never, createDeps() as never)
await flushAsyncTicks(6)
capturedDataCallback.current?.(
'\x1b[2J\x1b[H\x1b[48;2;52;52;52m codex block text \x1b[0m\r\n'
)
expect(manager.markPaneHasComplexScriptOutput).not.toHaveBeenCalled()
expect(refresh).toHaveBeenCalledWith(0, 39, true)
})
it('forces a viewport refresh for foreground CJK output without CSI', async () => {
const { connectPanePty } = await import('./pty-connection')
const transport = createMockTransport()
@@ -160,8 +160,9 @@ export function registerPtyConnectionWindowsCjkRepaintTests(): void {
capturedDataCallback.current?.('\x1b[48')
expect(refresh).not.toHaveBeenCalled()
expect(manager.markPaneHasComplexScriptOutput).not.toHaveBeenCalled()
capturedDataCallback.current?.(';2;52;52;52m codex block text \x1b[0m\r\n')
capturedDataCallback.current?.(';2;52;52;52m codex block \x1b[0m\r\n')
expect(manager.markPaneHasComplexScriptOutput).not.toHaveBeenCalled()
expect(refresh).toHaveBeenCalledWith(0, 39, true)
@@ -215,6 +216,7 @@ export function registerPtyConnectionWindowsCjkRepaintTests(): void {
transportFactoryQueue.push(transport)
const pane = createPane(1)
const manager = createManager(1)
const refresh = vi.fn()
const terminal = pane.terminal as typeof pane.terminal & {
_core?: { refresh: typeof refresh }
@@ -224,13 +226,14 @@ export function registerPtyConnectionWindowsCjkRepaintTests(): void {
callback?.()
})
connectPanePty(pane as never, createManager(1) as never, createDeps() as never)
connectPanePty(pane as never, manager as never, createDeps() as never)
await flushAsyncTicks(6)
capturedDataCallback.current?.(
'\x1b[2J\x1b[H\x1b[48;2;52;52;52m codex block text \x1b[0m\r\n'
)
expect(refresh).toHaveBeenCalledWith(0, 39, true)
expect(manager.markPaneHasComplexScriptOutput).not.toHaveBeenCalled()
refresh.mockClear()
capturedDataCallback.current?.('plain follow-up output\r\n')