From 341abecbfb38193d12dec45b94af455b74aeec60 Mon Sep 17 00:00:00 2001 From: Rob Hough Date: Mon, 18 May 2026 16:31:38 +0100 Subject: [PATCH] refactor(editor): Add 'Build an Agent' to empty state (#30078) --- .../NavigationDropdown.test.ts | 21 ++ .../NavigationDropdown.vue | 22 +- .../frontend/@n8n/i18n/src/locales/en.json | 8 +- .../layouts/EmptyStateLayout.test.ts | 20 ++ .../components/layouts/EmptyStateLayout.vue | 193 +++++++++++++++--- .../src/app/views/WorkflowsView.test.ts | 8 +- .../components/EmptyStateBuilderPrompt.vue | 16 ++ .../__tests__/useAgentTelemetry.test.ts | 8 + .../agents/composables/useAgentTelemetry.ts | 3 +- .../features/agents/views/AgentsListView.vue | 3 + 10 files changed, 262 insertions(+), 40 deletions(-) diff --git a/packages/frontend/@n8n/design-system/src/components/N8nNavigationDropdown/NavigationDropdown.test.ts b/packages/frontend/@n8n/design-system/src/components/N8nNavigationDropdown/NavigationDropdown.test.ts index fe57291225c..b62a6e578fa 100644 --- a/packages/frontend/@n8n/design-system/src/components/N8nNavigationDropdown/NavigationDropdown.test.ts +++ b/packages/frontend/@n8n/design-system/src/components/N8nNavigationDropdown/NavigationDropdown.test.ts @@ -136,6 +136,27 @@ describe('N8nNavigationDropdown', () => { expect(getByText('first')).toBeVisible(); }); + it('should render agent immediately after workflow', async () => { + const { getByTestId, getAllByTestId } = render(NavigationDropdown, { + slots: { default: h('button', { 'data-test-id': 'test-trigger' }) }, + props: { + menu: [ + { id: 'workflow', title: 'New workflow' }, + { id: 'credential', title: 'New credential' }, + { id: 'agent', title: 'New agent' }, + ], + }, + }); + + await userEvent.click(getByTestId('test-trigger')); + + expect(getAllByTestId('navigation-menu-item').map((item) => item.textContent?.trim())).toEqual([ + 'New workflow', + 'New agent', + 'New credential', + ]); + }); + it('should toggle nested level on mouseenter / mouseleave', async () => { const { getByTestId, getByText } = render(NavigationDropdown, { slots: { default: h('button', { 'data-test-id': 'test-trigger' }) }, diff --git a/packages/frontend/@n8n/design-system/src/components/N8nNavigationDropdown/NavigationDropdown.vue b/packages/frontend/@n8n/design-system/src/components/N8nNavigationDropdown/NavigationDropdown.vue index a966e513b57..56ace4b00d7 100644 --- a/packages/frontend/@n8n/design-system/src/components/N8nNavigationDropdown/NavigationDropdown.vue +++ b/packages/frontend/@n8n/design-system/src/components/N8nNavigationDropdown/NavigationDropdown.vue @@ -1,6 +1,6 @@