import { fireEvent, render, screen } from '@testing-library/react' import { describe, expect, it, vi } from 'vitest' import { TabContextMenu } from '../../src/components/layout/tabbar/TabContextMenu' import { tabSupportsReconnect } from '../../src/utils/tabReconnect' describe('TabContextMenu', () => { it('lists SFTP, clone, reconnect, then close actions', () => { const onReconnect = vi.fn() render( ) const labels = screen.getAllByRole('button').map((button) => button.textContent) expect(labels.slice(0, 4)).toEqual(['打开 SFTP', '克隆标签', '重新连接', '关闭']) fireEvent.click(screen.getByRole('button', { name: '重新连接' })) expect(onReconnect).toHaveBeenCalledTimes(1) }) it('offers reconnect for SSH / SFTP / desktop tabs only', () => { expect(tabSupportsReconnect({ type: 'terminal' })).toBe(true) expect(tabSupportsReconnect({ type: 'sftp' })).toBe(true) expect(tabSupportsReconnect({ type: 'rdp' })).toBe(true) expect(tabSupportsReconnect({ type: 'welcome' })).toBe(false) expect(tabSupportsReconnect({ type: 'settings' })).toBe(false) }) })