mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-05-21 21:09:00 +00:00
fix: disable Mixpanel in local cloud dev
Avoid sending local OAuth browser-test telemetry to the cloud Mixpanel proxy when the cloud frontend is pointed at a loopback backend.
This commit is contained in:
@@ -75,6 +75,7 @@ const waitForMixpanelInit = () =>
|
||||
vi.waitFor(() => expect(mockMixpanel.init).toHaveBeenCalled())
|
||||
|
||||
type ConfigWindow = { __CONFIG__?: { mixpanel_token?: string } }
|
||||
type DefineGlobal = typeof globalThis & { __DEV_SERVER_COMFYUI_URL__: string }
|
||||
|
||||
describe('MixpanelTelemetryProvider — without configured token', () => {
|
||||
beforeEach(() => {
|
||||
@@ -103,6 +104,7 @@ describe('MixpanelTelemetryProvider — without configured token', () => {
|
||||
describe('MixpanelTelemetryProvider — with configured token', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks()
|
||||
;(globalThis as DefineGlobal).__DEV_SERVER_COMFYUI_URL__ = ''
|
||||
;(window as unknown as ConfigWindow).__CONFIG__ = {
|
||||
mixpanel_token: 'test-token'
|
||||
}
|
||||
@@ -112,6 +114,26 @@ describe('MixpanelTelemetryProvider — with configured token', () => {
|
||||
mockNormalizeSurveyResponses.mockImplementation((responses) => responses)
|
||||
})
|
||||
|
||||
it('does not initialize Mixpanel for loopback cloud dev', () => {
|
||||
;(globalThis as DefineGlobal).__DEV_SERVER_COMFYUI_URL__ =
|
||||
'http://localhost:8188'
|
||||
const warn = vi.spyOn(console, 'warn').mockImplementation(() => undefined)
|
||||
|
||||
try {
|
||||
const provider = new MixpanelTelemetryProvider()
|
||||
provider.trackUserLoggedIn()
|
||||
|
||||
expect(warn).toHaveBeenCalledWith(
|
||||
expect.stringContaining('disabled in local cloud dev')
|
||||
)
|
||||
expect(mockMixpanel.init).not.toHaveBeenCalled()
|
||||
expect(mockMixpanel.track).not.toHaveBeenCalled()
|
||||
} finally {
|
||||
warn.mockRestore()
|
||||
;(globalThis as DefineGlobal).__DEV_SERVER_COMFYUI_URL__ = ''
|
||||
}
|
||||
})
|
||||
|
||||
it('initializes Mixpanel and tracks events synchronously after the loaded callback fires', async () => {
|
||||
const provider = new MixpanelTelemetryProvider()
|
||||
await waitForMixpanelInit()
|
||||
|
||||
@@ -69,6 +69,8 @@ const DEFAULT_DISABLED_EVENTS = [
|
||||
const TELEMETRY_EVENT_SET = new Set<TelemetryEventName>(
|
||||
Object.values(TelemetryEvents) as TelemetryEventName[]
|
||||
)
|
||||
const localOriginPattern =
|
||||
/^https?:\/\/(localhost|127\.0\.0\.1|\[::1\])(?::\d+)?(?:\/|$)/
|
||||
|
||||
interface QueuedEvent {
|
||||
eventName: TelemetryEventName
|
||||
@@ -96,6 +98,12 @@ export class MixpanelTelemetryProvider implements TelemetryProvider {
|
||||
private disabledEvents = new Set<TelemetryEventName>(DEFAULT_DISABLED_EVENTS)
|
||||
|
||||
constructor() {
|
||||
if (isLocalCloudDev()) {
|
||||
console.warn('Mixpanel telemetry disabled in local cloud dev')
|
||||
this.isEnabled = false
|
||||
return
|
||||
}
|
||||
|
||||
this.configureDisabledEvents(
|
||||
(window.__CONFIG__ as Partial<RemoteConfig> | undefined) ?? null
|
||||
)
|
||||
@@ -446,3 +454,9 @@ export class MixpanelTelemetryProvider implements TelemetryProvider {
|
||||
this.trackEvent(TelemetryEvents.UI_BUTTON_CLICKED, metadata)
|
||||
}
|
||||
}
|
||||
|
||||
function isLocalCloudDev(): boolean {
|
||||
return (
|
||||
import.meta.env.DEV && localOriginPattern.test(__DEV_SERVER_COMFYUI_URL__)
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user