Files
opsxshell/test/components/ShellClosedOverlay.test.tsx

46 lines
1.8 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { fireEvent, render, screen } from '@testing-library/react'
import { describe, expect, it, vi } from 'vitest'
import TerminalOverlay, { ShellClosedOverlay } from '../../src/components/terminal/TerminalOverlay'
describe('remote shell close recovery', () => {
it('explains remote TMOUT without claiming the pooled SSH connection is dead', () => {
const reopen = vi.fn()
render(<ShellClosedOverlay reason="shell.idleTimeout" idleTimeout onReopen={reopen} />)
expect(screen.getByText('空闲超时,Shell 已退出')).toBeVisible()
expect(screen.getByText('远端 Shell 因空闲超时退出(TMOUT)')).toBeVisible()
expect(screen.getByText(/SSH 连接仍可用/)).toBeVisible()
fireEvent.click(screen.getByRole('button', { name: '重新打开 Shell' }))
expect(reopen).toHaveBeenCalledTimes(1)
})
it('local shell exit never mentions the SSH connection', () => {
const reopen = vi.fn()
render(<ShellClosedOverlay reason="本地 Shell 已退出" idleTimeout={false} isLocal onReopen={reopen} />)
expect(screen.getByText('Shell 已退出')).toBeVisible()
expect(screen.getByText('重新打开 Shell 即可继续使用本地终端')).toBeVisible()
expect(screen.queryByText(/SSH 连接仍可用/)).toBeNull()
})
})
describe('connection disconnect overlay', () => {
it('explains keepalive failure without calling it a user close', () => {
render(
<TerminalOverlay
connectionState="disconnected"
statusMessage=""
showSuspendedOverlay={false}
needsReconnect
disconnectKind="keepalive"
onReconnect={vi.fn()}
onResume={vi.fn()}
/>
)
expect(screen.getByText('心跳失败,连接已断开')).toBeVisible()
expect(screen.getByText(/不会向 Shell 发送按键/)).toBeVisible()
expect(screen.queryByText(/closed by user/i)).toBeNull()
})
})