@@ -9,6 +9,7 @@ import { getGeneratedAnalyticsMetadata } from '@cloudscape-design/component-tool
9
9
10
10
import AppLayout from '../../../lib/components/app-layout' ;
11
11
import BreadcrumbGroup , { BreadcrumbGroupProps } from '../../../lib/components/breadcrumb-group' ;
12
+ import { metrics } from '../../../lib/components/internal/metrics' ;
12
13
import { awsuiPluginsInternal } from '../../../lib/components/internal/plugins/api' ;
13
14
import createWrapper from '../../../lib/components/test-utils/dom' ;
14
15
import { describeEachAppLayout } from './utils' ;
@@ -57,6 +58,11 @@ async function renderAsync(jsx: React.ReactElement) {
57
58
return result ;
58
59
}
59
60
61
+ let sendPanoramaMetricSpy : jest . SpyInstance ;
62
+ beforeEach ( ( ) => {
63
+ sendPanoramaMetricSpy = jest . spyOn ( metrics , 'sendOpsMetricObject' ) . mockImplementation ( ( ) => { } ) ;
64
+ } ) ;
65
+
60
66
afterEach ( ( ) => {
61
67
// force unmount for all rendered component to run clean state assertions
62
68
cleanup ( ) ;
@@ -66,6 +72,7 @@ afterEach(() => {
66
72
breadcrumbInstances : [ ] ,
67
73
breadcrumbRegistrations : [ ] ,
68
74
} ) ;
75
+ jest . resetAllMocks ( ) ;
69
76
} ) ;
70
77
71
78
describeEachAppLayout ( { themes : [ 'refresh-toolbar' ] , sizes : [ 'desktop' ] } , ( ) => {
@@ -74,13 +81,15 @@ describeEachAppLayout({ themes: ['refresh-toolbar'], sizes: ['desktop'] }, () =>
74
81
await delay ( ) ;
75
82
expect ( findAllBreadcrumbsInstances ( ) ) . toHaveLength ( 1 ) ;
76
83
expect ( wrapper . findBreadcrumbGroup ( ) ! . findBreadcrumbLinks ( ) ) . toHaveLength ( 2 ) ;
84
+ expect ( sendPanoramaMetricSpy ) . not . toHaveBeenCalled ( ) ;
77
85
} ) ;
78
86
79
87
test ( 'renders normal breadcrumbs when placed inside the breadcrumbs slot' , async ( ) => {
80
88
render ( < AppLayout breadcrumbs = { < BreadcrumbGroup items = { defaultBreadcrumbs } /> } /> ) ;
81
89
await delay ( ) ;
82
90
expect ( findDiscoveredBreadcrumbs ( ) ) . toBeFalsy ( ) ;
83
91
expect ( findAppLayoutBreadcrumbItems ( ) ) . toHaveLength ( 2 ) ;
92
+ expect ( sendPanoramaMetricSpy ) . not . toHaveBeenCalled ( ) ;
84
93
} ) ;
85
94
86
95
test ( 'no relocation happens on the initial render' , ( ) => {
@@ -106,6 +115,18 @@ describeEachAppLayout({ themes: ['refresh-toolbar'], sizes: ['desktop'] }, () =>
106
115
expect ( findAppLayoutBreadcrumbItems ( ) ) . toHaveLength ( 2 ) ;
107
116
} ) ;
108
117
118
+ test ( 'reports a single metric when global breadcrumbs used' , async ( ) => {
119
+ const { rerender } = await renderAsync ( < AppLayout content = { < BreadcrumbGroup items = { defaultBreadcrumbs } /> } /> ) ;
120
+ expect ( sendPanoramaMetricSpy ) . toHaveBeenCalledTimes ( 1 ) ;
121
+ expect ( sendPanoramaMetricSpy ) . toHaveBeenCalledWith ( 'awsui-global-breadcrumbs-used' , { breadcrumbs : 'Home > Page' } ) ;
122
+
123
+ sendPanoramaMetricSpy . mockClear ( ) ;
124
+ rerender (
125
+ < AppLayout content = { < BreadcrumbGroup items = { [ defaultBreadcrumbs [ 0 ] , { text : 'Another' , href : '/another' } ] } /> } />
126
+ ) ;
127
+ expect ( sendPanoramaMetricSpy ) . toHaveBeenCalledTimes ( 0 ) ;
128
+ } ) ;
129
+
109
130
test ( 'event handlers work for relocated breadcrumbs' , async ( ) => {
110
131
const onFollow = jest . fn ( event => event . preventDefault ( ) ) ;
111
132
await renderAsync ( < AppLayout content = { < BreadcrumbGroup items = { defaultBreadcrumbs } onFollow = { onFollow } /> } /> ) ;
@@ -334,6 +355,14 @@ describeEachAppLayout({ themes: ['refresh-toolbar'], sizes: ['desktop'] }, () =>
334
355
) ;
335
356
expect ( findAllBreadcrumbsInstances ( ) ) . toHaveLength ( 2 ) ;
336
357
} ) ;
358
+
359
+ test ( 'does not report metrics if globalization is disabled' , async ( ) => {
360
+ render (
361
+ < AppLayout content = { < BreadcrumbGroup items = { defaultBreadcrumbs } { ...{ __disableGlobalization : true } } /> } />
362
+ ) ;
363
+ await delay ( ) ;
364
+ expect ( sendPanoramaMetricSpy ) . toHaveBeenCalledTimes ( 0 ) ;
365
+ } ) ;
337
366
} ) ;
338
367
339
368
describe ( 'without feature flag' , ( ) => {
@@ -343,6 +372,7 @@ describe('without feature flag', () => {
343
372
expect ( findAllBreadcrumbsInstances ( ) ) . toHaveLength ( 1 ) ;
344
373
expect ( wrapper . findAppLayout ( ) ! . findBreadcrumbs ( ) ) . toBeFalsy ( ) ;
345
374
expect ( wrapper . findAppLayout ( ) ! . findContentRegion ( ) . findBreadcrumbGroup ( ) ) . toBeTruthy ( ) ;
375
+ expect ( sendPanoramaMetricSpy ) . not . toHaveBeenCalled ( ) ;
346
376
} ) ;
347
377
} ) ;
348
378
0 commit comments