From 2a792b7e61891d0179cbe5b1e418b4148bedcfe6 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 18 Feb 2026 18:41:07 +0000 Subject: [PATCH] fix: Update delete confirmation dialog behavior in CredentialManager component --- frontend/src/components/CredentialManager.tsx | 2 +- .../__tests__/CredentialManager.test.tsx | 30 ++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/CredentialManager.tsx b/frontend/src/components/CredentialManager.tsx index 1e2c4c5f..becfcfb4 100644 --- a/frontend/src/components/CredentialManager.tsx +++ b/frontend/src/components/CredentialManager.tsx @@ -271,7 +271,7 @@ export default function CredentialManager({ {/* Delete Confirmation Dialog */} {deleteConfirm !== null && ( - setDeleteConfirm(null)}> + setDeleteConfirm(null)}> {t('credentials.deleteConfirm', 'Delete Credential?')} diff --git a/frontend/src/components/__tests__/CredentialManager.test.tsx b/frontend/src/components/__tests__/CredentialManager.test.tsx index 4b22f0a9..d2bac91d 100644 --- a/frontend/src/components/__tests__/CredentialManager.test.tsx +++ b/frontend/src/components/__tests__/CredentialManager.test.tsx @@ -1,5 +1,5 @@ import { describe, it, expect, vi, beforeEach } from 'vitest' -import { render, screen, waitFor } from '@testing-library/react' +import { render, screen, waitFor, within } from '@testing-library/react' import userEvent from '@testing-library/user-event' import { QueryClient, QueryClientProvider, type UseMutationResult } from '@tanstack/react-query' import CredentialManager from '../CredentialManager' @@ -325,6 +325,34 @@ describe('CredentialManager', () => { expect(screen.getByRole('button', { name: 'Delete' })).toBeInTheDocument() }) + it('closes delete confirmation dialog via dialog close button', async () => { + const user = userEvent.setup() + + renderWithClient( + + ) + + const credentialRow = screen.getByText('Main Zone').closest('tr') + expect(credentialRow).not.toBeNull() + + const actionButtons = credentialRow?.querySelectorAll('button') + expect(actionButtons?.[2]).toBeDefined() + + await user.click(actionButtons![2]) + + const deleteDialog = await screen.findByRole('dialog', { name: 'Delete Credential?' }) + await user.click(within(deleteDialog).getByRole('button', { name: 'Close' })) + + await waitFor(() => { + expect(screen.queryByRole('dialog', { name: 'Delete Credential?' })).not.toBeInTheDocument() + }) + }) + // 5. Validation - Required Fields it('validates required fields on add', async () => { const user = userEvent.setup()