diff --git a/clients/web/src/components/screens/HistoryScreen/HistoryScreen.stories.tsx b/clients/web/src/components/screens/HistoryScreen/HistoryScreen.stories.tsx index 592ffbad..24f745ed 100644 --- a/clients/web/src/components/screens/HistoryScreen/HistoryScreen.stories.tsx +++ b/clients/web/src/components/screens/HistoryScreen/HistoryScreen.stories.tsx @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import type { MessageEntry } from "../../../../../../core/mcp/types.js"; -import { fn } from "storybook/test"; +import { expect, fn, screen, userEvent, within } from "storybook/test"; import { HistoryScreen } from "./HistoryScreen"; const meta: Meta = { @@ -124,3 +124,25 @@ export const Empty: Story = { entries: [], }, }; + +export const MethodFilterClearedOnClearAll: Story = { + args: { + entries: sampleEntries, + pinnedIds: new Set(), + }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + const filter = canvas.getByPlaceholderText( + "All methods", + ) as HTMLInputElement; + + await userEvent.click(filter); + await userEvent.click( + await screen.findByRole("option", { name: "tools/call" }), + ); + await expect(filter).toHaveValue("tools/call"); + + await userEvent.click(canvas.getByRole("button", { name: /^clear$/i })); + await expect(filter).toHaveValue(""); + }, +}; diff --git a/clients/web/src/components/screens/HistoryScreen/HistoryScreen.tsx b/clients/web/src/components/screens/HistoryScreen/HistoryScreen.tsx index 1e1a499e..26aff28e 100644 --- a/clients/web/src/components/screens/HistoryScreen/HistoryScreen.tsx +++ b/clients/web/src/components/screens/HistoryScreen/HistoryScreen.tsx @@ -1,4 +1,4 @@ -import { useMemo, useState } from "react"; +import { useCallback, useMemo, useState } from "react"; import { Card, Flex, Stack } from "@mantine/core"; import type { MessageEntry, MessageMethod } from "@inspector/core/mcp/types.js"; import { HistoryControls } from "../../groups/HistoryControls/HistoryControls"; @@ -47,6 +47,11 @@ export function HistoryScreen({ [entries], ); + const handleClearAll = useCallback(() => { + setMethodFilter(undefined); + onClearAll(); + }, [onClearAll]); + return ( @@ -65,7 +70,7 @@ export function HistoryScreen({ pinnedIds={pinnedIds} searchText={searchText} methodFilter={methodFilter} - onClearAll={onClearAll} + onClearAll={handleClearAll} onExport={onExport} onReplay={onReplay} onTogglePin={onTogglePin}