diff --git a/packages/frontend/editor-ui/src/app/App.vue b/packages/frontend/editor-ui/src/app/App.vue index 02ae96b0619..3a421fe0b5a 100644 --- a/packages/frontend/editor-ui/src/app/App.vue +++ b/packages/frontend/editor-ui/src/app/App.vue @@ -3,9 +3,9 @@ import AssistantsHub from '@/features/ai/assistant/components/AssistantsHub.vue' import AskAssistantFloatingButton from '@/features/ai/assistant/components/Chat/AskAssistantFloatingButton.vue'; import BannerStack from '@/features/shared/banners/components/BannerStack.vue'; import Modals from '@/app/components/Modals.vue'; -import Telemetry from '@/app/components/Telemetry.vue'; import { useHistoryHelper } from '@/app/composables/useHistoryHelper'; import { useTelemetryContext } from '@/app/composables/useTelemetryContext'; +import { useTelemetryInitializer } from '@/app/composables/useTelemetryInitializer'; import { useWorkflowDiffRouting } from '@/app/composables/useWorkflowDiffRouting'; import { APP_MODALS_ELEMENT_ID, @@ -63,6 +63,8 @@ useHistoryHelper(route); // Initialize workflow diff routing management useWorkflowDiffRouting(); +useTelemetryInitializer(); + const loading = ref(true); const defaultLocale = computed(() => rootStore.defaultLocale); const isDemoMode = computed(() => route.name === VIEWS.DEMO); @@ -181,7 +183,6 @@ useExposeCssVar('--ask-assistant--floating-button--margin-bottom', askAiFloating @input-change="onCommandBarChange" @navigate-to="onCommandBarNavigateTo" /> - diff --git a/packages/frontend/editor-ui/src/app/components/Telemetry.test.ts b/packages/frontend/editor-ui/src/app/components/Telemetry.test.ts deleted file mode 100644 index 3e05be43679..00000000000 --- a/packages/frontend/editor-ui/src/app/components/Telemetry.test.ts +++ /dev/null @@ -1,127 +0,0 @@ -import { useRoute } from 'vue-router'; -import { createTestingPinia } from '@pinia/testing'; -import { createComponentRenderer } from '@/__tests__/render'; -import type { MockedStore } from '@/__tests__/utils'; -import { mockedStore } from '@/__tests__/utils'; -import Telemetry from './Telemetry.vue'; -import { useRootStore } from '@n8n/stores/useRootStore'; -import { useSettingsStore } from '@/app/stores/settings.store'; -import { useUsersStore } from '@/features/settings/users/users.store'; -import { useTelemetry } from '@/app/composables/useTelemetry'; - -vi.mock('vue-router', () => { - const meta = {}; - return { - useRouter: vi.fn(), - useRoute: () => ({ - meta, - }), - RouterLink: { - template: '', - }, - }; -}); - -vi.mock('@/app/composables/useTelemetry', () => { - const init = vi.fn(); - return { - useTelemetry: () => ({ - init, - }), - }; -}); - -const renderComponent = createComponentRenderer(Telemetry, { - pinia: createTestingPinia(), -}); - -let route: ReturnType; -let rootStore: MockedStore; -let settingsStore: MockedStore; -let usersStore: MockedStore; -let telemetryPlugin: ReturnType; - -describe('Telemetry', () => { - beforeEach(() => { - vi.clearAllMocks(); - - route = useRoute(); - rootStore = mockedStore(useRootStore); - settingsStore = mockedStore(useSettingsStore); - usersStore = mockedStore(useUsersStore); - telemetryPlugin = useTelemetry(); - }); - - it('should not throw error when opened', async () => { - expect(() => renderComponent()).not.toThrow(); - }); - - it('should initialize if telemetry is enabled in settings and not disabled on the route', async () => { - settingsStore.telemetry = { - enabled: true, - }; - usersStore.currentUserId = '123'; - rootStore.instanceId = '456'; - renderComponent(); - - expect(telemetryPlugin.init).toHaveBeenCalledWith( - { - enabled: true, - }, - expect.objectContaining({ - userId: '123', - instanceId: '456', - }), - ); - }); - - it('should not initialize if telemetry is disabled in settings', async () => { - settingsStore.telemetry = { - enabled: false, - }; - renderComponent(); - - expect(telemetryPlugin.init).not.toHaveBeenCalled(); - }); - - it('should not initialize if telemetry is disabled on the route', async () => { - settingsStore.telemetry = { - enabled: true, - }; - route.meta.telemetry = { - disabled: true, - }; - renderComponent(); - - expect(telemetryPlugin.init).not.toHaveBeenCalled(); - }); - - it('should render the iframe with correct src', async () => { - settingsStore.telemetry = { - enabled: true, - }; - usersStore.currentUserId = '123'; - rootStore.instanceId = '456'; - const { container } = renderComponent(); - - const iframe = container.querySelector('iframe'); - - expect(iframe).toBeInTheDocument(); - expect(iframe).not.toBeVisible(); - expect(iframe).toHaveAttribute('src', expect.stringContaining('userId=123')); - expect(iframe).toHaveAttribute('src', expect.stringContaining('instanceId=456')); - }); - - it('should not render the iframe if telemetry disabled', async () => { - settingsStore.telemetry = { - enabled: false, - }; - usersStore.currentUserId = '123'; - rootStore.instanceId = '456'; - const { container } = renderComponent(); - - const iframe = container.querySelector('iframe'); - - expect(iframe).not.toBeInTheDocument(); - }); -}); diff --git a/packages/frontend/editor-ui/src/app/components/Telemetry.vue b/packages/frontend/editor-ui/src/app/components/Telemetry.vue deleted file mode 100644 index bb4abd790a1..00000000000 --- a/packages/frontend/editor-ui/src/app/components/Telemetry.vue +++ /dev/null @@ -1,73 +0,0 @@ - - -