import { fireEvent, render, screen } from '@testing-library/react' import type { ComponentProps } from 'react' import { describe, expect, it, vi } from 'vitest' import TerminalContextMenu from '../../src/components/terminal/TerminalContextMenu' function renderMenu(overrides: Partial> = {}) { const props: ComponentProps = { position: { x: 20, y: 20 }, hasSelection: false, canSplit: true, canClosePane: true, canCloseTerminal: true, closeLabel: '关闭当前分屏', maximized: false, onClose: vi.fn(), onCopy: vi.fn(), onPaste: vi.fn(), onSelectAll: vi.fn(), onClear: vi.fn(), onSplitRight: vi.fn(), onSplitDown: vi.fn(), onToggleMaximize: vi.fn(), onClosePane: vi.fn(), ...overrides, } render() return props } describe('TerminalContextMenu', () => { it('provides standard clipboard and pane actions without browser debug entries', () => { const props = renderMenu() expect(screen.getByRole('menuitem', { name: '复制' })).toBeDisabled() fireEvent.click(screen.getByRole('menuitem', { name: '粘贴' })) expect(props.onPaste).toHaveBeenCalled() expect(screen.queryByText('Reload')).not.toBeInTheDocument() expect(screen.queryByText('Inspect Element')).not.toBeInTheDocument() }) it('exposes right/down split and the context-aware close action', () => { const props = renderMenu({ hasSelection: true, closeLabel: '关闭当前终端标签' }) fireEvent.click(screen.getByRole('menuitem', { name: '向右分屏' })) expect(props.onSplitRight).toHaveBeenCalled() renderMenu({ closeLabel: '关闭当前终端标签' }) expect(screen.getAllByRole('menuitem', { name: '关闭当前终端标签' })[0]).toBeEnabled() }) })