diff --git a/web/app/components/snippets/components/__tests__/workflow-panel.spec.tsx b/web/app/components/snippets/components/__tests__/workflow-panel.spec.tsx
new file mode 100644
index 00000000000..e897216e6a3
--- /dev/null
+++ b/web/app/components/snippets/components/__tests__/workflow-panel.spec.tsx
@@ -0,0 +1,52 @@
+import type { PanelProps } from '@/app/components/workflow/panel'
+import type { SnippetInputField } from '@/models/snippet'
+import { render, waitFor } from '@testing-library/react'
+import SnippetWorkflowPanel from '../workflow-panel'
+
+let capturedPanelProps: PanelProps | null = null
+
+vi.mock('@/app/components/workflow/panel', () => ({
+ default: (props: PanelProps) => {
+ capturedPanelProps = props
+ return
{props.components?.left}
+ },
+}))
+
+const defaultFields: SnippetInputField[] = []
+
+describe('SnippetWorkflowPanel', () => {
+ beforeEach(() => {
+ vi.clearAllMocks()
+ capturedPanelProps = null
+ })
+
+ // Verifies snippet panel wires version history support into the shared workflow panel.
+ describe('Rendering', () => {
+ it('should pass snippet version history panel props to the shared workflow panel', async () => {
+ render(
+ ,
+ )
+
+ await waitFor(() => {
+ expect(capturedPanelProps?.versionHistoryPanelProps?.getVersionListUrl).toBe('/snippets/snippet-1/workflows')
+ expect(capturedPanelProps?.versionHistoryPanelProps?.deleteVersionUrl?.('version-1')).toBe('/snippets/snippet-1/workflows/version-1')
+ expect(capturedPanelProps?.versionHistoryPanelProps?.restoreVersionUrl('version-1')).toBe('/snippets/snippet-1/workflows/version-1/restore')
+ expect(capturedPanelProps?.versionHistoryPanelProps?.updateVersionUrl?.('version-1')).toBe('/snippets/snippet-1/workflows/version-1')
+ expect(capturedPanelProps?.versionHistoryPanelProps?.latestVersionId).toBe('')
+ })
+ })
+ })
+})
diff --git a/web/app/components/snippets/components/snippet-children.tsx b/web/app/components/snippets/components/snippet-children.tsx
index 1c3728290ff..b812e56a714 100644
--- a/web/app/components/snippets/components/snippet-children.tsx
+++ b/web/app/components/snippets/components/snippet-children.tsx
@@ -56,6 +56,7 @@ const SnippetChildren = ({
/>
{
+ const versionHistoryPanelProps = useMemo(() => {
+ return {
+ getVersionListUrl: `/snippets/${snippetId}/workflows`,
+ deleteVersionUrl: (versionId: string) => `/snippets/${snippetId}/workflows/${versionId}`,
+ restoreVersionUrl: (versionId: string) => `/snippets/${snippetId}/workflows/${versionId}/restore`,
+ updateVersionUrl: (versionId: string) => `/snippets/${snippetId}/workflows/${versionId}`,
+ latestVersionId: '',
+ }
+ }, [snippetId])
+
const panelProps: PanelProps = useMemo(() => {
return {
components: {
left: (
),
},
+ versionHistoryPanelProps,
}
}, [
editingField,
@@ -103,6 +117,7 @@ const SnippetWorkflowPanel = ({
onRemoveField,
onSecondarySortChange,
onSubmitField,
+ versionHistoryPanelProps,
])
return