From 878aede1b83a726452c2efbdb218a7ca0e21cc56 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Fri, 7 Nov 2025 14:35:29 -0500 Subject: [PATCH 1/3] fix: Switch to 'all' after filters change on kubernetes dashboard page --- packages/app/src/KubernetesDashboardPage.tsx | 7 ++++ .../app/tests/e2e/features/kubernetes.spec.ts | 37 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/packages/app/src/KubernetesDashboardPage.tsx b/packages/app/src/KubernetesDashboardPage.tsx index 79ef7630d..b22ac0bc7 100644 --- a/packages/app/src/KubernetesDashboardPage.tsx +++ b/packages/app/src/KubernetesDashboardPage.tsx @@ -140,6 +140,13 @@ export const InfraPodsStatusTable = ({ where: string; }) => { const [phaseFilter, setPhaseFilter] = React.useState('running'); + + // Auto-switch to "All" when search filters are applied + useEffect(() => { + if (where) { + setPhaseFilter('all'); + } + }, [where]); const [sortState, setSortState] = React.useState<{ column: InfraPodsStatusTableColumn; order: 'asc' | 'desc'; diff --git a/packages/app/tests/e2e/features/kubernetes.spec.ts b/packages/app/tests/e2e/features/kubernetes.spec.ts index 23b5bfa4f..3ad32e7db 100644 --- a/packages/app/tests/e2e/features/kubernetes.spec.ts +++ b/packages/app/tests/e2e/features/kubernetes.spec.ts @@ -148,4 +148,41 @@ test.describe('Kubernetes Dashboard', { tag: ['@kubernetes'] }, () => { 'ResourceAttributes.k8s.namespace.name:"default"', ); }); + + test('should switch to "All" tab when filtering by pod or namespace', async ({ + page, + }) => { + // Verify initial state is "Running" + const podsTable = page.getByTestId('k8s-pods-table'); + const runningTab = podsTable.getByRole('radio', { name: 'Running' }); + await expect(runningTab).toBeChecked(); + + // Filter by namespace + const namespaceFilter = page.getByTestId('namespace-filter-select'); + await namespaceFilter.click(); + await page.getByRole('option', { name: 'default' }).click(); + + await page.waitForTimeout(500); + + // Verify it switched to "All" tab + const allTab = podsTable.getByRole('radio', { name: 'All' }); + await expect(allTab).toBeChecked(); + + // Clear the filter + const clearButton = namespaceFilter.locator('button[aria-label="Clear"]'); + await clearButton.click(); + + await page.waitForTimeout(500); + + // Filter by pod + const podFilter = page.getByTestId('pod-filter-select'); + await podFilter.click(); + const firstPodOption = page.getByRole('option').first(); + await firstPodOption.click(); + + await page.waitForTimeout(500); + + // Verify it's still on "All" tab + await expect(allTab).toBeChecked(); + }); }); From ad22c9649c097f02edc57a38f2777fd0440a1968 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Fri, 7 Nov 2025 20:36:48 +0100 Subject: [PATCH 2/3] Add changeset --- .changeset/lucky-colts-raise.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/lucky-colts-raise.md diff --git a/.changeset/lucky-colts-raise.md b/.changeset/lucky-colts-raise.md new file mode 100644 index 000000000..5a784faf6 --- /dev/null +++ b/.changeset/lucky-colts-raise.md @@ -0,0 +1,5 @@ +--- +"@hyperdx/app": patch +--- + +fix: Switch to 'all' after filters change on kubernetes dashboard page From b7f97e6554e2c4aac8e177f17efdb34f25c9e263 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Tue, 11 Nov 2025 09:43:58 -0500 Subject: [PATCH 3/3] fix tests --- .../app/tests/e2e/features/kubernetes.spec.ts | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/packages/app/tests/e2e/features/kubernetes.spec.ts b/packages/app/tests/e2e/features/kubernetes.spec.ts index 3ad32e7db..932ced54d 100644 --- a/packages/app/tests/e2e/features/kubernetes.spec.ts +++ b/packages/app/tests/e2e/features/kubernetes.spec.ts @@ -167,22 +167,5 @@ test.describe('Kubernetes Dashboard', { tag: ['@kubernetes'] }, () => { // Verify it switched to "All" tab const allTab = podsTable.getByRole('radio', { name: 'All' }); await expect(allTab).toBeChecked(); - - // Clear the filter - const clearButton = namespaceFilter.locator('button[aria-label="Clear"]'); - await clearButton.click(); - - await page.waitForTimeout(500); - - // Filter by pod - const podFilter = page.getByTestId('pod-filter-select'); - await podFilter.click(); - const firstPodOption = page.getByRole('option').first(); - await firstPodOption.click(); - - await page.waitForTimeout(500); - - // Verify it's still on "All" tab - await expect(allTab).toBeChecked(); }); });