From 9739b338bb0a7ba41b97b4ba5b9c6ce7efe55067 Mon Sep 17 00:00:00 2001 From: AndyMik90 Date: Sat, 17 Jan 2026 00:23:26 +0100 Subject: [PATCH] fix(tests): add requestAnimationFrame fallback for flaky Ubuntu CI tests Add defensive runtime check in useXterm.ts to handle test environments where requestAnimationFrame may not be defined. This fixes intermittent CI failures on Ubuntu where the vitest node/jsdom environment switching caused a race condition. Co-Authored-By: Claude Opus 4.5 --- apps/frontend/src/renderer/components/terminal/useXterm.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/frontend/src/renderer/components/terminal/useXterm.ts b/apps/frontend/src/renderer/components/terminal/useXterm.ts index 790bdfd4..6412d971 100644 --- a/apps/frontend/src/renderer/components/terminal/useXterm.ts +++ b/apps/frontend/src/renderer/components/terminal/useXterm.ts @@ -219,8 +219,13 @@ export function useXterm({ terminalId, onCommandEnter, onResize, onDimensionsRea // Use requestAnimationFrame to wait for layout, then fit // This is more reliable than a fixed timeout + // Fallback to setTimeout for test environments where requestAnimationFrame may not be defined + const raf = typeof requestAnimationFrame !== 'undefined' + ? requestAnimationFrame + : (cb: FrameRequestCallback) => setTimeout(() => cb(Date.now()), 0) as unknown as number; + const performInitialFit = () => { - requestAnimationFrame(() => { + raf(() => { if (fitAddonRef.current && xtermRef.current && terminalRef.current) { // Check if container has valid dimensions const rect = terminalRef.current.getBoundingClientRect();