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:
kishore
2026-05-08 00:27:26 -07:00
parent 635a75871b
commit ca6b699a3d
2 changed files with 36 additions and 0 deletions

View File

@@ -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()

View File

@@ -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__)
)
}