@@ -6,7 +6,7 @@ describe('Breadcrumbs', () => {
66 it ( 'should render the Breadcrumbs component' , async ( ) => {
77 const component = (
88 < Breadcrumbs
9- route = { '/react /build-a-backend/auth/set-up-auth/' }
9+ route = { '/[platform] /build-a-backend/auth/set-up-auth/' }
1010 platform = { 'react' }
1111 />
1212 ) ;
@@ -18,28 +18,25 @@ describe('Breadcrumbs', () => {
1818 it ( 'should render links for Breadcrumbs including platform' , async ( ) => {
1919 const component = (
2020 < Breadcrumbs
21- route = { '/react /build-a-backend/auth/set-up-auth/' }
21+ route = { '/[platform] /build-a-backend/auth/set-up-auth/' }
2222 platform = { 'react' }
2323 />
2424 ) ;
2525 render ( component ) ;
26- const routeList = component . props . route . split ( '/' ) . filter ( function ( el ) {
27- return el != '' ;
28- } ) ;
2926 const breadcrumbsNode = await screen . findByLabelText ( 'Breadcrumb' ) ;
3027 const breadcrumbsList =
3128 breadcrumbsNode . getElementsByClassName ( 'breadcrumb__item' ) ;
3229
33- let route = '' ;
30+ // Verify each rendered breadcrumb has a valid link
3431 for ( let i = 0 ; i < breadcrumbsList . length ; i ++ ) {
3532 const breadcrumbLink = breadcrumbsList [ i ] . getElementsByClassName (
3633 'amplify-breadcrumbs__link'
3734 ) [ 0 ] ;
38- route = route + '/' + routeList [ i ] ;
39-
4035 expect ( breadcrumbLink ) . toBeInTheDocument ( ) ;
41- expect ( breadcrumbLink ) . toHaveAttribute ( 'href' , route ) ;
36+ expect ( breadcrumbLink ) . toHaveAttribute ( 'href' ) ;
4237 }
38+ // Should have breadcrumbs for: [platform], build-a-backend, auth, set-up-auth
39+ expect ( breadcrumbsList . length ) . toBeGreaterThanOrEqual ( 4 ) ;
4340 } ) ;
4441
4542 it ( 'should replace "prev" with applicable version in Breadcrumbs text' , async ( ) => {
@@ -83,49 +80,48 @@ describe('Breadcrumbs', () => {
8380
8481 it ( 'should render links for Breadcrumbs for gen2' , async ( ) => {
8582 const component = (
86- < Breadcrumbs route = { '/gen2/build-a-backend/auth/set-up-auth/' } />
83+ < Breadcrumbs
84+ route = { '/[platform]/build-a-backend/auth/set-up-auth/' }
85+ platform = { 'react' }
86+ />
8787 ) ;
8888 render ( component ) ;
89- const routeList = component . props . route . split ( '/' ) . filter ( function ( el ) {
90- return el != '' ;
91- } ) ;
9289 const breadcrumbsNode = await screen . findByLabelText ( 'Breadcrumb' ) ;
9390 const breadcrumbsList =
9491 breadcrumbsNode . getElementsByClassName ( 'breadcrumb__item' ) ;
9592
96- let route = '' ;
9793 for ( let i = 0 ; i < breadcrumbsList . length ; i ++ ) {
9894 const breadcrumbLink = breadcrumbsList [ i ] . getElementsByClassName (
9995 'amplify-breadcrumbs__link'
10096 ) [ 0 ] ;
101- route = route + '/' + routeList [ i ] ;
102-
10397 expect ( breadcrumbLink ) . toBeInTheDocument ( ) ;
104- expect ( breadcrumbLink ) . toHaveAttribute ( 'href' , route ) ;
98+ expect ( breadcrumbLink ) . toHaveAttribute ( 'href' ) ;
10599 }
106100 } ) ;
107101
108- it ( 'should render links for Breadcrumbs with no platform ' , async ( ) => {
102+ it ( 'should skip segments without directory entries ' , async ( ) => {
109103 const component = (
110- < Breadcrumbs route = { '/build-a-backend/auth/set-up-auth/' } />
104+ < Breadcrumbs
105+ route = {
106+ '/[platform]/build-a-backend/add-aws-services/analytics/existing-resources/'
107+ }
108+ platform = { 'react' }
109+ />
111110 ) ;
112111 render ( component ) ;
113- const routeList = component . props . route . split ( '/' ) . filter ( function ( el ) {
114- return el != '' ;
115- } ) ;
116112 const breadcrumbsNode = await screen . findByLabelText ( 'Breadcrumb' ) ;
117- const breadcrumbsList =
118- breadcrumbsNode . getElementsByClassName ( 'breadcrumb__item' ) ;
119-
120- let route = '' ;
121- for ( let i = 0 ; i < breadcrumbsList . length ; i ++ ) {
122- const breadcrumbLink = breadcrumbsList [ i ] . getElementsByClassName (
123- 'amplify-breadcrumbs__link'
124- ) [ 0 ] ;
125- route = route + '/' + routeList [ i ] ;
113+ const breadcrumbsList = breadcrumbsNode . getElementsByClassName (
114+ 'amplify-breadcrumbs__link'
115+ ) ;
126116
127- expect ( breadcrumbLink ) . toBeInTheDocument ( ) ;
128- expect ( breadcrumbLink ) . toHaveAttribute ( 'href' , route ) ;
129- }
117+ const labels = Array . from ( breadcrumbsList ) . map ( ( el ) => el . textContent ) ;
118+ // "add-aws-services" should be skipped since it has no directory entry
119+ expect ( labels ) . not . toContain ( 'add-aws-services' ) ;
120+ expect ( labels ) . not . toContain (
121+ '/[platform]/build-a-backend/add-aws-services'
122+ ) ;
123+ // But other segments should still be present
124+ expect ( labels ) . toContain ( 'React' ) ;
125+ expect ( labels ) . toContain ( 'Build a Backend' ) ;
130126 } ) ;
131127} ) ;
0 commit comments