From b8f9778575aafa8e24017b53a07cc5f6c7ea5baa Mon Sep 17 00:00:00 2001 From: Rodney Norris Date: Tue, 21 Jan 2025 14:24:35 -0600 Subject: [PATCH] [Search] remove as & ws telemetry usage (#206974) ## Summary Removing usage of telemetry for AppSearch & Workplace Search ### Checklist - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --- .../kea_logic/telemetry_logic.mock.ts | 2 -- .../applications/shared/telemetry/index.ts | 6 +--- .../shared/telemetry/send_telemetry.test.tsx | 26 +------------- .../shared/telemetry/send_telemetry.tsx | 20 ----------- .../shared/telemetry/telemetry_logic.test.ts | 22 ------------ .../shared/telemetry/telemetry_logic.ts | 10 +----- .../enterprise_search/telemetry.test.ts | 36 +++++-------------- .../routes/enterprise_search/telemetry.ts | 10 +----- 8 files changed, 12 insertions(+), 120 deletions(-) diff --git a/x-pack/solutions/search/plugins/enterprise_search/public/applications/__mocks__/kea_logic/telemetry_logic.mock.ts b/x-pack/solutions/search/plugins/enterprise_search/public/applications/__mocks__/kea_logic/telemetry_logic.mock.ts index fbc1537e733e7..ca2bc9a5b2151 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/public/applications/__mocks__/kea_logic/telemetry_logic.mock.ts +++ b/x-pack/solutions/search/plugins/enterprise_search/public/applications/__mocks__/kea_logic/telemetry_logic.mock.ts @@ -8,8 +8,6 @@ export const mockTelemetryActions = { sendTelemetry: jest.fn(), sendEnterpriseSearchTelemetry: jest.fn(), - sendAppSearchTelemetry: jest.fn(), - sendWorkplaceSearchTelemetry: jest.fn(), }; jest.mock('../../shared/telemetry', () => ({ diff --git a/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared/telemetry/index.ts b/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared/telemetry/index.ts index 91d886027b9b2..f79f6c76dcbde 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared/telemetry/index.ts +++ b/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared/telemetry/index.ts @@ -6,8 +6,4 @@ */ export { TelemetryLogic } from './telemetry_logic'; -export { - SendEnterpriseSearchTelemetry, - SendAppSearchTelemetry, - SendWorkplaceSearchTelemetry, -} from './send_telemetry'; +export { SendEnterpriseSearchTelemetry } from './send_telemetry'; diff --git a/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared/telemetry/send_telemetry.test.tsx b/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared/telemetry/send_telemetry.test.tsx index 3ec501b1e79ef..bbf2c9730ef69 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared/telemetry/send_telemetry.test.tsx +++ b/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared/telemetry/send_telemetry.test.tsx @@ -12,11 +12,7 @@ import React from 'react'; import { shallow } from 'enzyme'; -import { - SendEnterpriseSearchTelemetry, - SendAppSearchTelemetry, - SendWorkplaceSearchTelemetry, -} from '.'; +import { SendEnterpriseSearchTelemetry } from '.'; describe('Telemetry component helpers', () => { beforeEach(() => { @@ -32,24 +28,4 @@ describe('Telemetry component helpers', () => { product: 'enterprise_search', }); }); - - it('SendAppSearchTelemetry', () => { - shallow(); - - expect(mockTelemetryActions.sendTelemetry).toHaveBeenCalledWith({ - action: 'clicked', - metric: 'button', - product: 'app_search', - }); - }); - - it('SendWorkplaceSearchTelemetry', () => { - shallow(); - - expect(mockTelemetryActions.sendTelemetry).toHaveBeenCalledWith({ - action: 'error', - metric: 'not_found', - product: 'workplace_search', - }); - }); }); diff --git a/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared/telemetry/send_telemetry.tsx b/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared/telemetry/send_telemetry.tsx index 1759b4075deca..c8130769b6750 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared/telemetry/send_telemetry.tsx +++ b/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared/telemetry/send_telemetry.tsx @@ -27,23 +27,3 @@ export const SendEnterpriseSearchTelemetry: React.FC = ({ return null; }; - -export const SendAppSearchTelemetry: React.FC = ({ action, metric }) => { - const { sendTelemetry } = useActions(TelemetryLogic); - - useEffect(() => { - sendTelemetry({ action, metric, product: 'app_search' }); - }, [action, metric]); - - return null; -}; - -export const SendWorkplaceSearchTelemetry: React.FC = ({ action, metric }) => { - const { sendTelemetry } = useActions(TelemetryLogic); - - useEffect(() => { - sendTelemetry({ action, metric, product: 'workplace_search' }); - }, [action, metric]); - - return null; -}; diff --git a/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared/telemetry/telemetry_logic.test.ts b/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared/telemetry/telemetry_logic.test.ts index d8d0442707730..e5137056bfbd0 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared/telemetry/telemetry_logic.test.ts +++ b/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared/telemetry/telemetry_logic.test.ts @@ -61,27 +61,5 @@ describe('Telemetry logic', () => { }); }); }); - - describe('sendAppSearchTelemetry', () => { - it('calls sendTelemetry with the product populated', () => { - TelemetryLogic.actions.sendAppSearchTelemetry(telemetryEvent); - - expect(TelemetryLogic.actions.sendTelemetry).toHaveBeenCalledWith({ - ...telemetryEvent, - product: 'app_search', - }); - }); - }); - - describe('sendWorkplaceSearchTelemetry', () => { - it('calls sendTelemetry with the product populated', () => { - TelemetryLogic.actions.sendWorkplaceSearchTelemetry(telemetryEvent); - - expect(TelemetryLogic.actions.sendTelemetry).toHaveBeenCalledWith({ - ...telemetryEvent, - product: 'workplace_search', - }); - }); - }); }); }); diff --git a/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared/telemetry/telemetry_logic.ts b/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared/telemetry/telemetry_logic.ts index cdd2f6e09c0a1..69c88023d15f8 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared/telemetry/telemetry_logic.ts +++ b/x-pack/solutions/search/plugins/enterprise_search/public/applications/shared/telemetry/telemetry_logic.ts @@ -13,15 +13,13 @@ import { HttpLogic } from '../http'; interface SendTelemetry { action: 'viewed' | 'error' | 'clicked'; metric: string; // e.g., 'setup_guide' - product: 'enterprise_search' | 'app_search' | 'workplace_search'; + product: 'enterprise_search'; } export type SendTelemetryHelper = Omit; interface TelemetryActions { sendTelemetry(args: SendTelemetry): SendTelemetry; sendEnterpriseSearchTelemetry(args: SendTelemetryHelper): SendTelemetryHelper; - sendAppSearchTelemetry(args: SendTelemetryHelper): SendTelemetryHelper; - sendWorkplaceSearchTelemetry(args: SendTelemetryHelper): SendTelemetryHelper; } export const TelemetryLogic = kea>({ @@ -29,8 +27,6 @@ export const TelemetryLogic = kea>({ actions: { sendTelemetry: ({ action, metric, product }) => ({ action, metric, product }), sendEnterpriseSearchTelemetry: ({ action, metric }) => ({ action, metric }), - sendAppSearchTelemetry: ({ action, metric }) => ({ action, metric }), - sendWorkplaceSearchTelemetry: ({ action, metric }) => ({ action, metric }), }, listeners: ({ actions }) => ({ sendTelemetry: async ({ action, metric, product }: SendTelemetry) => { @@ -44,9 +40,5 @@ export const TelemetryLogic = kea>({ }, sendEnterpriseSearchTelemetry: ({ action, metric }: SendTelemetryHelper) => actions.sendTelemetry({ action, metric, product: 'enterprise_search' }), - sendAppSearchTelemetry: ({ action, metric }: SendTelemetryHelper) => - actions.sendTelemetry({ action, metric, product: 'app_search' }), - sendWorkplaceSearchTelemetry: ({ action, metric }: SendTelemetryHelper) => - actions.sendTelemetry({ action, metric, product: 'workplace_search' }), }), }); diff --git a/x-pack/solutions/search/plugins/enterprise_search/server/routes/enterprise_search/telemetry.test.ts b/x-pack/solutions/search/plugins/enterprise_search/server/routes/enterprise_search/telemetry.test.ts index 01cf70cdd3945..bed543fce6f67 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/server/routes/enterprise_search/telemetry.test.ts +++ b/x-pack/solutions/search/plugins/enterprise_search/server/routes/enterprise_search/telemetry.test.ts @@ -41,19 +41,19 @@ describe('Enterprise Search Telemetry API', () => { }); describe('PUT /internal/enterprise_search/stats', () => { - it('increments the saved objects counter for App Search', async () => { + it('increments the saved objects counter for Enterprise Search', async () => { (incrementUICounter as jest.Mock).mockImplementation(jest.fn(() => successResponse)); await mockRouter.callRoute({ body: { - product: 'app_search', + product: 'enterprise_search', action: 'viewed', metric: 'setup_guide', }, }); expect(incrementUICounter).toHaveBeenCalledWith({ - id: 'app_search_telemetry', + id: 'enterprise_search_telemetry', savedObjects: expect.any(Object), uiAction: 'ui_viewed', metric: 'setup_guide', @@ -61,26 +61,6 @@ describe('Enterprise Search Telemetry API', () => { expect(mockRouter.response.ok).toHaveBeenCalledWith({ body: successResponse }); }); - it('increments the saved objects counter for Workplace Search', async () => { - (incrementUICounter as jest.Mock).mockImplementation(jest.fn(() => successResponse)); - - await mockRouter.callRoute({ - body: { - product: 'workplace_search', - action: 'clicked', - metric: 'onboarding_card_button', - }, - }); - - expect(incrementUICounter).toHaveBeenCalledWith({ - id: 'workplace_search_telemetry', - savedObjects: expect.any(Object), - uiAction: 'ui_clicked', - metric: 'onboarding_card_button', - }); - expect(mockRouter.response.ok).toHaveBeenCalledWith({ body: successResponse }); - }); - it('throws an error when incrementing fails', async () => { (incrementUICounter as jest.Mock).mockImplementation(jest.fn(() => Promise.reject('Failed'))); @@ -112,21 +92,21 @@ describe('Enterprise Search Telemetry API', () => { describe('validates', () => { it('correctly', () => { const request = { - body: { product: 'workplace_search', action: 'viewed', metric: 'setup_guide' }, + body: { product: 'enterprise_search', action: 'viewed', metric: 'setup_guide' }, }; mockRouter.shouldValidate(request); }); it('wrong product string', () => { const request = { - body: { product: 'workspace_space_search', action: 'viewed', metric: 'setup_guide' }, + body: { product: 'enterprise_space_search', action: 'viewed', metric: 'setup_guide' }, }; mockRouter.shouldThrow(request); }); it('wrong action string', () => { const request = { - body: { product: 'app_search', action: 'invalid', metric: 'setup_guide' }, + body: { product: 'enterprise_search', action: 'invalid', metric: 'setup_guide' }, }; mockRouter.shouldThrow(request); }); @@ -142,12 +122,12 @@ describe('Enterprise Search Telemetry API', () => { }); it('action is missing', () => { - const request = { body: { product: 'app_search', metric: 'engines_overview' } }; + const request = { body: { product: 'enterprise_search', metric: 'setup_guide' } }; mockRouter.shouldThrow(request); }); it('metric is missing', () => { - const request = { body: { product: 'app_search', action: 'error' } }; + const request = { body: { product: 'enterprise_search', action: 'error' } }; mockRouter.shouldThrow(request); }); }); diff --git a/x-pack/solutions/search/plugins/enterprise_search/server/routes/enterprise_search/telemetry.ts b/x-pack/solutions/search/plugins/enterprise_search/server/routes/enterprise_search/telemetry.ts index 4b272293c7d5f..b3b12d829662b 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/server/routes/enterprise_search/telemetry.ts +++ b/x-pack/solutions/search/plugins/enterprise_search/server/routes/enterprise_search/telemetry.ts @@ -7,17 +7,13 @@ import { schema } from '@kbn/config-schema'; -import { AS_TELEMETRY_NAME } from '../../collectors/app_search/telemetry'; import { ES_TELEMETRY_NAME } from '../../collectors/enterprise_search/telemetry'; import { incrementUICounter } from '../../collectors/lib/telemetry'; -import { WS_TELEMETRY_NAME } from '../../collectors/workplace_search/telemetry'; import { RouteDependencies } from '../../plugin'; const productToTelemetryMap = { enterprise_search: ES_TELEMETRY_NAME, - app_search: AS_TELEMETRY_NAME, - workplace_search: WS_TELEMETRY_NAME, }; export function registerTelemetryRoute({ router, getSavedObjectsService }: RouteDependencies) { @@ -26,11 +22,7 @@ export function registerTelemetryRoute({ router, getSavedObjectsService }: Route path: '/internal/enterprise_search/stats', validate: { body: schema.object({ - product: schema.oneOf([ - schema.literal('app_search'), - schema.literal('workplace_search'), - schema.literal('enterprise_search'), - ]), + product: schema.oneOf([schema.literal('enterprise_search')]), action: schema.oneOf([ schema.literal('viewed'), schema.literal('clicked'),