diff --git a/changes/50683-policy-automations-table-multi-host-rows.md b/changes/50683-policy-automations-table-multi-host-rows.md new file mode 100644 index 0000000000..dfa2b52ce5 --- /dev/null +++ b/changes/50683-policy-automations-table-multi-host-rows.md @@ -0,0 +1 @@ +- Fixed the policy automations table showing only one host for automation runs that cover multiple hosts. diff --git a/frontend/pages/policies/details/components/PolicyAutomationsActivitiesTable/PolicyAutomationsActivitiesTable.tests.tsx b/frontend/pages/policies/details/components/PolicyAutomationsActivitiesTable/PolicyAutomationsActivitiesTable.tests.tsx index 847819adbe..a2ffbd1c89 100644 --- a/frontend/pages/policies/details/components/PolicyAutomationsActivitiesTable/PolicyAutomationsActivitiesTable.tests.tsx +++ b/frontend/pages/policies/details/components/PolicyAutomationsActivitiesTable/PolicyAutomationsActivitiesTable.tests.tsx @@ -155,6 +155,40 @@ describe("PolicyAutomationsActivitiesTable", () => { expect(screen.getByPlaceholderText("Search hosts")).toBeInTheDocument(); }); + it("renders one row per host for a batch activity sharing an activity id", async () => { + (policiesAPI.getAutomationActivities as jest.Mock).mockResolvedValue( + mockResponse([ + mockActivity({ + id: 41, + type: ActivityType.RanAutomationWebhook, + details: { policy_id: 123 }, + host_id: 1, + host_display_name: "batch-host-a", + }), + mockActivity({ + id: 41, + type: ActivityType.RanAutomationWebhook, + details: { policy_id: 123 }, + host_id: 2, + host_display_name: "batch-host-b", + }), + ]) + ); + + render( + + ); + + // Both (activity, host) rows must render even though they share id 41. + expect(await screen.findByText("batch-host-a")).toBeInTheDocument(); + expect(screen.getByText("batch-host-b")).toBeInTheDocument(); + expect(screen.getByText("2 runs")).toBeInTheDocument(); + }); + it("shows the Reset policy button only when allowed", async () => { (policiesAPI.getAutomationActivities as jest.Mock).mockResolvedValue( mockResponse([mockActivity()], 1) diff --git a/frontend/pages/policies/details/components/PolicyAutomationsActivitiesTable/PolicyAutomationsActivitiesTable.tsx b/frontend/pages/policies/details/components/PolicyAutomationsActivitiesTable/PolicyAutomationsActivitiesTable.tsx index f25b378a12..f99faa956e 100644 --- a/frontend/pages/policies/details/components/PolicyAutomationsActivitiesTable/PolicyAutomationsActivitiesTable.tsx +++ b/frontend/pages/policies/details/components/PolicyAutomationsActivitiesTable/PolicyAutomationsActivitiesTable.tsx @@ -259,6 +259,13 @@ const PolicyAutomationsActivitiesTable = ({ + `${row.id}-${row.host_id}` + } isLoading={isLoading} manualSortBy pageIndex={page}