diff --git a/packages/frontend-app-api/src/routing/RouteTracker.test.tsx b/packages/frontend-app-api/src/routing/RouteTracker.test.tsx
index 0696b533df..0e66d0e50d 100644
--- a/packages/frontend-app-api/src/routing/RouteTracker.test.tsx
+++ b/packages/frontend-app-api/src/routing/RouteTracker.test.tsx
@@ -14,7 +14,7 @@
* limitations under the License.
*/
import { TestApiProvider } from '@backstage/test-utils';
-import React from 'react';
+import React, { useEffect } from 'react';
import { BackstageRouteObject } from './types';
import { fireEvent, render } from '@testing-library/react';
import { RouteTracker } from './RouteTracker';
@@ -25,6 +25,7 @@ import {
AnalyticsApi,
analyticsApiRef,
AppNode,
+ useAnalytics,
} from '@backstage/frontend-plugin-api';
import { MATCH_ALL_ROUTE } from './extractRouteInfoFromAppNode';
@@ -186,31 +187,46 @@ describe('RouteTracker', () => {
});
});
- it.skip('should return default context when it would have otherwise matched on the root path', async () => {
+ it('should return default context when it would have otherwise matched on the root path', async () => {
+ const Dummy = () => {
+ const analytics = useAnalytics();
+ useEffect(() => {
+ analytics.captureEvent('click', 'test', {});
+ }, [analytics]);
+ return
dummy
;
+ };
+
render(
- Non-extension>}
- />
+ } />
,
);
- expect(mockedAnalytics.captureEvent).toHaveBeenCalledWith({
+ expect(mockedAnalytics.captureEvent).toHaveBeenNthCalledWith(1, {
action: 'navigate',
attributes: {},
context: {
- extension: 'App',
+ extensionId: 'App',
pluginId: 'root',
},
subject: '/not-routable-extension',
value: undefined,
});
+ expect(mockedAnalytics.captureEvent).toHaveBeenNthCalledWith(2, {
+ action: 'click',
+ attributes: undefined,
+ context: {
+ extensionId: 'App',
+ pluginId: 'root',
+ },
+ subject: 'test',
+ value: undefined,
+ });
});
it('should return parent route context on navigating to a sub-route', async () => {
diff --git a/packages/frontend-app-api/src/routing/RouteTracker.tsx b/packages/frontend-app-api/src/routing/RouteTracker.tsx
index 7bceb05cf9..8cddca5c68 100644
--- a/packages/frontend-app-api/src/routing/RouteTracker.tsx
+++ b/packages/frontend-app-api/src/routing/RouteTracker.tsx
@@ -20,7 +20,7 @@ import {
useAnalytics,
AnalyticsContext,
AnalyticsEventAttributes,
-} from '@backstage/core-plugin-api';
+} from '@backstage/frontend-plugin-api';
import { BackstageRouteObject } from './types';
/**
diff --git a/packages/frontend-app-api/src/routing/extractRouteInfoFromAppNode.test.ts b/packages/frontend-app-api/src/routing/extractRouteInfoFromAppNode.test.ts
index 112e1435ae..c94a06a442 100644
--- a/packages/frontend-app-api/src/routing/extractRouteInfoFromAppNode.test.ts
+++ b/packages/frontend-app-api/src/routing/extractRouteInfoFromAppNode.test.ts
@@ -19,6 +19,7 @@ import { BackstagePlugin } from '@backstage/core-plugin-api';
import { extractRouteInfoFromAppNode } from './extractRouteInfoFromAppNode';
import {
AnyRouteRefParams,
+ AppNode,
Extension,
RouteRef,
coreExtensionData,
@@ -99,8 +100,10 @@ function routeObj(
children: any[] = [],
type: 'mounted' | 'gathered' = 'mounted',
backstagePlugin?: BackstagePlugin,
+ appNode?: AppNode,
) {
return {
+ appNode,
path: path,
caseSensitive: false,
element: type,
@@ -171,7 +174,14 @@ describe('discovery', () => {
[ref5, ref1],
]);
expect(info.routeObjects).toEqual([
- routeObj('nothing', []),
+ routeObj(
+ 'nothing',
+ [],
+ undefined,
+ undefined,
+ undefined,
+ expect.any(Object),
+ ),
routeObj(
'foo',
[ref1],
@@ -179,16 +189,41 @@ describe('discovery', () => {
routeObj(
'bar/:id',
[ref2],
- [routeObj('baz', [ref3], undefined, undefined, expect.any(Object))],
+ [
+ routeObj(
+ 'baz',
+ [ref3],
+ undefined,
+ undefined,
+ expect.any(Object),
+ expect.any(Object),
+ ),
+ ],
undefined,
expect.any(Object),
+ expect.any(Object),
+ ),
+ routeObj(
+ 'blop',
+ [ref5],
+ undefined,
+ undefined,
+ expect.any(Object),
+ expect.any(Object),
),
- routeObj('blop', [ref5], undefined, undefined, expect.any(Object)),
],
undefined,
expect.any(Object),
+ expect.any(Object),
+ ),
+ routeObj(
+ 'divsoup',
+ [ref4],
+ undefined,
+ undefined,
+ expect.any(Object),
+ expect.any(Object),
),
- routeObj('divsoup', [ref4], undefined, undefined, expect.any(Object)),
]);
});
@@ -349,13 +384,30 @@ describe('discovery', () => {
[ref5, ref3],
]);
expect(info.routeObjects).toEqual([
- routeObj('foo', [ref1, ref2], [], 'mounted', expect.any(Object)),
+ routeObj(
+ 'foo',
+ [ref1, ref2],
+ [],
+ 'mounted',
+ expect.any(Object),
+ expect.any(Object),
+ ),
routeObj(
'bar',
[ref3],
- [routeObj('', [ref4, ref5], [], 'mounted', expect.any(Object))],
+ [
+ routeObj(
+ '',
+ [ref4, ref5],
+ [],
+ 'mounted',
+ expect.any(Object),
+ expect.any(Object),
+ ),
+ ],
'mounted',
expect.any(Object),
+ expect.any(Object),
),
]);
});
@@ -429,18 +481,22 @@ describe('discovery', () => {
undefined,
undefined,
expect.any(Object),
+ expect.any(Object),
),
],
undefined,
expect.any(Object),
+ expect.any(Object),
),
],
'mounted',
expect.any(Object),
+ expect.any(Object),
),
],
undefined,
expect.any(Object),
+ expect.any(Object),
),
]);
});
@@ -499,7 +555,14 @@ describe('discovery', () => {
'r',
[],
[
- routeObj('x', [ref1], [], 'mounted', expect.any(Object)),
+ routeObj(
+ 'x',
+ [ref1],
+ [],
+ 'mounted',
+ expect.any(Object),
+ expect.any(Object),
+ ),
routeObj(
'y',
[],
@@ -514,6 +577,7 @@ describe('discovery', () => {
undefined,
'mounted',
expect.any(Object),
+ expect.any(Object),
),
routeObj(
'b',
@@ -521,15 +585,22 @@ describe('discovery', () => {
undefined,
'mounted',
expect.any(Object),
+ expect.any(Object),
),
],
'mounted',
expect.any(Object),
+ expect.any(Object),
),
],
'mounted',
+ undefined,
+ expect.any(Object),
),
],
+ undefined,
+ undefined,
+ expect.any(Object),
),
]);
});