diff --git a/x-pack/legacy/plugins/apm/public/components/app/Main/UpdateBreadcrumbs.test.tsx b/x-pack/legacy/plugins/apm/public/components/app/Main/UpdateBreadcrumbs.test.tsx
index 97f8c941911b6..5bf8cb8271fa4 100644
--- a/x-pack/legacy/plugins/apm/public/components/app/Main/UpdateBreadcrumbs.test.tsx
+++ b/x-pack/legacy/plugins/apm/public/components/app/Main/UpdateBreadcrumbs.test.tsx
@@ -7,15 +7,14 @@
import { mount } from 'enzyme';
import React from 'react';
import { MemoryRouter } from 'react-router-dom';
-import { UpdateBreadcrumbs } from './UpdateBreadcrumbs';
-import { getRoutes } from './route_config';
+import { ApmPluginContextValue } from '../../../context/ApmPluginContext';
import {
- MockApmPluginContextWrapper,
- mockApmPluginContextValue
+ mockApmPluginContextValue,
+ MockApmPluginContextWrapper
} from '../../../utils/testHelpers';
-import { ApmPluginContextValue } from '../../../context/ApmPluginContext';
+import { routes } from './route_config';
+import { UpdateBreadcrumbs } from './UpdateBreadcrumbs';
-const routes = getRoutes({ serviceMapEnabled: true });
const setBreadcrumbs = jest.fn();
function expectBreadcrumbToMatchSnapshot(route: string, params = '') {
diff --git a/x-pack/legacy/plugins/apm/public/components/app/Main/route_config/index.tsx b/x-pack/legacy/plugins/apm/public/components/app/Main/route_config/index.tsx
index 1d76a98573617..2f7df3c5a4acd 100644
--- a/x-pack/legacy/plugins/apm/public/components/app/Main/route_config/index.tsx
+++ b/x-pack/legacy/plugins/apm/public/components/app/Main/route_config/index.tsx
@@ -42,187 +42,175 @@ const renderAsRedirectTo = (to: string) => {
);
};
-export function getRoutes({
- serviceMapEnabled
-}: {
- serviceMapEnabled: boolean;
-}): BreadcrumbRoute[] {
- const routes: BreadcrumbRoute[] = [
- {
- exact: true,
- path: '/',
- render: renderAsRedirectTo('/services'),
- breadcrumb: 'APM',
- name: RouteName.HOME
- },
- {
- exact: true,
- path: '/services',
- component: () => ,
- breadcrumb: i18n.translate('xpack.apm.breadcrumb.servicesTitle', {
- defaultMessage: 'Services'
- }),
- name: RouteName.SERVICES
- },
- {
- exact: true,
- path: '/traces',
- component: () => ,
- breadcrumb: i18n.translate('xpack.apm.breadcrumb.tracesTitle', {
- defaultMessage: 'Traces'
- }),
- name: RouteName.TRACES
- },
- {
- exact: true,
- path: '/settings',
- render: renderAsRedirectTo('/settings/agent-configuration'),
- breadcrumb: i18n.translate('xpack.apm.breadcrumb.listSettingsTitle', {
- defaultMessage: 'Settings'
- }),
- name: RouteName.SETTINGS
- },
- {
- exact: true,
- path: '/settings/apm-indices',
- component: () => (
-
-
-
- ),
- breadcrumb: i18n.translate('xpack.apm.breadcrumb.settings.indicesTitle', {
- defaultMessage: 'Indices'
- }),
- name: RouteName.INDICES
- },
- {
- exact: true,
- path: '/settings/agent-configuration',
- component: () => (
-
-
-
- ),
- breadcrumb: i18n.translate(
- 'xpack.apm.breadcrumb.settings.agentConfigurationTitle',
- {
- defaultMessage: 'Agent Configuration'
- }
- ),
- name: RouteName.AGENT_CONFIGURATION
- },
- {
- exact: true,
- path: '/services/:serviceName',
- breadcrumb: ({ match }) => match.params.serviceName,
- render: (props: RouteComponentProps) =>
- renderAsRedirectTo(
- `/services/${props.match.params.serviceName}/transactions`
- )(props),
- name: RouteName.SERVICE
- },
- // errors
- {
- exact: true,
- path: '/services/:serviceName/errors/:groupId',
- component: ErrorGroupDetails,
- breadcrumb: ({ match }) => match.params.groupId,
- name: RouteName.ERROR
- },
- {
- exact: true,
- path: '/services/:serviceName/errors',
- component: () => ,
- breadcrumb: i18n.translate('xpack.apm.breadcrumb.errorsTitle', {
- defaultMessage: 'Errors'
- }),
- name: RouteName.ERRORS
- },
- // transactions
- {
- exact: true,
- path: '/services/:serviceName/transactions',
- component: () => ,
- breadcrumb: i18n.translate('xpack.apm.breadcrumb.transactionsTitle', {
- defaultMessage: 'Transactions'
- }),
- name: RouteName.TRANSACTIONS
- },
- // metrics
- {
- exact: true,
- path: '/services/:serviceName/metrics',
- component: () => ,
- breadcrumb: metricsBreadcrumb,
- name: RouteName.METRICS
- },
- // service nodes, only enabled for java agents for now
- {
- exact: true,
- path: '/services/:serviceName/nodes',
- component: () => ,
- breadcrumb: i18n.translate('xpack.apm.breadcrumb.nodesTitle', {
- defaultMessage: 'JVMs'
- }),
- name: RouteName.SERVICE_NODES
- },
- // node metrics
- {
- exact: true,
- path: '/services/:serviceName/nodes/:serviceNodeName/metrics',
- component: () => ,
- breadcrumb: ({ location }) => {
- const { serviceNodeName } = resolveUrlParams(location, {});
+export const routes: BreadcrumbRoute[] = [
+ {
+ exact: true,
+ path: '/',
+ render: renderAsRedirectTo('/services'),
+ breadcrumb: 'APM',
+ name: RouteName.HOME
+ },
+ {
+ exact: true,
+ path: '/services',
+ component: () => ,
+ breadcrumb: i18n.translate('xpack.apm.breadcrumb.servicesTitle', {
+ defaultMessage: 'Services'
+ }),
+ name: RouteName.SERVICES
+ },
+ {
+ exact: true,
+ path: '/traces',
+ component: () => ,
+ breadcrumb: i18n.translate('xpack.apm.breadcrumb.tracesTitle', {
+ defaultMessage: 'Traces'
+ }),
+ name: RouteName.TRACES
+ },
+ {
+ exact: true,
+ path: '/settings',
+ render: renderAsRedirectTo('/settings/agent-configuration'),
+ breadcrumb: i18n.translate('xpack.apm.breadcrumb.listSettingsTitle', {
+ defaultMessage: 'Settings'
+ }),
+ name: RouteName.SETTINGS
+ },
+ {
+ exact: true,
+ path: '/settings/apm-indices',
+ component: () => (
+
+
+
+ ),
+ breadcrumb: i18n.translate('xpack.apm.breadcrumb.settings.indicesTitle', {
+ defaultMessage: 'Indices'
+ }),
+ name: RouteName.INDICES
+ },
+ {
+ exact: true,
+ path: '/settings/agent-configuration',
+ component: () => (
+
+
+
+ ),
+ breadcrumb: i18n.translate(
+ 'xpack.apm.breadcrumb.settings.agentConfigurationTitle',
+ {
+ defaultMessage: 'Agent Configuration'
+ }
+ ),
+ name: RouteName.AGENT_CONFIGURATION
+ },
+ {
+ exact: true,
+ path: '/services/:serviceName',
+ breadcrumb: ({ match }) => match.params.serviceName,
+ render: (props: RouteComponentProps) =>
+ renderAsRedirectTo(
+ `/services/${props.match.params.serviceName}/transactions`
+ )(props),
+ name: RouteName.SERVICE
+ },
+ // errors
+ {
+ exact: true,
+ path: '/services/:serviceName/errors/:groupId',
+ component: ErrorGroupDetails,
+ breadcrumb: ({ match }) => match.params.groupId,
+ name: RouteName.ERROR
+ },
+ {
+ exact: true,
+ path: '/services/:serviceName/errors',
+ component: () => ,
+ breadcrumb: i18n.translate('xpack.apm.breadcrumb.errorsTitle', {
+ defaultMessage: 'Errors'
+ }),
+ name: RouteName.ERRORS
+ },
+ // transactions
+ {
+ exact: true,
+ path: '/services/:serviceName/transactions',
+ component: () => ,
+ breadcrumb: i18n.translate('xpack.apm.breadcrumb.transactionsTitle', {
+ defaultMessage: 'Transactions'
+ }),
+ name: RouteName.TRANSACTIONS
+ },
+ // metrics
+ {
+ exact: true,
+ path: '/services/:serviceName/metrics',
+ component: () => ,
+ breadcrumb: metricsBreadcrumb,
+ name: RouteName.METRICS
+ },
+ // service nodes, only enabled for java agents for now
+ {
+ exact: true,
+ path: '/services/:serviceName/nodes',
+ component: () => ,
+ breadcrumb: i18n.translate('xpack.apm.breadcrumb.nodesTitle', {
+ defaultMessage: 'JVMs'
+ }),
+ name: RouteName.SERVICE_NODES
+ },
+ // node metrics
+ {
+ exact: true,
+ path: '/services/:serviceName/nodes/:serviceNodeName/metrics',
+ component: () => ,
+ breadcrumb: ({ location }) => {
+ const { serviceNodeName } = resolveUrlParams(location, {});
- if (serviceNodeName === SERVICE_NODE_NAME_MISSING) {
- return UNIDENTIFIED_SERVICE_NODES_LABEL;
- }
+ if (serviceNodeName === SERVICE_NODE_NAME_MISSING) {
+ return UNIDENTIFIED_SERVICE_NODES_LABEL;
+ }
- return serviceNodeName || '';
- },
- name: RouteName.SERVICE_NODE_METRICS
+ return serviceNodeName || '';
},
- {
- exact: true,
- path: '/services/:serviceName/transactions/view',
- component: TransactionDetails,
- breadcrumb: ({ location }) => {
- const query = toQuery(location.search);
- return query.transactionName as string;
- },
- name: RouteName.TRANSACTION_NAME
+ name: RouteName.SERVICE_NODE_METRICS
+ },
+ {
+ exact: true,
+ path: '/services/:serviceName/transactions/view',
+ component: TransactionDetails,
+ breadcrumb: ({ location }) => {
+ const query = toQuery(location.search);
+ return query.transactionName as string;
},
- {
- exact: true,
- path: '/link-to/trace/:traceId',
- component: TraceLink,
- breadcrumb: null,
- name: RouteName.LINK_TO_TRACE
- }
- ];
+ name: RouteName.TRANSACTION_NAME
+ },
+ {
+ exact: true,
+ path: '/link-to/trace/:traceId',
+ component: TraceLink,
+ breadcrumb: null,
+ name: RouteName.LINK_TO_TRACE
+ },
- if (serviceMapEnabled) {
- routes.push(
- {
- exact: true,
- path: '/service-map',
- component: () => ,
- breadcrumb: i18n.translate('xpack.apm.breadcrumb.serviceMapTitle', {
- defaultMessage: 'Service Map'
- }),
- name: RouteName.SERVICE_MAP
- },
- {
- exact: true,
- path: '/services/:serviceName/service-map',
- component: () => ,
- breadcrumb: i18n.translate('xpack.apm.breadcrumb.serviceMapTitle', {
- defaultMessage: 'Service Map'
- }),
- name: RouteName.SINGLE_SERVICE_MAP
- }
- );
+ {
+ exact: true,
+ path: '/service-map',
+ component: () => ,
+ breadcrumb: i18n.translate('xpack.apm.breadcrumb.serviceMapTitle', {
+ defaultMessage: 'Service Map'
+ }),
+ name: RouteName.SERVICE_MAP
+ },
+ {
+ exact: true,
+ path: '/services/:serviceName/service-map',
+ component: () => ,
+ breadcrumb: i18n.translate('xpack.apm.breadcrumb.serviceMapTitle', {
+ defaultMessage: 'Service Map'
+ }),
+ name: RouteName.SINGLE_SERVICE_MAP
}
-
- return routes;
-}
+];
diff --git a/x-pack/legacy/plugins/apm/public/components/app/TraceLink/__test__/TraceLink.test.tsx b/x-pack/legacy/plugins/apm/public/components/app/TraceLink/__test__/TraceLink.test.tsx
index d1254e1e1e2ad..fe58fc39c6cfa 100644
--- a/x-pack/legacy/plugins/apm/public/components/app/TraceLink/__test__/TraceLink.test.tsx
+++ b/x-pack/legacy/plugins/apm/public/components/app/TraceLink/__test__/TraceLink.test.tsx
@@ -3,28 +3,28 @@
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
-import React from 'react';
import { render } from '@testing-library/react';
import { shallow } from 'enzyme';
-import * as urlParamsHooks from '../../../../hooks/useUrlParams';
-import * as hooks from '../../../../hooks/useFetcher';
+import React from 'react';
import { TraceLink } from '../';
+import * as hooks from '../../../../hooks/useFetcher';
+import * as urlParamsHooks from '../../../../hooks/useUrlParams';
import { MockApmPluginContextWrapper } from '../../../../utils/testHelpers';
-import * as routeConfig from '../../Main/route_config';
-import { BreadcrumbRoute } from '../../Main/ProvideBreadcrumbs';
const renderOptions = { wrapper: MockApmPluginContextWrapper };
-jest.spyOn(routeConfig, 'getRoutes').mockReturnValue([
- {
- path: '/services/:serviceName/transactions/view',
- name: 'transaction_name'
- },
- {
- path: '/traces',
- name: 'traces'
- }
-] as BreadcrumbRoute[]);
+jest.mock('../../Main/route_config', () => ({
+ routes: [
+ {
+ path: '/services/:serviceName/transactions/view',
+ name: 'transaction_name'
+ },
+ {
+ path: '/traces',
+ name: 'traces'
+ }
+ ]
+}));
describe('TraceLink', () => {
afterAll(() => {
diff --git a/x-pack/legacy/plugins/apm/public/new-platform/plugin.tsx b/x-pack/legacy/plugins/apm/public/new-platform/plugin.tsx
index 38dc82f01b386..64784617442ef 100644
--- a/x-pack/legacy/plugins/apm/public/new-platform/plugin.tsx
+++ b/x-pack/legacy/plugins/apm/public/new-platform/plugin.tsx
@@ -25,7 +25,7 @@ import { px, unit, units } from '../style/variables';
import { LoadingIndicatorProvider } from '../context/LoadingIndicatorContext';
import { LicenseProvider } from '../context/LicenseContext';
import { UpdateBreadcrumbs } from '../components/app/Main/UpdateBreadcrumbs';
-import { getRoutes } from '../components/app/Main/route_config';
+import { routes } from '../components/app/Main/route_config';
import { ScrollToTopOnPathChange } from '../components/app/Main/ScrollToTopOnPathChange';
import { MatchedRouteProvider } from '../context/MatchedRouteContext';
import { createStaticIndexPattern } from '../services/rest/index_pattern';
@@ -34,7 +34,6 @@ import { setReadonlyBadge } from './updateBadge';
import { featureCatalogueEntry } from './featureCatalogueEntry';
import { getConfigFromInjectedMetadata } from './getConfigFromInjectedMetadata';
import { toggleAppLinkInNav } from './toggleAppLinkInNav';
-import { BreadcrumbRoute } from '../components/app/Main/ProvideBreadcrumbs';
import { ApmPluginContext } from '../context/ApmPluginContext';
export const REACT_APP_ROOT_ID = 'react-apm-root';
@@ -45,7 +44,7 @@ const MainContainer = styled.main`
height: 100%;
`;
-const App = ({ routes }: { routes: BreadcrumbRoute[] }) => {
+const App = () => {
return (
@@ -115,8 +114,6 @@ export class ApmPlugin
// Until then we use a shim to get it from legacy metadata:
const packageInfo = metadata as PackageInfo;
- const routes = getRoutes(config);
-
// render APM feedback link in global help menu
setHelpExtension(core);
setReadonlyBadge(core);
@@ -138,7 +135,7 @@ export class ApmPlugin
-
+