// @vitest-environment happy-dom import { describe, expect, it, vi } from 'vitest' import { createApp, nextTick } from 'vue' import AppOnboardingFlow from '../src/components/dashboard/AppOnboardingFlow.vue' import { sendOnboardingEvent } from '../src/services/onboardingTracking' const writerMocks = vi.hoisted(() => ({ abTestAssignments: {} as Record, dialog: { lastButtonRole: null as string | null, onDialogDismiss: vi.fn(async () => undefined), openDialog: vi.fn(), }, loadApp: vi.fn(), main: { auth: { id: 'user-bento-retry' }, authGeneration: 1, awaitInitialLoad: vi.fn(async () => undefined), isAdmin: false, plans: [], user: { id: 'user-bento-retry', image_url: 'avatar.png', first_name: 'Example', last_name: 'User', onboarding: {}, }, }, organization: { getOrgByAppId: vi.fn(), setCurrentOrganization: vi.fn(), awaitInitialLoad: vi.fn(async () => undefined), currentOrganization: null as { gid: string, name: string, onboarding?: unknown } | null, organizations: [], updateAppOnboarding: vi.fn(), upsertOrganizationApp: vi.fn(), }, refreshUser: vi.fn(), replaceUserOnboardingIfUnchanged: vi.fn(), route: { query: {} as Record }, router: { push: vi.fn(), replace: vi.fn(async () => undefined), }, sendOnboardingEvent: vi.fn(), })) vi.mock('vue-i18n', () => ({ useI18n: () => ({ t: (key: string) => key }) })) vi.mock('vue-router', () => ({ useRoute: () => writerMocks.route, useRouter: () => writerMocks.router, })) vi.mock('vue-sonner', () => ({ toast: { error: vi.fn(), success: vi.fn() } })) vi.mock('../src/components/dashboard/ChannelDefaultRoutingOnboarding.vue', () => ({ default: { template: '
' }, })) vi.mock('../src/components/dashboard/ChannelSelfAssignOnboarding.vue', () => ({ default: { template: '
' }, })) vi.mock('../src/components/dashboard/ChannelConsoleAssignOnboarding.vue', () => ({ default: { template: '
' }, })) vi.mock('../src/components/dashboard/ChannelCreateOnboarding.vue', () => ({ default: { emits: ['continue'], template: '