diff --git a/internal/telemetry/client.go b/internal/telemetry/client.go index 312eb8b407..34b529a3b3 100644 --- a/internal/telemetry/client.go +++ b/internal/telemetry/client.go @@ -1,6 +1,7 @@ package telemetry import ( + "net/http" "strings" "github.com/go-errors/errors" @@ -41,6 +42,9 @@ func NewClient(apiKey string, endpoint string, baseProperties map[string]any, fa if endpoint != "" { config.Endpoint = endpoint } + // Preserve the active process-wide transport, which may be wrapped by debug.NewTransport() + // instead of assuming http.DefaultTransport is always a *http.Transport. + config.Transport = http.DefaultTransport client, err := factory(apiKey, config) if err != nil { return nil, errors.Errorf("failed to initialize posthog client: %w", err) diff --git a/internal/telemetry/client_test.go b/internal/telemetry/client_test.go index 738a409b47..6ee8ccb27a 100644 --- a/internal/telemetry/client_test.go +++ b/internal/telemetry/client_test.go @@ -1,11 +1,13 @@ package telemetry import ( + "net/http" "testing" "github.com/posthog/posthog-go" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/supabase/cli/internal/debug" ) type fakeQueue struct { @@ -51,6 +53,20 @@ func TestNewClient(t *testing.T) { assert.NoError(t, client.Capture("device-1", EventCommandExecuted, map[string]any{"command": "login"}, nil)) assert.NoError(t, client.Close()) }) + t.Run("works when debug wraps the default transport", func(t *testing.T) { + original := http.DefaultTransport + http.DefaultTransport = debug.NewTransport() + t.Cleanup(func() { + http.DefaultTransport = original + }) + + client, err := NewClient("phc_test", "https://eu.i.posthog.com", map[string]any{"platform": "cli"}, nil) + + require.NoError(t, err) + require.NotNil(t, client) + assert.True(t, client.Enabled()) + assert.NoError(t, client.Close()) + }) } func TestCaptureMergesBasePropertiesAndGroups(t *testing.T) {