> codesnippet@0.1.0 test > jest --testPathPattern=python-runner --coverage Using tsconfig file: ./tsconfig.json PASS src/components/features/python-runner/TerminalHeader.test.tsx FAIL src/components/features/python-runner/TerminalInput.test.tsx ● Test suite failed to run x Unexpected token `TerminalInput`. Expected jsx identifier ,-[/Users/rmac/Documents/GitHub/snippet-pastebin/src/components/features/python-runner/TerminalInput.test.tsx:376:1] 373 | const user = userEvent.setup() 374 | 375 | render( 376 | { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:31:13) ● PythonTerminal › Rendering › should render terminal header TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:36:13) ● PythonTerminal › Rendering › should render terminal output area TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:41:13) ● PythonTerminal › Rendering › should have correct aria-label on output area TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:46:13) ● PythonTerminal › Rendering › should have region role on output area for accessibility TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:52:13) ● PythonTerminal › Rendering › should display empty state when no lines TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:58:13) ● PythonTerminal › Rendering › should display lines when they exist TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:71:13) ● PythonTerminal › Header Integration › should pass isRunning to TerminalHeader TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:83:13) ● PythonTerminal › Header Integration › should pass isInitializing to TerminalHeader TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:94:13) ● PythonTerminal › Header Integration › should pass waitingForInput to TerminalHeader TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:105:13) ● PythonTerminal › Header Integration › should call handleRun with code when run button is clicked TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:120:13) ● PythonTerminal › Input Handling › should show input form when waitingForInput is true TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:134:13) ● PythonTerminal › Input Handling › should hide input form when waitingForInput is false TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:144:13) ● PythonTerminal › Input Handling › should pass inputValue to TerminalInput TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:155:13) ● PythonTerminal › Input Handling › should call setInputValue when input changes TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:169:13) ● PythonTerminal › Input Handling › should call handleInputSubmit when form is submitted TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:186:13) ● PythonTerminal › Terminal Output › should render multiple lines TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:208:13) ● PythonTerminal › Terminal Output › should pass isRunning to TerminalOutput TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:220:13) ● PythonTerminal › Styling and Layout › should have correct flex layout classes TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:228:13) ● PythonTerminal › Styling and Layout › should have correct output area styling TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:234:13) ● PythonTerminal › Edge Cases › should handle undefined code gracefully TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:242:13) ● PythonTerminal › Edge Cases › should handle very long code strings TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:255:13) ● PythonTerminal › Edge Cases › should handle special characters in code TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:268:13) ● PythonTerminal › Edge Cases › should render large number of lines TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:284:13) ● PythonTerminal › State Management › should maintain state through multiple renders TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:292:34) ● PythonTerminal › State Management › should not call hooks multiple times unnecessarily TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:300:34) ● PythonTerminal › Accessibility › should have semantic HTML structure TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:311:13) ● PythonTerminal › Accessibility › should pass accessibility attributes to child components TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:317:13) ● PythonTerminal › Accessibility › should have proper heading hierarchy through TerminalHeader TypeError: terminalEndRef.current?.scrollIntoView is not a function 26 | 27 | useEffect(() => { > 28 | terminalEndRef.current?.scrollIntoView({ behavior: 'smooth' }) | ^ 29 | }, [lines]) 30 | 31 | return ( at src/components/features/python-runner/PythonTerminal.tsx:28:29 at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) at node_modules/react-dom/cjs/react-dom-client.development.js:17923:15 at flushActQueue (node_modules/react/cjs/react.development.js:590:34) at Object..process.env.NODE_ENV.exports.act (node_modules/react/cjs/react.development.js:884:10) at node_modules/@testing-library/react/dist/act-compat.js:47:25 at renderRoot (node_modules/@testing-library/react/dist/pure.js:180:26) at render (node_modules/@testing-library/react/dist/pure.js:271:10) at Object. (src/components/features/python-runner/PythonTerminal.test.tsx:324:13) FAIL src/components/features/python-runner/PythonOutput.test.tsx ● Console console.error Error: Network error at Object. (/Users/rmac/Documents/GitHub/snippet-pastebin/src/components/features/python-runner/PythonOutput.test.tsx:598:48) at Promise.then.completed (/Users/rmac/Documents/GitHub/snippet-pastebin/node_modules/jest-circus/build/utils.js:298:28) at new Promise () at callAsyncCircusFn (/Users/rmac/Documents/GitHub/snippet-pastebin/node_modules/jest-circus/build/utils.js:231:10) at _callCircusTest (/Users/rmac/Documents/GitHub/snippet-pastebin/node_modules/jest-circus/build/run.js:316:40) at async _runTest (/Users/rmac/Documents/GitHub/snippet-pastebin/node_modules/jest-circus/build/run.js:252:3) at async _runTestsForDescribeBlock (/Users/rmac/Documents/GitHub/snippet-pastebin/node_modules/jest-circus/build/run.js:126:9) at async _runTestsForDescribeBlock (/Users/rmac/Documents/GitHub/snippet-pastebin/node_modules/jest-circus/build/run.js:121:9) at async _runTestsForDescribeBlock (/Users/rmac/Documents/GitHub/snippet-pastebin/node_modules/jest-circus/build/run.js:121:9) at async run (/Users/rmac/Documents/GitHub/snippet-pastebin/node_modules/jest-circus/build/run.js:71:3) at async runAndTransformResultsToJestFormat (/Users/rmac/Documents/GitHub/snippet-pastebin/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21) at async jestAdapter (/Users/rmac/Documents/GitHub/snippet-pastebin/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19) at async runTestInternal (/Users/rmac/Documents/GitHub/snippet-pastebin/node_modules/jest-runner/build/runTest.js:367:16) at async runTest (/Users/rmac/Documents/GitHub/snippet-pastebin/node_modules/jest-runner/build/runTest.js:444:34) 65 | args[0].includes('Not implemented: HTMLFormElement.prototype.submit')) 66 | ) { > 67 | return | ^ 68 | } 69 | originalError.call(console, ...args) 70 | } at console.error (jest.setup.ts:67:23) at src/components/features/python-runner/PythonOutput.tsx:40:21 ● PythonOutput › Rendering › should have correct container classes expect(element).toHaveClass("flex flex-col h-full bg-card") Expected the element to have class: flex flex-col h-full bg-card Received: flex items-center justify-between p-4 border-b border-border bg-muted/30 48 | render() 49 | const container = screen.getByText('Python Output').closest('div').parentElement > 50 | expect(container).toHaveClass('flex', 'flex-col', 'h-full', 'bg-card') | ^ 51 | }) 52 | }) 53 | at Object. (src/components/features/python-runner/PythonOutput.test.tsx:50:25) ● PythonOutput › Run Button › should disable run button when initializing TestingLibraryElementError: Unable to find an accessible element with the role "button" and name `/run/i` Here are the accessible roles: heading: Name "Python Output":  -------------------------------------------------- button: Name "Loading...":  -------------------------------------------------- Ignored nodes: comments, script, style  
     Python Output    Loading  
      Loading...              Preparing Python environment 

  This takes a few seconds the first time while Pyodide downloads. 

        131 | render() 132 | > 133 | const runButton = screen.getByRole('button', { name: /run/i }) | ^ 134 | expect(runButton).toBeDisabled() 135 | }) 136 | at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19) at node_modules/@testing-library/dom/dist/query-helpers.js:76:38 at node_modules/@testing-library/dom/dist/query-helpers.js:52:17 at getByRole (node_modules/@testing-library/dom/dist/query-helpers.js:95:19) at Object. (src/components/features/python-runner/PythonOutput.test.tsx:133:32) ● PythonOutput › Error Handling › should handle runPythonCode throwing error expect(received).toBeInTheDocument() received value must be an HTMLElement or an SVGElement. Received has value: null Ignored nodes: comments, script, style    
     Python Output    Ready  
      Run         Error:   Runtime error          334 | 335 | await waitFor(() => { > 336 | expect(screen.queryByText('Click "Run" to execute the Python code')).toBeInTheDocument() | ^ 337 | }) 338 | }) 339 | }) at __EXTERNAL_MATCHER_TRAP__ (node_modules/expect/build/index.js:325:30) at Object.toBeInTheDocument (node_modules/expect/build/index.js:326:15) at src/components/features/python-runner/PythonOutput.test.tsx:336:78 at runWithExpensiveErrorDiagnosticsDisabled (node_modules/@testing-library/dom/dist/config.js:47:12) at checkCallback (node_modules/@testing-library/dom/dist/wait-for.js:124:77) at checkRealTimersCallback (node_modules/@testing-library/dom/dist/wait-for.js:118:16) at Timeout.task [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:520:19) ● PythonOutput › Output Display › should display output in pre-formatted block Unable to find an element with the text: Line 1 Line 2 Line 3 (normalized from 'Line 1 Line 2 Line 3'). This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style  
     Python Output    Ready  
      Run        Line 1 Line 2 Line 3        407 | await user.click(screen.getByRole('button', { name: /run/i })) 408 | > 409 | await waitFor(() => { | ^ 410 | expect(screen.getByText('Line 1\nLine 2\nLine 3')).toBeInTheDocument() 411 | }) 412 | }) at waitForWrapper (node_modules/@testing-library/dom/dist/wait-for.js:163:27) at Object. (src/components/features/python-runner/PythonOutput.test.tsx:409:20) ● PythonOutput › Toast Notifications › should show error toast when trying to run with init error expect(jest.fn()).toHaveBeenCalledWith(...expected) Expected: "Python environment failed to start. Retry to load it again." Number of calls: 0 614 | await user.click(screen.getByRole('button', { name: /run/i })) 615 | > 616 | expect(mockToast.error).toHaveBeenCalledWith( | ^ 617 | 'Python environment failed to start. Retry to load it again.' 618 | ) 619 | }) at Object. (src/components/features/python-runner/PythonOutput.test.tsx:616:31) ● PythonOutput › Toast Notifications › should show info toast when trying to run during initialization TestingLibraryElementError: Unable to find an accessible element with the role "button" and name `/run/i` Here are the accessible roles: heading: Name "Python Output":  -------------------------------------------------- button: Name "Loading...":  -------------------------------------------------- Ignored nodes: comments, script, style  
     Python Output    Loading  
      Loading...              Preparing Python environment 

  This takes a few seconds the first time while Pyodide downloads. 

        626 | render() 627 | > 628 | await user.click(screen.getByRole('button', { name: /run/i })) | ^ 629 | 630 | expect(mockToast.info).toHaveBeenCalledWith('Python environment is still loading...') 631 | }) at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19) at node_modules/@testing-library/dom/dist/query-helpers.js:76:38 at node_modules/@testing-library/dom/dist/query-helpers.js:52:17 at getByRole (node_modules/@testing-library/dom/dist/query-helpers.js:95:19) at Object. (src/components/features/python-runner/PythonOutput.test.tsx:628:31) FAIL src/components/features/python-runner/TerminalOutput.test.tsx ● TerminalOutput › Output Rendering › should preserve whitespace in output TestingLibraryElementError: Unable to find an element with the text: Line 1 Spaced (normalized from 'Line 1 Spaced'). This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style  
    Line 1 Spaced 
     72 | const lines = [{ type: 'output' as const, content: 'Line 1 Spaced', id: '1' }] 73 | render() > 74 | const output = screen.getByText('Line 1 Spaced') | ^ 75 | expect(output).toHaveClass('whitespace-pre-wrap') 76 | }) 77 | }) at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19) at node_modules/@testing-library/dom/dist/query-helpers.js:76:38 at node_modules/@testing-library/dom/dist/query-helpers.js:52:17 at getByText (node_modules/@testing-library/dom/dist/query-helpers.js:95:19) at Object. (src/components/features/python-runner/TerminalOutput.test.tsx:74:29) ● TerminalOutput › Error Rendering › should preserve whitespace in errors TestingLibraryElementError: Unable to find an element with the text: Error: Details (normalized from 'Error: Details'). This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style  
    Error: Details 
     104 | const lines = [{ type: 'error' as const, content: 'Error: Details', id: '1' }] 105 | render() > 106 | const error = screen.getByText('Error: Details') | ^ 107 | expect(error).toHaveClass('whitespace-pre-wrap') 108 | }) 109 | }) at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19) at node_modules/@testing-library/dom/dist/query-helpers.js:76:38 at node_modules/@testing-library/dom/dist/query-helpers.js:52:17 at getByText (node_modules/@testing-library/dom/dist/query-helpers.js:95:19) at Object. (src/components/features/python-runner/TerminalOutput.test.tsx:106:28) ● TerminalOutput › Input Prompt Rendering › should render input prompt line TestingLibraryElementError: Unable to find an element with the text: Enter your name: (normalized from 'Enter your name: '). This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style  
    Enter your name:  
     113 | const lines = [{ type: 'input-prompt' as const, content: 'Enter your name: ', id: '1' }] 114 | render() > 115 | expect(screen.getByText('Enter your name: ')).toBeInTheDocument() | ^ 116 | }) 117 | 118 | it('should render input prompt with correct styling', () => { at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19) at node_modules/@testing-library/dom/dist/query-helpers.js:76:38 at node_modules/@testing-library/dom/dist/query-helpers.js:52:17 at getByText (node_modules/@testing-library/dom/dist/query-helpers.js:95:19) at Object. (src/components/features/python-runner/TerminalOutput.test.tsx:115:21) ● TerminalOutput › Input Prompt Rendering › should render input prompt with correct styling TestingLibraryElementError: Unable to find an element with the text: Prompt: (normalized from 'Prompt: '). This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style  
    Prompt:  
     119 | const lines = [{ type: 'input-prompt' as const, content: 'Prompt: ', id: '1' }] 120 | render() > 121 | const prompt = screen.getByText('Prompt: ') | ^ 122 | expect(prompt).toHaveClass('text-accent', 'font-medium') 123 | }) 124 | at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19) at node_modules/@testing-library/dom/dist/query-helpers.js:76:38 at node_modules/@testing-library/dom/dist/query-helpers.js:52:17 at getByText (node_modules/@testing-library/dom/dist/query-helpers.js:95:19) at Object. (src/components/features/python-runner/TerminalOutput.test.tsx:121:29) ● TerminalOutput › Input Prompt Rendering › should preserve whitespace in input prompts TestingLibraryElementError: Unable to find an element with the text: Name: (normalized from 'Name: '). This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style  
    Name:  
     126 | const lines = [{ type: 'input-prompt' as const, content: 'Name: ', id: '1' }] 127 | render() > 128 | const prompt = screen.getByText('Name: ') | ^ 129 | expect(prompt).toHaveClass('whitespace-pre-wrap') 130 | }) 131 | }) at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19) at node_modules/@testing-library/dom/dist/query-helpers.js:76:38 at node_modules/@testing-library/dom/dist/query-helpers.js:52:17 at getByText (node_modules/@testing-library/dom/dist/query-helpers.js:95:19) at Object. (src/components/features/python-runner/TerminalOutput.test.tsx:128:29) ● TerminalOutput › Input Value Rendering › should preserve whitespace in input values TestingLibraryElementError: Unable to find an element with the text: > text with spaces (normalized from '> text with spaces'). This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style  
    > text with spaces 
     155 | const lines = [{ type: 'input-value' as const, content: 'text with spaces', id: '1' }] 156 | render() > 157 | const value = screen.getByText('> text with spaces') | ^ 158 | expect(value).toHaveClass('whitespace-pre-wrap') 159 | }) 160 | }) at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19) at node_modules/@testing-library/dom/dist/query-helpers.js:76:38 at node_modules/@testing-library/dom/dist/query-helpers.js:52:17 at getByText (node_modules/@testing-library/dom/dist/query-helpers.js:95:19) at Object. (src/components/features/python-runner/TerminalOutput.test.tsx:157:28) ● TerminalOutput › Mixed Output Types › should render all line types together TestingLibraryElementError: Unable to find an element with the text: Name: (normalized from 'Name: '). This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style  
    Name:  
    > John     Hello John     Note: something      181 | ] 182 | render() > 183 | expect(screen.getByText('Name: ')).toBeInTheDocument() | ^ 184 | expect(screen.getByText('> John')).toBeInTheDocument() 185 | expect(screen.getByText('Hello John')).toBeInTheDocument() 186 | expect(screen.getByText('Note: something')).toBeInTheDocument() at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19) at node_modules/@testing-library/dom/dist/query-helpers.js:76:38 at node_modules/@testing-library/dom/dist/query-helpers.js:52:17 at getByText (node_modules/@testing-library/dom/dist/query-helpers.js:95:19) at Object. (src/components/features/python-runner/TerminalOutput.test.tsx:183:21) ● TerminalOutput › Multiline Content › should handle multiline output content TestingLibraryElementError: Unable to find an element with the text: Line 1 Line 2 Line 3 (normalized from 'Line 1 Line 2 Line 3'). This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style  
    Line 1 Line 2 Line 3 
     194 | ] 195 | render() > 196 | const output = screen.getByText('Line 1\nLine 2\nLine 3') | ^ 197 | expect(output).toBeInTheDocument() 198 | }) 199 | at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19) at node_modules/@testing-library/dom/dist/query-helpers.js:76:38 at node_modules/@testing-library/dom/dist/query-helpers.js:52:17 at getByText (node_modules/@testing-library/dom/dist/query-helpers.js:95:19) at Object. (src/components/features/python-runner/TerminalOutput.test.tsx:196:29) ● TerminalOutput › Multiline Content › should preserve newlines with whitespace-pre-wrap TestingLibraryElementError: Unable to find an element with the text: First Indented Third (normalized from 'First Indented Third'). This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style  
    First Indented Third 
     203 | ] 204 | render() > 205 | const output = screen.getByText('First\n Indented\nThird') | ^ 206 | expect(output).toHaveClass('whitespace-pre-wrap') 207 | }) 208 | }) at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19) at node_modules/@testing-library/dom/dist/query-helpers.js:76:38 at node_modules/@testing-library/dom/dist/query-helpers.js:52:17 at getByText (node_modules/@testing-library/dom/dist/query-helpers.js:95:19) at Object. (src/components/features/python-runner/TerminalOutput.test.tsx:205:29) ● TerminalOutput › Empty Content › should handle empty string content TestingLibraryElementError: Unable to find an element by: [data-testid="terminal-output-area"] Ignored nodes: comments, script, style  
    
    212 | const lines = [{ type: 'output' as const, content: '', id: '1' }] 213 | render() > 214 | expect(screen.getByTestId('terminal-output-area') || true).toBeTruthy() | ^ 215 | }) 216 | 217 | it('should handle line with only whitespace', () => { at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19) at node_modules/@testing-library/dom/dist/query-helpers.js:76:38 at node_modules/@testing-library/dom/dist/query-helpers.js:52:17 at getByTestId (node_modules/@testing-library/dom/dist/query-helpers.js:95:19) at Object. (src/components/features/python-runner/TerminalOutput.test.tsx:214:21) ● TerminalOutput › Empty Content › should handle line with only whitespace TestingLibraryElementError: Unable to find an element with the text: (normalized from ' '). This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style  
      
     218 | const lines = [{ type: 'output' as const, content: ' ', id: '1' }] 219 | render() > 220 | const space = screen.getByText(' ') | ^ 221 | expect(space).toBeInTheDocument() 222 | }) 223 | }) at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19) at node_modules/@testing-library/dom/dist/query-helpers.js:76:38 at node_modules/@testing-library/dom/dist/query-helpers.js:52:17 at getByText (node_modules/@testing-library/dom/dist/query-helpers.js:95:19) at Object. (src/components/features/python-runner/TerminalOutput.test.tsx:220:28) ● TerminalOutput › Special Characters › should handle escape sequences TestingLibraryElementError: Unable to find an element with the text: Tab here (normalized from 'Tab here'). This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style  
    Tab here 
     307 | const lines = [{ type: 'output' as const, content: 'Tab\there', id: '1' }] 308 | render() > 309 | expect(screen.getByText('Tab\there')).toBeInTheDocument() | ^ 310 | }) 311 | }) 312 | at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19) at node_modules/@testing-library/dom/dist/query-helpers.js:76:38 at node_modules/@testing-library/dom/dist/query-helpers.js:52:17 at getByText (node_modules/@testing-library/dom/dist/query-helpers.js:95:19) at Object. (src/components/features/python-runner/TerminalOutput.test.tsx:309:21) -------------------------------------------|---------|----------|---------|---------|-------------------------------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s -------------------------------------------|---------|----------|---------|---------|-------------------------------------------- All files | 4.1 | 27.27 | 3.66 | 4.1 | src | 0 | 0 | 0 | 0 | test-utils.tsx | 0 | 0 | 0 | 0 | 1-26 src/app | 0 | 0 | 0 | 0 | PageLayout.tsx | 0 | 0 | 0 | 0 | 1-94 layout.tsx | 0 | 0 | 0 | 0 | 1-43 page.tsx | 0 | 0 | 0 | 0 | 1-29 providers.tsx | 0 | 0 | 0 | 0 | 1-41 src/app/atoms | 0 | 0 | 0 | 0 | page.tsx | 0 | 0 | 0 | 0 | 1-43 src/app/demo | 0 | 0 | 0 | 0 | page.tsx | 0 | 0 | 0 | 0 | 1-68 src/app/molecules | 0 | 0 | 0 | 0 | page.tsx | 0 | 0 | 0 | 0 | 1-43 src/app/organisms | 0 | 0 | 0 | 0 | page.tsx | 0 | 0 | 0 | 0 | 1-43 src/app/settings | 0 | 0 | 0 | 0 | page.tsx | 0 | 0 | 0 | 0 | 1-110 src/app/templates | 0 | 0 | 0 | 0 | page.tsx | 0 | 0 | 0 | 0 | 1-43 src/components | 0 | 0 | 0 | 0 | SnippetManager.tsx | 0 | 0 | 0 | 0 | 1 SnippetManagerRedux.tsx | 0 | 0 | 0 | 0 | 1-139 src/components/atoms | 0 | 0 | 0 | 0 | AtomsSection.tsx | 0 | 0 | 0 | 0 | 1-24 BadgesSection.tsx | 0 | 0 | 0 | 0 | 1-70 ButtonsSection.tsx | 0 | 0 | 0 | 0 | 1-107 ColorsSection.tsx | 0 | 0 | 0 | 0 | 1-73 IconsSection.tsx | 0 | 0 | 0 | 0 | 1-61 InputsSection.tsx | 0 | 0 | 0 | 0 | 1-64 TypographySection.tsx | 0 | 0 | 0 | 0 | 1-71 src/components/demo | 0 | 0 | 0 | 0 | ComponentShowcase.tsx | 0 | 0 | 0 | 0 | 1-88 DemoFeatureCards.tsx | 0 | 0 | 0 | 0 | 1-41 PersistenceExample.tsx | 0 | 0 | 0 | 0 | 1-89 PersistenceSettings.tsx | 0 | 0 | 0 | 0 | 1-121 demo-constants.ts | 0 | 0 | 0 | 0 | 1-112 src/components/error | 0 | 0 | 0 | 0 | AIErrorHelper.tsx | 0 | 0 | 0 | 0 | 1-108 ErrorFallback.tsx | 0 | 0 | 0 | 0 | 1-101 LoadingAnalysis.tsx | 0 | 0 | 0 | 0 | 1-29 MarkdownRenderer.tsx | 0 | 0 | 0 | 0 | 1-57 analyzeError.ts | 0 | 0 | 0 | 0 | 1-91 src/components/features/namespace-manager | 0 | 0 | 0 | 0 | CreateNamespaceDialog.tsx | 0 | 0 | 0 | 0 | 1-78 DeleteNamespaceDialog.tsx | 0 | 0 | 0 | 0 | 1-72 NamespaceSelector.tsx | 0 | 0 | 0 | 0 | 1-170 src/components/features/python-runner | 98.68 | 94.11 | 66.66 | 98.68 | PythonOutput.tsx | 97.61 | 90.69 | 66.66 | 97.61 | 82-84,87-89 PythonTerminal.tsx | 100 | 100 | 50 | 100 | TerminalHeader.tsx | 100 | 100 | 100 | 100 | TerminalInput.tsx | 100 | 100 | 50 | 100 | TerminalOutput.tsx | 100 | 100 | 100 | 100 | src/components/features/snippet-display | 0 | 0 | 0 | 0 | EmptyState.tsx | 0 | 0 | 0 | 0 | 1-157 SnippetCard.tsx | 0 | 0 | 0 | 0 | 1-169 SnippetCardActions.tsx | 0 | 0 | 0 | 0 | 1-130 SnippetCardHeader.tsx | 0 | 0 | 0 | 0 | 1-60 SnippetCodePreview.tsx | 0 | 0 | 0 | 0 | 1-21 src/components/features/snippet-editor | 0 | 0 | 0 | 0 | CodeEditorSection.tsx | 0 | 0 | 0 | 0 | 1-88 InputParameterItem.tsx | 0 | 0 | 0 | 0 | 1-127 InputParameterList.tsx | 0 | 0 | 0 | 0 | 1-81 MonacoEditor.tsx | 0 | 0 | 0 | 0 | 1-70 ReactPreview.tsx | 0 | 0 | 0 | 0 | 1-94 SnippetDialog.tsx | 0 | 0 | 0 | 0 | 1-131 SnippetFormFields.tsx | 0 | 0 | 0 | 0 | 1-87 SplitScreenEditor.tsx | 0 | 0 | 0 | 0 | 1-137 src/components/features/snippet-viewer | 0 | 0 | 0 | 0 | SnippetViewer.tsx | 0 | 0 | 0 | 0 | 1-77 SnippetViewerContent.tsx | 0 | 0 | 0 | 0 | 1-58 SnippetViewerHeader.tsx | 0 | 0 | 0 | 0 | 1-105 src/components/layout | 0 | 0 | 0 | 0 | AppStatusAlerts.tsx | 0 | 0 | 0 | 0 | 1-46 BackendIndicator.tsx | 0 | 0 | 0 | 0 | 1-46 src/components/layout/navigation | 0 | 0 | 0 | 0 | Navigation.tsx | 0 | 0 | 0 | 0 | 1-20 NavigationProvider.tsx | 0 | 0 | 0 | 0 | 1-12 NavigationSidebar.tsx | 0 | 0 | 0 | 0 | 1-159 navigation-context.tsx | 0 | 0 | 0 | 0 | 1-10 navigation-items.ts | 0 | 0 | 0 | 0 | 1-18 useNavigation.ts | 0 | 0 | 0 | 0 | 1-10 src/components/molecules | 0 | 0 | 0 | 0 | ContentPreviewCardsSection.tsx | 0 | 0 | 0 | 0 | 1-72 FormFieldsSection.tsx | 0 | 0 | 0 | 0 | 1-60 MoleculesSection.tsx | 0 | 0 | 0 | 0 | 1-24 SearchBarsSection.tsx | 0 | 0 | 0 | 0 | 1-59 SocialActionsSection.tsx | 0 | 0 | 0 | 0 | 1-59 StatusIndicatorsSection.tsx | 0 | 0 | 0 | 0 | 1-48 UserCardsSection.tsx | 0 | 0 | 0 | 0 | 1-55 src/components/organisms | 0 | 0 | 0 | 0 | OrganismsSection.tsx | 0 | 0 | 0 | 0 | 1-24 src/components/organisms/showcases | 0 | 0 | 0 | 0 | ContentGridsShowcase.tsx | 0 | 0 | 0 | 0 | 1-89 DataTablesShowcase.tsx | 0 | 0 | 0 | 0 | 1-79 FormsShowcase.tsx | 0 | 0 | 0 | 0 | 1-78 NavigationBarsShowcase.tsx | 0 | 0 | 0 | 0 | 1-119 SidebarNavigationShowcase.tsx | 0 | 0 | 0 | 0 | 1-75 TaskListsShowcase.tsx | 0 | 0 | 0 | 0 | 1-84 src/components/settings | 0 | 0 | 0 | 0 | BackendAutoConfigCard.tsx | 0 | 0 | 0 | 0 | 1-74 DatabaseActionsCard.tsx | 0 | 0 | 0 | 0 | 1-86 DatabaseStatsCard.tsx | 0 | 0 | 0 | 0 | 1-57 OpenAISettingsCard.tsx | 0 | 0 | 0 | 0 | 1-112 SchemaHealthCard.tsx | 0 | 0 | 0 | 0 | 1-69 StorageBackendCard.tsx | 0 | 0 | 0 | 0 | 1-158 StorageInfoCard.tsx | 0 | 0 | 0 | 0 | 1-42 src/components/snippet-manager | 0 | 0 | 0 | 0 | SelectionControls.tsx | 0 | 0 | 0 | 0 | 1-74 SnippetGrid.tsx | 0 | 0 | 0 | 0 | 1-50 SnippetToolbar.tsx | 0 | 0 | 0 | 0 | 1-144 src/components/templates | 0 | 0 | 0 | 0 | BlogTemplate.tsx | 0 | 0 | 0 | 0 | 1-102 DashboardTemplate.tsx | 0 | 0 | 0 | 0 | 1-164 EcommerceTemplate.tsx | 0 | 0 | 0 | 0 | 1-97 LandingPageTemplate.tsx | 0 | 0 | 0 | 0 | 1-108 TemplatesSection.tsx | 0 | 0 | 0 | 0 | 1-93 src/components/ui | 2.27 | 2.32 | 0 | 2.27 | accordion.tsx | 0 | 0 | 0 | 0 | 1-134 alert-dialog.tsx | 0 | 0 | 0 | 0 | 1-233 alert.tsx | 0 | 0 | 0 | 0 | 1-56 aspect-ratio.tsx | 0 | 0 | 0 | 0 | 1-27 avatar.tsx | 0 | 0 | 0 | 0 | 1-65 badge.tsx | 0 | 0 | 0 | 0 | 1-26 bottom-navigation.tsx | 0 | 0 | 0 | 0 | 1-149 button.tsx | 73.68 | 33.33 | 0 | 73.68 | 5-19 card.tsx | 100 | 100 | 100 | 100 | carousel.tsx | 0 | 0 | 0 | 0 | 1-241 chart.tsx | 0 | 0 | 0 | 0 | 1-346 checkbox.tsx | 0 | 0 | 0 | 0 | 1-32 chip.tsx | 0 | 0 | 0 | 0 | 1-43 collapsible.tsx | 0 | 0 | 0 | 0 | 1-90 dialog.tsx | 0 | 0 | 0 | 0 | 1-173 dropdown-menu.tsx | 0 | 0 | 0 | 0 | 1-279 fab.tsx | 0 | 0 | 0 | 0 | 1-172 form.tsx | 0 | 0 | 0 | 0 | 1-151 input.tsx | 100 | 100 | 100 | 100 | label.tsx | 0 | 0 | 0 | 0 | 1-14 pagination.tsx | 0 | 0 | 0 | 0 | 1-125 popover.tsx | 0 | 0 | 0 | 0 | 1-124 progress.tsx | 0 | 0 | 0 | 0 | 1-35 radio-group.tsx | 0 | 0 | 0 | 0 | 1-51 resizable.tsx | 0 | 0 | 0 | 0 | 1-54 select.tsx | 0 | 0 | 0 | 0 | 1-129 separator.tsx | 0 | 0 | 0 | 0 | 1-24 sheet.tsx | 0 | 0 | 0 | 0 | 1-241 sidebar-context.tsx | 0 | 0 | 0 | 0 | 1-132 sidebar-core.tsx | 0 | 0 | 0 | 0 | 1-181 sidebar-parts.tsx | 0 | 0 | 0 | 0 | 1-81 sidebar.tsx | 0 | 0 | 0 | 0 | 1-23 skeleton.tsx | 0 | 0 | 0 | 0 | 1-14 slider.tsx | 0 | 0 | 0 | 0 | 1-49 sonner.tsx | 0 | 0 | 0 | 0 | 1-23 switch.tsx | 0 | 0 | 0 | 0 | 1-35 table.tsx | 0 | 0 | 0 | 0 | 1-114 tabs.tsx | 0 | 0 | 0 | 0 | 1-95 textarea.tsx | 0 | 0 | 0 | 0 | 1-24 toggle-group.tsx | 0 | 0 | 0 | 0 | 1-142 toggle.tsx | 0 | 0 | 0 | 0 | 1-78 tooltip.tsx | 0 | 0 | 0 | 0 | 1-99 top-app-bar.tsx | 0 | 0 | 0 | 0 | 1-184 src/components/ui/sidebar-menu | 0 | 0 | 0 | 0 | SidebarGroupAction.tsx | 0 | 0 | 0 | 0 | 1-33 SidebarGroupContent.tsx | 0 | 0 | 0 | 0 | 1-18 SidebarGroupLabel.tsx | 0 | 0 | 0 | 0 | 1-30 SidebarMenu.tsx | 0 | 0 | 0 | 0 | 1-15 SidebarMenuAction.tsx | 0 | 0 | 0 | 0 | 1-42 SidebarMenuBadge.tsx | 0 | 0 | 0 | 0 | 1-26 SidebarMenuButton.tsx | 0 | 0 | 0 | 0 | 1-89 SidebarMenuItem.tsx | 0 | 0 | 0 | 0 | 1-15 SidebarMenuSkeleton.tsx | 0 | 0 | 0 | 0 | 1-41 SidebarMenuSub.tsx | 0 | 0 | 0 | 0 | 1-19 SidebarMenuSubButton.tsx | 0 | 0 | 0 | 0 | 1-45 SidebarMenuSubItem.tsx | 0 | 0 | 0 | 0 | 1-18 src/hooks | 1.26 | 0 | 0 | 1.26 | use-mobile.ts | 0 | 0 | 0 | 0 | 1-21 useDatabaseOperations.ts | 0 | 0 | 0 | 0 | 1-133 usePythonTerminal.ts | 10.67 | 100 | 0 | 10.67 | 12-103 useSettingsState.ts | 0 | 0 | 0 | 0 | 1-82 useSnippetForm.ts | 0 | 0 | 0 | 0 | 1-115 useSnippetManager.ts | 0 | 0 | 0 | 0 | 1-246 useStorageConfig.ts | 0 | 0 | 0 | 0 | 1-86 useStorageMigration.ts | 0 | 0 | 0 | 0 | 1-84 src/lib | 3.33 | 10 | 5.26 | 3.33 | component-code-snippets.ts | 0 | 0 | 0 | 0 | 1-9 config.ts | 0 | 0 | 0 | 0 | 1-24 db.ts | 0 | 0 | 0 | 0 | 1-223 indexeddb-storage.ts | 0 | 0 | 0 | 0 | 1-241 monaco-config.ts | 0 | 0 | 0 | 0 | 1-44 parse-parameters.ts | 0 | 0 | 0 | 0 | 1-28 pyodide-runner.ts | 9.7 | 100 | 0 | 9.7 | 8-42,45-93,102-223,226-227,230-231,234-237 react-transform.ts | 0 | 0 | 0 | 0 | 1-155 storage.ts | 0 | 0 | 0 | 0 | 1-297 types.ts | 0 | 0 | 0 | 0 | 1-43 utils.ts | 46.8 | 100 | 25 | 46.8 | 13-18,24-40,46-47 src/lib/snippets | 0 | 0 | 0 | 0 | atoms.ts | 0 | 0 | 0 | 0 | 1-8 index.ts | 0 | 0 | 0 | 0 | 1-8 molecules.ts | 0 | 0 | 0 | 0 | 1-8 organisms.ts | 0 | 0 | 0 | 0 | 1-8 templates.ts | 0 | 0 | 0 | 0 | 1-8 src/store | 0 | 0 | 0 | 0 | exports.ts | 0 | 0 | 0 | 0 | 1-8 hooks.ts | 0 | 0 | 0 | 0 | 1-7 index.ts | 0 | 0 | 0 | 0 | 1-23 selectors.ts | 0 | 0 | 0 | 0 | 1-43 src/store/hooks | 0 | 0 | 0 | 0 | usePersistenceConfig.ts | 0 | 0 | 0 | 0 | 1-56 src/store/middleware | 0 | 0 | 0 | 0 | index.ts | 0 | 0 | 0 | 0 | 1-15 persistenceConfig.ts | 0 | 0 | 0 | 0 | 1-75 persistenceMiddleware.ts | 0 | 0 | 0 | 0 | 1-79 src/store/slices | 0 | 0 | 0 | 0 | namespacesSlice.ts | 0 | 0 | 0 | 0 | 1-95 snippetsSlice.ts | 0 | 0 | 0 | 0 | 1-176 uiSlice.ts | 0 | 0 | 0 | 0 | 1-54 -------------------------------------------|---------|----------|---------|---------|-------------------------------------------- Snapshot Summary › 4 snapshot files obsolete from 4 test suites. To remove them all, run `npm test -- -u`. ↳ • src/components/ui/__snapshots__/aspect-ratio.test.tsx.snap • src/components/ui/__snapshots__/badge.test.tsx.snap • src/components/ui/__snapshots__/separator.test.tsx.snap • src/components/ui/__snapshots__/sonner.test.tsx.snap Test Suites: 4 failed, 1 passed, 5 total Tests: 47 failed, 116 passed, 163 total Snapshots: 4 files obsolete, 0 total Time: 5.694 s Ran all test suites matching /python-runner/i.