diff --git a/packages/editor-ui/src/views/__tests__/WorkflowsView.test.ts b/packages/editor-ui/src/views/WorkflowsView.test.ts similarity index 90% rename from packages/editor-ui/src/views/__tests__/WorkflowsView.test.ts rename to packages/editor-ui/src/views/WorkflowsView.test.ts index 6688b5d002..4481fa302d 100644 --- a/packages/editor-ui/src/views/__tests__/WorkflowsView.test.ts +++ b/packages/editor-ui/src/views/WorkflowsView.test.ts @@ -21,6 +21,8 @@ describe('WorkflowsView', () => { let usersStore: ReturnType; let projectsStore: ReturnType; + const routerReplaceMock = vi.fn(); + const renderComponent = createComponentRenderer(WorkflowsView, { global: { mocks: { @@ -29,7 +31,7 @@ describe('WorkflowsView', () => { params: {}, }, $router: { - replace: vi.fn(), + replace: routerReplaceMock, }, }, }, @@ -90,11 +92,13 @@ describe('WorkflowsView', () => { await waitFor(() => { expect(getAllByTestId('resources-list-item').length).toBeLessThan(5); }); + expect(routerReplaceMock).toHaveBeenLastCalledWith({ query: { tags: '1' } }); await userEvent.click(getByTestId('workflows-filter-reset')); await waitFor(() => { expect(getAllByTestId('resources-list-item')).toHaveLength(5); }); + expect(routerReplaceMock).toHaveBeenLastCalledWith({ query: undefined }); await userEvent.click( getAllByTestId('resources-list-item')[3].querySelector('.n8n-tag') as HTMLElement, @@ -102,5 +106,6 @@ describe('WorkflowsView', () => { await waitFor(() => { expect(getAllByTestId('resources-list-item').length).toBeLessThan(5); }); + expect(routerReplaceMock).toHaveBeenLastCalledWith({ query: { tags: '1' } }); }); }); diff --git a/packages/editor-ui/src/views/WorkflowsView.vue b/packages/editor-ui/src/views/WorkflowsView.vue index d75987538d..66f9d08e42 100644 --- a/packages/editor-ui/src/views/WorkflowsView.vue +++ b/packages/editor-ui/src/views/WorkflowsView.vue @@ -269,6 +269,12 @@ const WorkflowsView = defineComponent({ }, }, watch: { + filters: { + deep: true, + handler() { + this.saveFiltersOnQueryString(); + }, + }, 'filters.tags'() { this.sendFiltersTelemetry('tags'); }, @@ -295,7 +301,6 @@ const WorkflowsView = defineComponent({ methods: { onFiltersUpdated(filters: Filters) { this.filters = filters; - this.saveFiltersOnQueryString(); }, addWorkflow() { this.uiStore.nodeViewInitialized = false;