diff --git a/src/app/components/Metadata/index.test.tsx b/src/app/components/Metadata/index.test.tsx index 6606afada3b..f6c99dadcca 100644 --- a/src/app/components/Metadata/index.test.tsx +++ b/src/app/components/Metadata/index.test.tsx @@ -57,6 +57,7 @@ interface MetadataWithContextProps extends MetadataProps { pageType: PageTypes; id?: string | null; pathname: string; + isUK?: boolean; } const MetadataWithContext = ({ @@ -79,6 +80,7 @@ const MetadataWithContext = ({ mentionsTags, hasAppleItunesAppBanner, hasAmpPage, + isUK = false, }: MetadataWithContextProps) => ( { }); }); +it(`should render the canonical link's top level domain as .co.uk for UK article pages`, async () => { + render( + , + ); + + await waitFor(() => { + const actual = document + .querySelector('head > link[rel="canonical"]') + ?.getAttribute('href'); + + expect(actual).toEqual( + 'https://www.bbc.co.uk/sport/cricket/articles/c0000000001o', + ); + }); +}); + +it(`should render the canonical link's top level domain as .com for WS article pages`, async () => { + render( + , + ); + + await waitFor(() => { + const actual = document + .querySelector('head > link[rel="canonical"]') + ?.getAttribute('href'); + + expect(actual).toEqual('https://www.bbc.com/mundo/c0000000001o'); + }); +}); + it.each` service | pathName ${'news'} | ${'/news/56427710'} diff --git a/src/app/components/Metadata/index.tsx b/src/app/components/Metadata/index.tsx index c631c2cbda4..9f664c73419 100644 --- a/src/app/components/Metadata/index.tsx +++ b/src/app/components/Metadata/index.tsx @@ -61,6 +61,7 @@ const MetadataContainer = ({ canonicalNonUkLink, ampNonUkLink, pathname, + isUK, } = useContext(RequestContext); const { @@ -102,6 +103,19 @@ const MetadataContainer = ({ }, ]; + const pathsForUkLink = [ + '/sport/formula1', + '/sport/cricket/articles', + '/sport/rugby_union/articles', + '/sport/rugby_league/articles', + ]; + + const isSport = pathsForUkLink.some( + path => pathname && pathname.startsWith(path), + ); + + const canonicalToUse = isUK && isSport ? canonicalUkLink : canonicalNonUkLink; + const htmlAttributes = { dir, lang, @@ -134,7 +148,7 @@ const MetadataContainer = ({ content="width=device-width, initial-scale=1, minimum-scale=1" /> {pageTitle} - + {isEnglishService && alternateLinksEnglishSites.map(renderAlternateLinks)} {isoLang && !isEnglishService &&