/usr/share/grafana/public/app/features/dashboard/utils
import { getDashboardModel } from 'test/helpers/getDashboardModel'; import * as runtime from '@grafana/runtime'; import { trackDashboardLoaded } from './tracking'; describe('trackDashboardLoaded', () => { it('should report dashboard_loaded interaction with correct parameters', () => { const dashboardJSON = { uid: 'dashboard-123', title: 'Test Dashboard', panels: [ { id: 1, type: 'row', repeat: 'dc', gridPos: { x: 0, y: 0, h: 1, w: 24 } }, { id: 2, type: 'stat', repeat: 'app', repeatDirection: 'h', gridPos: { x: 0, y: 1, h: 2, w: 8 } }, { id: 3, type: 'graph', repeatDirection: 'h', gridPos: { x: 0, y: 1, h: 2, w: 8 } }, { id: 4, type: 'timeseries', repeatDirection: 'h', gridPos: { x: 0, y: 1, h: 2, w: 8 } }, { id: 5, type: 'grafana-worldmap-panel', repeatDirection: 'h', gridPos: { x: 0, y: 1, h: 2, w: 8 } }, { id: 6, type: 'geomap', repeatDirection: 'h', gridPos: { x: 0, y: 1, h: 2, w: 8 } }, { id: 7, type: 'graph', repeatDirection: 'h', gridPos: { x: 0, y: 1, h: 2, w: 8 } }, ], templating: { list: [ { type: 'query', name: 'Query 1' }, { type: 'interval', name: 'Interval 1' }, { type: 'query', name: 'Query 2' }, ], }, timepicker: { nowDelay: '1m', }, liveNow: true, }; const model = getDashboardModel(dashboardJSON); const reportInteractionSpy = jest.spyOn(runtime, 'reportInteraction'); trackDashboardLoaded(model, 200, 16); expect(reportInteractionSpy).toHaveBeenCalledWith('dashboards_init_dashboard_completed', { duration: 200, isScene: false, isDynamicDashboard: false, uid: 'dashboard-123', title: 'Test Dashboard', schemaVersion: model.schemaVersion, // This value is based on public/app/features/dashboard/state/DashboardMigrator.ts#L81 panels_count: 7, variable_type_query_count: 2, variable_type_interval_count: 1, version_before_migration: 16, panel_type_row_count: 1, panel_type_stat_count: 1, panel_type_timeseries_count: 3, panel_type_geomap_count: 2, settings_nowdelay: '1m', settings_livenow: true, }); }); });
.
Edit
..
Edit
dashboard.test.ts
Edit
dashboard.ts
Edit
getPanelChromeProps.tsx
Edit
getPanelMenu.test.ts
Edit
getPanelMenu.ts
Edit
getRefreshFromUrl.test.ts
Edit
getRefreshFromUrl.ts
Edit
loadSnapshotData.ts
Edit
panel.test.ts
Edit
panel.ts
Edit
panelMerge.test.ts
Edit
panelMerge.ts
Edit
screen.ts
Edit
timeRange.ts
Edit
tracking.test.ts
Edit
tracking.ts
Edit