diff --git a/frontend/src/components/modals/PendingDevicesModal.tsx b/frontend/src/components/modals/PendingDevicesModal.tsx index 1f770ed..39aa1fb 100644 --- a/frontend/src/components/modals/PendingDevicesModal.tsx +++ b/frontend/src/components/modals/PendingDevicesModal.tsx @@ -3,7 +3,7 @@ import { Globe, Router, Server, Layers, Box, Container, HardDrive, Cpu, Wifi, Circle, Network, Search, RefreshCw, X, CheckCircle2, EyeOff, Trash2, Loader2, } from 'lucide-react' -import { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/ui/dialog' +import { Dialog, DialogClose, DialogContent, DialogHeader, DialogTitle } from '@/components/ui/dialog' import { scanApi } from '@/api/client' import { useCanvasStore } from '@/stores/canvasStore' import { toast } from 'sonner' @@ -408,9 +408,20 @@ export function PendingDevicesModal({ open, onClose, highlightId, initialStatus )} - + diff --git a/frontend/src/components/modals/__tests__/PendingDevicesModal.test.tsx b/frontend/src/components/modals/__tests__/PendingDevicesModal.test.tsx index 4cbcf97..8e99fd4 100644 --- a/frontend/src/components/modals/__tests__/PendingDevicesModal.test.tsx +++ b/frontend/src/components/modals/__tests__/PendingDevicesModal.test.tsx @@ -99,6 +99,14 @@ describe('PendingDevicesModal', () => { expect(screen.getByText('living-room-bulb')).toBeInTheDocument() }) + it('closes via the X button (routes through DialogClose, not a raw onClick)', async () => { + const onClose = vi.fn() + render() + await waitFor(() => expect(screen.getByTestId('pending-card-dev-a')).toBeInTheDocument()) + fireEvent.click(screen.getByRole('button', { name: 'Close' })) + expect(onClose).toHaveBeenCalledTimes(1) + }) + it('shows source chip ZIGBEE for zigbee device', async () => { render() await waitFor(() => expect(screen.getByTestId('pending-card-dev-a')).toBeInTheDocument())