From 40f56eb7bbbc43bce7ae366de2a696c58632a02a Mon Sep 17 00:00:00 2001 From: OrcaWin Date: Fri, 16 Oct 2026 07:44:40 -0700 Subject: [PATCH] test: consolidate duplicate terminal redraw scenarios (#29709) Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com> --- ...y-connection-renderer-risk-repaint.spec.ts | 61 ------------------- ...pty-connection-windows-cjk-repaint.spec.ts | 7 ++- 2 files changed, 5 insertions(+), 63 deletions(-) diff --git a/src/renderer/src/components/terminal-pane/pty-connection-renderer-risk-repaint.spec.ts b/src/renderer/src/components/terminal-pane/pty-connection-renderer-risk-repaint.spec.ts index 12d9eedaf06..9ab86622d8e 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-renderer-risk-repaint.spec.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-renderer-risk-repaint.spec.ts @@ -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() diff --git a/src/renderer/src/components/terminal-pane/pty-connection-windows-cjk-repaint.spec.ts b/src/renderer/src/components/terminal-pane/pty-connection-windows-cjk-repaint.spec.ts index 9d23759b8cd..106283e592d 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-windows-cjk-repaint.spec.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-windows-cjk-repaint.spec.ts @@ -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')