From b1ebc1dde5b66d934dfa559d765985e086f9dfac Mon Sep 17 00:00:00 2001 From: brennanb2025 Date: Thu, 2 Jul 2026 21:56:03 -0700 Subject: [PATCH] test(mobile): unmount TerminalWebView renderers so watchdog timers can't leak across tests Co-authored-by: Orca --- .../terminal/terminal-webview-engine-error.test.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/mobile/src/terminal/terminal-webview-engine-error.test.ts b/mobile/src/terminal/terminal-webview-engine-error.test.ts index e2560ecdae8..82267967b7c 100644 --- a/mobile/src/terminal/terminal-webview-engine-error.test.ts +++ b/mobile/src/terminal/terminal-webview-engine-error.test.ts @@ -41,6 +41,10 @@ function suppressReactTestRendererDeprecationWarning(): () => void { return () => consoleErrorSpy.mockRestore() } +// Why: mounting TerminalWebView arms the web-ready watchdog; tests must +// unmount so the timer can't survive into later tests and fire in teardown. +let activeRenderer: ReactTestRenderer | null = null + function createTerminalWebViewRenderer(onEngineError = vi.fn()) { let renderer: ReactTestRenderer | null = null const restoreConsoleError = suppressReactTestRendererDeprecationWarning() @@ -54,6 +58,7 @@ function createTerminalWebViewRenderer(onEngineError = vi.fn()) { if (!renderer) { throw new Error('TerminalWebView did not render') } + activeRenderer = renderer return { onEngineError, renderer } } @@ -73,6 +78,12 @@ function renderedText(renderer: ReactTestRenderer): string { describe('TerminalWebView engine errors', () => { afterEach(() => { + if (activeRenderer) { + act(() => { + activeRenderer?.unmount() + }) + activeRenderer = null + } vi.restoreAllMocks() })