fix: Stop telemetry events to Posthog (#16788)

This commit is contained in:
Ricardo Espinoza
2025-06-30 09:08:47 -04:00
committed by GitHub
parent 913334005f
commit d76f05ba3d
30 changed files with 247 additions and 461 deletions

View File

@@ -257,14 +257,10 @@ const isSingleLineInput: ComputedRef<boolean> = computed(
function applyOverride() {
if (!fromAIOverride.value) return;
telemetry.track(
'User turned on fromAI override',
{
nodeType: activeNode.value?.type,
parameter: props.path,
},
{ withPostHog: true },
);
telemetry.track('User turned on fromAI override', {
nodeType: activeNode.value?.type,
parameter: props.path,
});
updateFromAIOverrideValues(fromAIOverride.value, String(props.value));
const value = buildValueFromOverride(fromAIOverride.value, props, true);
valueChanged({
@@ -277,14 +273,10 @@ function applyOverride() {
function removeOverride(clearField = false) {
if (!fromAIOverride.value) return;
telemetry.track(
'User turned off fromAI override',
{
nodeType: activeNode.value?.type,
parameter: props.path,
},
{ withPostHog: true },
);
telemetry.track('User turned off fromAI override', {
nodeType: activeNode.value?.type,
parameter: props.path,
});
valueChanged({
node: activeNode.value?.name,
name: props.path,

View File

@@ -847,14 +847,10 @@ function onInputBlur(event: FocusEvent) {
function applyOverride() {
if (!props.node || !fromAIOverride.value) return;
telemetry.track(
'User turned on fromAI override',
{
nodeType: props.node.type,
parameter: props.path,
},
{ withPostHog: true },
);
telemetry.track('User turned on fromAI override', {
nodeType: props.node.type,
parameter: props.path,
});
updateFromAIOverrideValues(fromAIOverride.value, props.modelValue.value?.toString() ?? '');
emit('update:modelValue', {
@@ -866,14 +862,10 @@ function applyOverride() {
function removeOverride() {
if (!props.node || !fromAIOverride.value) return;
telemetry.track(
'User turned off fromAI override',
{
nodeType: props.node.type,
parameter: props.path,
},
{ withPostHog: true },
);
telemetry.track('User turned off fromAI override', {
nodeType: props.node.type,
parameter: props.path,
});
emit('update:modelValue', {
...props.modelValue,
value: buildValueFromOverride(fromAIOverride.value, props, false),

View File

@@ -715,18 +715,12 @@ onMounted(() => {
const errorsToTrack = ['unknown error'];
if (error && errorsToTrack.some((e) => error.message?.toLowerCase().includes(e))) {
telemetry.track(
'User encountered an error',
{
node: node.value.type,
errorMessage: error.message,
nodeVersion: node.value.typeVersion,
n8nVersion: rootStore.versionCli,
},
{
withPostHog: true,
},
);
telemetry.track('User encountered an error', {
node: node.value.type,
errorMessage: error.message,
nodeVersion: node.value.typeVersion,
n8nVersion: rootStore.versionCli,
});
}
}
});

View File

@@ -108,9 +108,7 @@ const onDragEnd = (el: HTMLElement) => {
setTimeout(() => {
void externalHooks.run('runDataJson.onDragEnd', telemetryPayload);
telemetry.track('User dragged data for mapping', telemetryPayload, {
withPostHog: true,
});
telemetry.track('User dragged data for mapping', telemetryPayload);
}, 1000); // ensure dest data gets set if drop
};

View File

@@ -308,9 +308,7 @@ function onDragEnd(column: string, src: string, depth = '0') {
void externalHooks.run('runDataTable.onDragEnd', telemetryPayload);
telemetry.track('User dragged data for mapping', telemetryPayload, {
withPostHog: true,
});
telemetry.track('User dragged data for mapping', telemetryPayload);
}, 1000); // ensure dest data gets set if drop
}

View File

@@ -33,7 +33,7 @@ const {
onMounted(() => {
setInitialCredentialSelection();
telemetry.track('User opened cred setup', { source: 'canvas' }, { withPostHog: true });
telemetry.track('User opened cred setup', { source: 'canvas' });
});
onUnmounted(() => {

View File

@@ -569,7 +569,6 @@ describe('VirtualSchema.vue', () => {
src_nodes_back: '1',
src_has_credential: false,
}),
{ withPostHog: true },
),
);
});
@@ -616,7 +615,6 @@ describe('VirtualSchema.vue', () => {
src_view: 'schema_preview',
src_has_credential: true,
}),
{ withPostHog: true },
),
);
});

View File

@@ -407,7 +407,7 @@ const onDragEnd = (el: HTMLElement) => {
void useExternalHooks().run('runDataJson.onDragEnd', telemetryPayload);
telemetry.track('User dragged data for mapping', telemetryPayload, { withPostHog: true });
telemetry.track('User dragged data for mapping', telemetryPayload);
}, 250); // ensure dest data gets set if drop
};
</script>

View File

@@ -171,7 +171,7 @@ function onInputChange(workflowId: NodeParameterValue): void {
}
function onListItemSelected(value: NodeParameterValue) {
telemetry.track('User chose sub-workflow', {}, { withPostHog: true });
telemetry.track('User chose sub-workflow', {});
onInputChange(value);
hideDropdown();
}
@@ -258,7 +258,7 @@ const onAddResourceClicked = async () => {
if (projectId) {
workflow.projectId = projectId;
}
telemetry.track('User clicked create new sub-workflow button', {}, { withPostHog: true });
telemetry.track('User clicked create new sub-workflow button', {});
const newWorkflow = await workflowsStore.createNewWorkflow(workflow);
const { href } = router.resolve({

View File

@@ -526,15 +526,11 @@ describe('useCanvasOperations', () => {
const { tidyUp } = useCanvasOperations();
tidyUp(event);
expect(useTelemetry().track).toHaveBeenCalledWith(
'User tidied up canvas',
{
nodes_count: 2,
source: 'canvas-button',
target: 'all',
},
{ withPostHog: true },
);
expect(useTelemetry().track).toHaveBeenCalledWith('User tidied up canvas', {
nodes_count: 2,
source: 'canvas-button',
target: 'all',
});
});
});

View File

@@ -188,15 +188,11 @@ export function useCanvasOperations() {
}
function trackTidyUp({ result, source, target }: CanvasLayoutEvent) {
telemetry.track(
'User tidied up canvas',
{
source,
target,
nodes_count: result.nodes.length,
},
{ withPostHog: true },
);
telemetry.track('User tidied up canvas', {
source,
target,
nodes_count: result.nodes.length,
});
}
function updateNodesPosition(

View File

@@ -59,13 +59,9 @@ export async function executionFinished(
const easyAiWorkflowJson = getEasyAiWorkflowJson();
const isEasyAIWorkflow = workflow.meta.templateId === easyAiWorkflowJson.meta.templateId;
if (isEasyAIWorkflow) {
telemetry.track(
'User executed test AI workflow',
{
status: data.status,
},
{ withPostHog: true },
);
telemetry.track('User executed test AI workflow', {
status: data.status,
});
}
}
@@ -313,9 +309,7 @@ export function handleExecutionFinishedWithErrorOrCanceled(
}
}
telemetry.track('Instance FE emitted paired item error', eventData, {
withPostHog: true,
});
telemetry.track('Instance FE emitted paired item error', eventData);
});
}

View File

@@ -190,9 +190,8 @@ describe('telemetry', () => {
const event = 'testEvent';
const properties = { test: '1' };
const options = { withPostHog: false };
telemetry.track(event, properties, options);
telemetry.track(event, properties);
expect(trackFunction).toHaveBeenCalledTimes(1);
expect(trackFunction).toHaveBeenCalledWith(

View File

@@ -13,7 +13,6 @@ import {
} from '@/constants';
import { useRootStore } from '@n8n/stores/useRootStore';
import { useNDVStore } from '@/stores/ndv.store';
import { usePostHog } from '@/stores/posthog.store';
import { useSettingsStore } from '@/stores/settings.store';
import { useUIStore } from '@/stores/ui.store';
@@ -97,11 +96,7 @@ export class Telemetry {
}
}
track(
event: string,
properties?: ITelemetryTrackProperties,
options: { withPostHog?: boolean } = {},
) {
track(event: string, properties?: ITelemetryTrackProperties) {
if (!this.rudderStack) return;
const updatedProperties = {
@@ -115,10 +110,6 @@ export class Telemetry {
ip: '0.0.0.0',
},
});
if (options.withPostHog) {
usePostHog().capture(event, updatedProperties);
}
}
page(route: RouteLocation) {
@@ -170,7 +161,7 @@ export class Telemetry {
switch (event) {
case 'askAi.generationFinished':
this.track('Ai code generation finished', properties, { withPostHog: true });
this.track('Ai code generation finished', properties);
default:
break;
}
@@ -184,7 +175,7 @@ export class Telemetry {
switch (event) {
case 'generationFinished':
this.track('Ai Transform code generation finished', properties, { withPostHog: true });
this.track('Ai Transform code generation finished', properties);
default:
break;
}
@@ -202,14 +193,10 @@ export class Telemetry {
};
const changeName = changeNameMap[nodeType] || APPEND_ATTRIBUTION_DEFAULT_PATH;
if (change.name === changeName) {
this.track(
'User toggled n8n reference option',
{
node: nodeType,
toValue: change.value,
},
{ withPostHog: true },
);
this.track('User toggled n8n reference option', {
node: nodeType,
toValue: change.value,
});
}
}
}

View File

@@ -371,18 +371,12 @@ describe('AI Assistant store', () => {
source: 'error',
has_existing_session: true,
});
expect(track).toHaveBeenCalledWith(
'Assistant session started',
{
chat_session_id: 'test',
node_type: 'n8n-nodes-base.stopAndError',
task: 'error',
credential_type: undefined,
},
{
withPostHog: true,
},
);
expect(track).toHaveBeenCalledWith('Assistant session started', {
chat_session_id: 'test',
node_type: 'n8n-nodes-base.stopAndError',
task: 'error',
credential_type: undefined,
});
expect(track).toHaveBeenCalledWith('User opened assistant', {
chat_session_id: 'test',

View File

@@ -291,16 +291,12 @@ export const useAssistantStore = defineStore(STORES.ASSISTANT, () => {
function onEachStreamingMessage(response: ChatRequest.ResponsePayload, id: string) {
if (response.sessionId && !currentSessionId.value) {
currentSessionId.value = response.sessionId;
telemetry.track(
'Assistant session started',
{
chat_session_id: currentSessionId.value,
task: chatSessionTask.value,
node_type: chatSessionError.value?.node.type,
credential_type: chatSessionCredType.value?.name,
},
{ withPostHog: true },
);
telemetry.track('Assistant session started', {
chat_session_id: currentSessionId.value,
task: chatSessionTask.value,
node_type: chatSessionError.value?.node.type,
credential_type: chatSessionCredType.value?.name,
});
// Track first user message in support chat now that we have a session id
if (usersMessages.value.length === 1 && chatSessionTask.value === 'support') {
const firstUserMessage = usersMessages.value[0] as ChatUI.TextMessage;

View File

@@ -242,14 +242,10 @@ export const useBuilderStore = defineStore(STORES.BUILDER, () => {
function onEachStreamingMessage(response: ChatRequest.ResponsePayload, id: string) {
if (response.sessionId && !currentSessionId.value) {
currentSessionId.value = response.sessionId;
telemetry.track(
'Assistant session started',
{
chat_session_id: currentSessionId.value,
task: 'workflow-generation',
},
{ withPostHog: true },
);
telemetry.track('Assistant session started', {
chat_session_id: currentSessionId.value,
task: 'workflow-generation',
});
} else if (currentSessionId.value !== response.sessionId) {
// Ignore messages from other sessions
return;
@@ -263,14 +259,10 @@ export const useBuilderStore = defineStore(STORES.BUILDER, () => {
// Core API functions
async function initBuilderChat(userMessage: string, source: 'chat' | 'canvas') {
telemetry.track(
'User submitted workflow prompt',
{
source,
prompt: userMessage,
},
{ withPostHog: true },
);
telemetry.track('User submitted workflow prompt', {
source,
prompt: userMessage,
});
resetBuilderChat();
const id = getRandomId();

View File

@@ -80,18 +80,12 @@ describe('useNodeCreatorStore', () => {
workflow_id,
});
expect(useTelemetry().track).toHaveBeenCalledWith(
'User opened nodes panel',
{
mode,
source,
nodes_panel_session_id: getSessionId(now),
workflow_id,
},
{
withPostHog: false,
},
);
expect(useTelemetry().track).toHaveBeenCalledWith('User opened nodes panel', {
mode,
source,
nodes_panel_session_id: getSessionId(now),
workflow_id,
});
});
it('resets session id every time node creator is opened', () => {
@@ -101,18 +95,12 @@ describe('useNodeCreatorStore', () => {
workflow_id,
});
expect(useTelemetry().track).toHaveBeenCalledWith(
'User opened nodes panel',
{
mode,
source,
nodes_panel_session_id: getSessionId(now),
workflow_id,
},
{
withPostHog: false,
},
);
expect(useTelemetry().track).toHaveBeenCalledWith('User opened nodes panel', {
mode,
source,
nodes_panel_session_id: getSessionId(now),
workflow_id,
});
vi.setSystemTime(now1);
@@ -122,18 +110,12 @@ describe('useNodeCreatorStore', () => {
workflow_id,
});
expect(useTelemetry().track).toHaveBeenCalledWith(
'User opened nodes panel',
{
mode,
source,
nodes_panel_session_id: getSessionId(now1),
workflow_id,
},
{
withPostHog: false,
},
);
expect(useTelemetry().track).toHaveBeenCalledWith('User opened nodes panel', {
mode,
source,
nodes_panel_session_id: getSessionId(now1),
workflow_id,
});
});
it('tracks event on category expanded', () => {
@@ -144,18 +126,12 @@ describe('useNodeCreatorStore', () => {
});
nodeCreatorStore.onCategoryExpanded({ workflow_id, category_name });
expect(useTelemetry().track).toHaveBeenCalledWith(
'User viewed node category',
{
category_name,
is_subcategory: false,
nodes_panel_session_id: getSessionId(now),
workflow_id,
},
{
withPostHog: false,
},
);
expect(useTelemetry().track).toHaveBeenCalledWith('User viewed node category', {
category_name,
is_subcategory: false,
nodes_panel_session_id: getSessionId(now),
workflow_id,
});
});
it('tracks event when node is added to canvas', () => {
@@ -174,22 +150,16 @@ describe('useNodeCreatorStore', () => {
input_node_type,
});
expect(useTelemetry().track).toHaveBeenCalledWith(
'User added node to workflow canvas',
{
node_id,
node_type,
node_version,
is_auto_add: true,
drag_and_drop: true,
input_node_type,
nodes_panel_session_id: getSessionId(now),
workflow_id,
},
{
withPostHog: true,
},
);
expect(useTelemetry().track).toHaveBeenCalledWith('User added node to workflow canvas', {
node_id,
node_type,
node_version,
is_auto_add: true,
drag_and_drop: true,
input_node_type,
nodes_panel_session_id: getSessionId(now),
workflow_id,
});
});
it('tracks event when action is added', () => {
@@ -205,19 +175,13 @@ describe('useNodeCreatorStore', () => {
resource,
});
expect(useTelemetry().track).toHaveBeenCalledWith(
'User added action',
{
node_type,
action,
source_mode,
resource,
nodes_panel_session_id: getSessionId(now),
},
{
withPostHog: false,
},
);
expect(useTelemetry().track).toHaveBeenCalledWith('User added action', {
node_type,
action,
source_mode,
resource,
nodes_panel_session_id: getSessionId(now),
});
});
it('tracks when custom api action is clicked', () => {
@@ -230,16 +194,10 @@ describe('useNodeCreatorStore', () => {
app_identifier: node_type,
});
expect(useTelemetry().track).toHaveBeenCalledWith(
'User clicked custom API from node actions',
{
app_identifier: node_type,
nodes_panel_session_id: getSessionId(now),
},
{
withPostHog: false,
},
);
expect(useTelemetry().track).toHaveBeenCalledWith('User clicked custom API from node actions', {
app_identifier: node_type,
nodes_panel_session_id: getSessionId(now),
});
});
it('tracks when action is viewed', () => {
@@ -255,19 +213,13 @@ describe('useNodeCreatorStore', () => {
trigger_action_count: 2,
});
expect(useTelemetry().track).toHaveBeenCalledWith(
'User viewed node actions',
{
app_identifier: node_type,
actions,
regular_action_count: 1,
trigger_action_count: 2,
nodes_panel_session_id: getSessionId(now),
},
{
withPostHog: false,
},
);
expect(useTelemetry().track).toHaveBeenCalledWith('User viewed node actions', {
app_identifier: node_type,
actions,
regular_action_count: 1,
trigger_action_count: 2,
nodes_panel_session_id: getSessionId(now),
});
});
it('tracks when search filter is updated, ignoring custom actions in count', () => {
@@ -308,22 +260,16 @@ describe('useNodeCreatorStore', () => {
title,
});
expect(useTelemetry().track).toHaveBeenCalledWith(
'User entered nodes panel search term',
{
search_string: newValue,
filter_mode: 'regular',
category_name: subcategory,
results_count: 2,
trigger_count: 1,
regular_count: 1,
nodes_panel_session_id: getSessionId(now),
title,
},
{
withPostHog: false,
},
);
expect(useTelemetry().track).toHaveBeenCalledWith('User entered nodes panel search term', {
search_string: newValue,
filter_mode: 'regular',
category_name: subcategory,
results_count: 2,
trigger_count: 1,
regular_count: 1,
nodes_panel_session_id: getSessionId(now),
title,
});
});
describe('selective connection view', () => {
const mockedParseCanvasConnectionHandleString = vi.mocked(

View File

@@ -292,17 +292,11 @@ export const useNodeCreatorStore = defineStore(STORES.NODE_CREATOR, () => {
nodePanelSessionId.value = `nodes_panel_session_${new Date().valueOf()}`;
}
function trackNodeCreatorEvent(event: string, properties: IDataObject = {}, withPostHog = false) {
telemetry.track(
event,
{
...properties,
nodes_panel_session_id: nodePanelSessionId.value,
},
{
withPostHog,
},
);
function trackNodeCreatorEvent(event: string, properties: IDataObject = {}) {
telemetry.track(event, {
...properties,
nodes_panel_session_id: nodePanelSessionId.value,
});
}
function onCreatorOpened({
@@ -419,7 +413,7 @@ export const useNodeCreatorStore = defineStore(STORES.NODE_CREATOR, () => {
drag_and_drop?: boolean;
input_node_type?: string;
}) {
trackNodeCreatorEvent('User added node to workflow canvas', properties, true);
trackNodeCreatorEvent('User added node to workflow canvas', properties);
}
function getMode(mode: NodeFilterType): string {

View File

@@ -164,12 +164,6 @@ export const usePostHog = defineStore('posthog', () => {
}
};
const capture = (event: string, properties: IDataObject) => {
if (typeof window.posthog?.capture === 'function') {
window.posthog.capture(event, properties);
}
};
const setMetadata = (metadata: IDataObject, target: 'user' | 'events') => {
if (typeof window.posthog?.people?.set !== 'function') return;
if (typeof window.posthog?.register !== 'function') return;
@@ -188,7 +182,6 @@ export const usePostHog = defineStore('posthog', () => {
getVariant,
reset,
identify,
capture,
setMetadata,
overrides,
};

View File

@@ -647,20 +647,14 @@ describe('useWorkflowsStore', () => {
},
},
});
expect(track).toHaveBeenCalledWith(
'Manual exec errored',
{
error_title: 'invalid syntax',
node_type: 'n8n-nodes-base.set',
node_type_version: 3.4,
node_id: '554c7ff4-7ee2-407c-8931-e34234c5056a',
node_graph_string:
'{"node_types":["n8n-nodes-base.set"],"node_connections":[],"nodes":{"0":{"id":"554c7ff4-7ee2-407c-8931-e34234c5056a","type":"n8n-nodes-base.set","version":3.4,"position":[680,180]}},"notes":{},"is_pinned":false}',
},
{
withPostHog: true,
},
);
expect(track).toHaveBeenCalledWith('Manual exec errored', {
error_title: 'invalid syntax',
node_type: 'n8n-nodes-base.set',
node_type_version: 3.4,
node_id: '554c7ff4-7ee2-407c-8931-e34234c5056a',
node_graph_string:
'{"node_types":["n8n-nodes-base.set"],"node_connections":[],"nodes":{"0":{"id":"554c7ff4-7ee2-407c-8931-e34234c5056a","type":"n8n-nodes-base.set","version":3.4,"position":[680,180]}},"notes":{},"is_pinned":false}',
});
});
it('sets workflow pin data', () => {

View File

@@ -1511,25 +1511,21 @@ export const useWorkflowsStore = defineStore(STORES.WORKFLOWS, () => {
if (pushData.data.error) {
const node = getNodeByName(nodeName);
telemetry.track(
'Manual exec errored',
{
error_title: pushData.data.error.message,
node_type: node?.type,
node_type_version: node?.typeVersion,
node_id: node?.id,
node_graph_string: JSON.stringify(
TelemetryHelpers.generateNodesGraph(
await workflowHelpers.getWorkflowDataToSave(),
workflowHelpers.getNodeTypes(),
{
isCloudDeployment: settingsStore.isCloudDeployment,
},
).nodeGraph,
),
},
{ withPostHog: true },
);
telemetry.track('Manual exec errored', {
error_title: pushData.data.error.message,
node_type: node?.type,
node_type_version: node?.typeVersion,
node_id: node?.id,
node_graph_string: JSON.stringify(
TelemetryHelpers.generateNodesGraph(
await workflowHelpers.getWorkflowDataToSave(),
workflowHelpers.getNodeTypes(),
{
isCloudDeployment: settingsStore.isCloudDeployment,
},
).nodeGraph,
),
});
}
}

View File

@@ -70,7 +70,7 @@ async function openTemplateCredentialSetup(opts: {
}) {
const { router, templateId, inNewBrowserTab = false, telemetry, source } = opts;
telemetry.track('User opened cred setup', { source }, { withPostHog: true });
telemetry.track('User opened cred setup', { source });
const routeLocation: RouteLocationRaw = {
name: VIEWS.TEMPLATE_SETUP,

View File

@@ -103,30 +103,22 @@ watch(
(ready) => {
if (ready) {
if (showWizard.value) {
telemetry.track(
'User viewed tests tab',
{
workflow_id: props.name,
test_type: 'evaluation',
view: 'setup',
trigger_set_up: evaluationStore.evaluationTriggerExists,
output_set_up: evaluationStore.evaluationSetOutputsNodeExist,
metrics_set_up: evaluationStore.evaluationSetMetricsNodeExist,
quota_reached: evaluationsQuotaExceeded.value,
},
{ withPostHog: true },
);
telemetry.track('User viewed tests tab', {
workflow_id: props.name,
test_type: 'evaluation',
view: 'setup',
trigger_set_up: evaluationStore.evaluationTriggerExists,
output_set_up: evaluationStore.evaluationSetOutputsNodeExist,
metrics_set_up: evaluationStore.evaluationSetMetricsNodeExist,
quota_reached: evaluationsQuotaExceeded.value,
});
} else {
telemetry.track(
'User viewed tests tab',
{
workflow_id: props.name,
test_type: 'evaluation',
view: 'overview',
run_count: runs.value.length,
},
{ withPostHog: true },
);
telemetry.track('User viewed tests tab', {
workflow_id: props.name,
test_type: 'evaluation',
view: 'overview',
run_count: runs.value.length,
});
}
}
},

View File

@@ -144,19 +144,15 @@ describe('EvaluationsRootView', () => {
renderComponent({ props: { name: mockWorkflow.id } });
await waitFor(() => {
expect(useTelemetry().track).toHaveBeenCalledWith(
'User viewed tests tab',
{
workflow_id: mockWorkflow.id,
test_type: 'evaluation',
view: 'setup',
trigger_set_up: false,
output_set_up: false,
metrics_set_up: false,
quota_reached: false,
},
{ withPostHog: true },
);
expect(useTelemetry().track).toHaveBeenCalledWith('User viewed tests tab', {
workflow_id: mockWorkflow.id,
test_type: 'evaluation',
view: 'setup',
trigger_set_up: false,
output_set_up: false,
metrics_set_up: false,
quota_reached: false,
});
});
});
@@ -176,16 +172,12 @@ describe('EvaluationsRootView', () => {
renderComponent({ props: { name: mockWorkflow.id } });
await waitFor(() => {
expect(useTelemetry().track).toHaveBeenCalledWith(
'User viewed tests tab',
{
workflow_id: mockWorkflow.id,
test_type: 'evaluation',
view: 'overview',
run_count: 2,
},
{ withPostHog: true },
);
expect(useTelemetry().track).toHaveBeenCalledWith('User viewed tests tab', {
workflow_id: mockWorkflow.id,
test_type: 'evaluation',
view: 'overview',
run_count: 2,
});
});
});
@@ -223,19 +215,15 @@ describe('EvaluationsRootView', () => {
renderComponent({ props: { name: mockWorkflow.id } });
await waitFor(() => {
expect(useTelemetry().track).toHaveBeenCalledWith(
'User viewed tests tab',
{
workflow_id: mockWorkflow.id,
test_type: 'evaluation',
view: 'setup',
trigger_set_up: true,
output_set_up: false,
metrics_set_up: false,
quota_reached: false,
},
{ withPostHog: true },
);
expect(useTelemetry().track).toHaveBeenCalledWith('User viewed tests tab', {
workflow_id: mockWorkflow.id,
test_type: 'evaluation',
view: 'setup',
trigger_set_up: true,
output_set_up: false,
metrics_set_up: false,
quota_reached: false,
});
});
});
@@ -279,19 +267,15 @@ describe('EvaluationsRootView', () => {
renderComponent({ props: { name: mockWorkflow.id } });
await waitFor(() => {
expect(useTelemetry().track).toHaveBeenCalledWith(
'User viewed tests tab',
{
workflow_id: mockWorkflow.id,
test_type: 'evaluation',
view: 'setup',
trigger_set_up: false,
output_set_up: true,
metrics_set_up: false,
quota_reached: false,
},
{ withPostHog: true },
);
expect(useTelemetry().track).toHaveBeenCalledWith('User viewed tests tab', {
workflow_id: mockWorkflow.id,
test_type: 'evaluation',
view: 'setup',
trigger_set_up: false,
output_set_up: true,
metrics_set_up: false,
quota_reached: false,
});
});
});
@@ -335,19 +319,15 @@ describe('EvaluationsRootView', () => {
renderComponent({ props: { name: mockWorkflow.id } });
await waitFor(() => {
expect(useTelemetry().track).toHaveBeenCalledWith(
'User viewed tests tab',
{
workflow_id: mockWorkflow.id,
test_type: 'evaluation',
view: 'setup',
trigger_set_up: false,
output_set_up: false,
metrics_set_up: true,
quota_reached: false,
},
{ withPostHog: true },
);
expect(useTelemetry().track).toHaveBeenCalledWith('User viewed tests tab', {
workflow_id: mockWorkflow.id,
test_type: 'evaluation',
view: 'setup',
trigger_set_up: false,
output_set_up: false,
metrics_set_up: true,
quota_reached: false,
});
});
});
@@ -367,19 +347,15 @@ describe('EvaluationsRootView', () => {
renderComponent({ props: { name: mockWorkflow.id } });
await waitFor(() => {
expect(useTelemetry().track).toHaveBeenCalledWith(
'User viewed tests tab',
{
workflow_id: mockWorkflow.id,
test_type: 'evaluation',
view: 'setup',
trigger_set_up: false,
output_set_up: false,
metrics_set_up: false,
quota_reached: true,
},
{ withPostHog: true },
);
expect(useTelemetry().track).toHaveBeenCalledWith('User viewed tests tab', {
workflow_id: mockWorkflow.id,
test_type: 'evaluation',
view: 'setup',
trigger_set_up: false,
output_set_up: false,
metrics_set_up: false,
quota_reached: true,
});
});
});
});

View File

@@ -554,9 +554,6 @@ function trackOpenWorkflowFromOnboardingTemplate() {
{
workflow_id: workflowId.value,
},
{
withPostHog: true,
},
);
}
@@ -646,17 +643,11 @@ async function openWorkflowTemplate(templateId: string) {
}
function trackOpenWorkflowTemplate(templateId: string) {
telemetry.track(
'User inserted workflow template',
{
source: 'workflow',
template_id: tryToParseNumber(templateId),
wf_template_repo_session_id: templatesStore.previousSessionId,
},
{
withPostHog: true,
},
);
telemetry.track('User inserted workflow template', {
source: 'workflow',
template_id: tryToParseNumber(templateId),
wf_template_repo_session_id: templatesStore.previousSessionId,
});
}
/**

View File

@@ -62,17 +62,11 @@ const nodeNames = computed(() => {
//#region Methods
const onCredentialModalOpened = () => {
telemetry.track(
'User opened Credential modal',
{
source: 'cred_setup',
credentialType: props.credentials.credentialType,
new_credential: !props.selectedCredentialId,
},
{
withPostHog: true,
},
);
telemetry.track('User opened Credential modal', {
source: 'cred_setup',
credentialType: props.credentials.credentialType,
new_credential: !props.selectedCredentialId,
});
};
//#endregion Methods

View File

@@ -197,15 +197,11 @@ export const useSetupTemplateStore = defineStore('setupTemplate', () => {
workflow_id: createdWorkflow.id,
});
telemetry.track(
'User inserted workflow template',
{
source: 'workflow',
template_id: tryToParseNumber(templateId.value),
wf_template_repo_session_id: templatesStore.currentSessionId,
},
{ withPostHog: true },
);
telemetry.track('User inserted workflow template', {
source: 'workflow',
template_id: tryToParseNumber(templateId.value),
wf_template_repo_session_id: templatesStore.currentSessionId,
});
telemetry.track('User saved new workflow from template', {
template_id: tryToParseNumber(templateId.value),

View File

@@ -765,13 +765,9 @@ function isValidProjectId(projectId: string) {
const openAIWorkflow = async (source: string) => {
dismissEasyAICallout();
telemetry.track(
'User clicked test AI workflow',
{
source,
},
{ withPostHog: true },
);
telemetry.track('User clicked test AI workflow', {
source,
});
const easyAiWorkflowJson = getEasyAiWorkflowJson();