diff --git a/app/src/components/AppConsole/AppConsole.test.tsx b/app/src/components/AppConsole/AppConsole.test.tsx index c6138d2..33f8d0e 100644 --- a/app/src/components/AppConsole/AppConsole.test.tsx +++ b/app/src/components/AppConsole/AppConsole.test.tsx @@ -3,12 +3,15 @@ import { act, fireEvent, render, screen, waitFor } from "@testing-library/react" import { beforeEach, describe, expect, it, vi } from "vitest"; import { useEffect, useMemo, useRef } from "react"; -import type { ConsoleCell, PersistedConsoleCellRow } from "./model"; +import type { PersistedConsoleCellRow } from "./model"; +const ALT = 1 << 9; const SHIFT = 1 << 10; const ENTER = 1; const UP = 2; const DOWN = 3; +const KEY_N = 4; +const KEY_P = 5; let storedSessionId = "session-1"; let storedCells: PersistedConsoleCellRow[] = []; @@ -166,6 +169,7 @@ vi.mock("../Actions/Editor", () => ({ onMount?: (editor: any, monaco: any) => void; }) => { const commandsRef = useRef(new Map void>()); + const editorRef = useMemo( () => ({ addCommand: (key: number, handler: () => void) => { @@ -178,14 +182,19 @@ vi.mock("../Actions/Editor", () => ({ useEffect(() => { onMount?.(editorRef, { - KeyMod: { Shift: SHIFT }, + KeyMod: { Alt: ALT, Shift: SHIFT }, KeyCode: { Enter: ENTER, UpArrow: UP, DownArrow: DOWN, + KeyN: KEY_N, + KeyP: KEY_P, }, }); - }, [editorRef, onMount]); + // Monaco only invokes the consumer mount callback once per editor instance. + // Keep the mock aligned so closure-related regressions are exercised. + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); return (