From 8ce2e370dfdc105c208491fb369934cb3f5068b4 Mon Sep 17 00:00:00 2001 From: HarveyPeachey Date: Fri, 24 Jul 2026 12:44:45 +0100 Subject: [PATCH 1/8] Enable Toucan fake fullscreen handling on iOS [copilot] Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- src/app/components/Curation/index.tsx | 22 +-- src/app/components/MediaLoader/index.test.tsx | 134 +++++++++++++++++- src/app/components/MediaLoader/index.tsx | 134 +++++++++++++++++- 3 files changed, 264 insertions(+), 26 deletions(-) diff --git a/src/app/components/Curation/index.tsx b/src/app/components/Curation/index.tsx index 7f7b9e7cbbc..16839a4cd80 100644 --- a/src/app/components/Curation/index.tsx +++ b/src/app/components/Curation/index.tsx @@ -52,20 +52,6 @@ const getGridComponent = (componentName: string | null) => { } }; -const enterFakeScreenCallback = () => { - const consentBanner = document.getElementById('consent-banner'); - if (consentBanner) { - consentBanner.style.zIndex = '-1'; - } -}; - -const exitFakeScreenCallback = () => { - const consentBanner = document.getElementById('consent-banner'); - if (consentBanner) { - consentBanner.style.zIndex = '2147483647'; - } -}; - interface CurationProps extends Curation { // keep this local so we do not change the shared bff curation data shape experimentProps?: ComponentExperimentProps; @@ -238,13 +224,7 @@ export default ({ aria-labelledby="bbcMediaPlayer0" data-testid={mediaCollectionId} > - + ) : null; } diff --git a/src/app/components/MediaLoader/index.test.tsx b/src/app/components/MediaLoader/index.test.tsx index cd4c6add514..fa474dd15d3 100644 --- a/src/app/components/MediaLoader/index.test.tsx +++ b/src/app/components/MediaLoader/index.test.tsx @@ -5,10 +5,11 @@ import { } from '#app/components/react-testing-library-with-providers'; import { Helmet } from 'react-helmet'; import useLocation from '#app/hooks/useLocation'; -import { TV_PAGE } from '#app/routes/utils/pageTypes'; +import { LIVE_PAGE, TV_PAGE } from '#app/routes/utils/pageTypes'; import MediaPlayer from '.'; import { aresMediaBlocks, + livePageAudioClipMediaBlock, onDemandTvBlocks, onDemandTvBlocksWithOverrides, } from './fixture'; @@ -121,6 +122,7 @@ describe('MediaLoader', () => { const mockRequire = jest.fn(); const mockBump = { player: () => ({ + bind: jest.fn(), load: jest.fn(), }), }; @@ -144,6 +146,136 @@ describe('MediaLoader', () => { expect(window.mediaPlayers.testId).not.toBeNull(); }); + + it('adds and removes fullscreen classes on fake fullscreen enter/exit events', async () => { + const mockRequire = jest.fn(); + const bind = jest.fn(); + const mockBump = { + player: () => ({ + bind, + load: jest.fn(), + }), + }; + + window.requirejs = mockRequire; + + await act(async () => { + render(, { + id: 'testId', + }); + }); + + const callbackFn = mockRequire.mock.calls[0][1]; + callbackFn(mockBump); + + const enterFakeFullscreen = bind.mock.calls.find( + ([event]) => event === 'enterFakeFullscreen', + )?.[1]; + const exitFakeFullscreen = bind.mock.calls.find( + ([event]) => event === 'exitFakeFullscreen', + )?.[1]; + + expect(typeof enterFakeFullscreen).toBe('function'); + expect(typeof exitFakeFullscreen).toBe('function'); + + act(() => { + enterFakeFullscreen({}); + }); + + expect(document.documentElement.classList).toContain( + 'simorgh-player-fullscreen', + ); + expect(document.body.classList).toContain('simorgh-player-fullscreen'); + + act(() => { + exitFakeFullscreen({}); + }); + + expect(document.documentElement.classList).not.toContain( + 'simorgh-player-fullscreen', + ); + expect(document.body.classList).not.toContain( + 'simorgh-player-fullscreen', + ); + }); + + it('composes caller fake fullscreen handlers with internal fullscreen handlers', async () => { + const onEnterFakeFullscreen = jest.fn(); + const mockRequire = jest.fn(); + const bind = jest.fn(); + const mockBump = { + player: () => ({ + bind, + load: jest.fn(), + }), + }; + + window.requirejs = mockRequire; + + await act(async () => { + render( + , + { + id: 'testId', + }, + ); + }); + + const callbackFn = mockRequire.mock.calls[0][1]; + callbackFn(mockBump); + + const enterFakeFullscreenBindings = bind.mock.calls.filter( + ([event]) => event === 'enterFakeFullscreen', + ); + + expect(enterFakeFullscreenBindings).toHaveLength(2); + + act(() => { + enterFakeFullscreenBindings.forEach(([, handler]) => handler({})); + }); + + expect(onEnterFakeFullscreen).toHaveBeenCalled(); + expect(document.documentElement.classList).toContain( + 'simorgh-player-fullscreen', + ); + }); + + it('does not bind fake fullscreen handlers for audio players', async () => { + const mockRequire = jest.fn(); + const bind = jest.fn(); + const mockBump = { + player: () => ({ + bind, + load: jest.fn(), + }), + }; + + window.requirejs = mockRequire; + + await act(async () => { + render( + , + { + id: 'testId', + pageType: LIVE_PAGE, + }, + ); + }); + + const callbackFn = mockRequire.mock.calls[0][1]; + callbackFn(mockBump); + + const fakeFullscreenBindings = bind.mock.calls.filter(([event]) => + ['enterFakeFullscreen', 'exitFakeFullscreen'].includes(event), + ); + + expect(fakeFullscreenBindings).toHaveLength(0); + }); }); describe('Placeholder', () => { diff --git a/src/app/components/MediaLoader/index.tsx b/src/app/components/MediaLoader/index.tsx index dd131cd373d..f23daa009df 100644 --- a/src/app/components/MediaLoader/index.tsx +++ b/src/app/components/MediaLoader/index.tsx @@ -13,6 +13,7 @@ import { import filterForBlockType from '#lib/utilities/blockHandlers'; import { PageTypes } from '#app/models/types/global'; import { EventTrackingContext } from '#app/contexts/EventTrackingContext'; +import onClient from '#app/lib/utilities/onClient'; import { BumpType, EventMapping, @@ -39,6 +40,52 @@ const PAGETYPES_IGNORE_PLACEHOLDER: PageTypes[] = [ ]; const logger = nodeLogger(__filename); +const PLAYER_FULLSCREEN_CLASS = 'simorgh-player-fullscreen'; +const FAKE_FULLSCREEN_LAYER_CLASS = 'simorgh-fake-fullscreen-layer'; +const FAKE_FULLSCREEN_ACTIVE_CLASS = 'simorgh-player-fullscreen-active'; +const ACTIVE_FULLSCREEN_LOADER_STATE = 'active-fake-fullscreen'; + +const fakeFullscreenStyles = ` + html.${PLAYER_FULLSCREEN_CLASS} { + overflow: hidden; + } + + body.${PLAYER_FULLSCREEN_CLASS} { + overflow: auto; + } + + .${FAKE_FULLSCREEN_LAYER_CLASS} { + display: none; + background: #000; + position: fixed; + inset: 0; + pointer-events: none; + height: 100lvh; + width: 100vw; + outline: 1000px solid #000; + z-index: 2147483646; + } + + .${FAKE_FULLSCREEN_LAYER_CLASS}.${FAKE_FULLSCREEN_ACTIVE_CLASS} { + display: block; + } + + [data-simorgh-media-loader="${ACTIVE_FULLSCREEN_LOADER_STATE}"] { + position: fixed !important; + inset: 0 !important; + width: 100vw !important; + max-width: none !important; + height: 100lvh !important; + margin: 0 !important; + aspect-ratio: auto !important; + background: #000 !important; + z-index: 2147483647 !important; + } + + [data-simorgh-media-loader="${ACTIVE_FULLSCREEN_LOADER_STATE}"] .media-player { + height: 100% !important; + } +`; type BumpLoaderProps = { nonce?: string | null; @@ -109,6 +156,8 @@ type MediaContainerProps = { uniqueId?: string; noJsMessage?: string; eventMapping?: EventMapping; + shouldHandleFakeFullscreen?: boolean; + onFakeFullscreenChange?: (isActive: boolean) => void; }; const isAudioPlayer = (playerConfig: PlayerConfig) => @@ -120,19 +169,28 @@ const MediaContainer = ({ uniqueId, noJsMessage, eventMapping, + shouldHandleFakeFullscreen = false, + onFakeFullscreenChange, }: MediaContainerProps) => { const playerElementRef = useRef(null); + const onFakeFullscreenChangeRef = useRef(onFakeFullscreenChange); const isAudio = isAudioPlayer(playerConfig); + onFakeFullscreenChangeRef.current = onFakeFullscreenChange; + useEffect(() => { try { window.requirejs(['bump-4'], (Bump: BumpType) => { if (playerElementRef?.current && playerConfig) { // The requirejs callback cannot be async, so we wrap async logic in an inner function and invoke it immediately. const initPlayer = async () => { + const effectiveConfig = shouldHandleFakeFullscreen + ? { ...playerConfig, supportFakeFullscreen: true } + : playerConfig; + const mediaPlayer = Bump.player( playerElementRef.current, - playerConfig, + effectiveConfig, ); if (uniqueId != null) { @@ -154,6 +212,15 @@ const MediaContainer = ({ }); } + if (shouldHandleFakeFullscreen) { + mediaPlayer.bind('enterFakeFullscreen', () => { + onFakeFullscreenChangeRef.current?.(true); + }); + mediaPlayer.bind('exitFakeFullscreen', () => { + onFakeFullscreenChangeRef.current?.(false); + }); + } + if (showAds) { const adTag = await window.dotcom.ads.getAdTag(); @@ -195,7 +262,13 @@ const MediaContainer = ({ } catch (error) { logger.error(MEDIA_PLAYER_STATUS, error); } - }, [playerConfig, showAds, uniqueId, eventMapping]); + }, [ + playerConfig, + showAds, + uniqueId, + eventMapping, + shouldHandleFakeFullscreen, + ]); return (
{ + return () => { + if (!onClient()) return; + if (!hasActivatedFakeFullscreenRef.current) return; + + document.documentElement.classList.remove(PLAYER_FULLSCREEN_CLASS); + document.body.classList.remove(PLAYER_FULLSCREEN_CLASS); + }; + }, []); if (isLite) return null; @@ -293,6 +380,19 @@ const MediaLoader = ({ const noJsMessage = translatedNoJSMessage || translations?.media?.noJs; const hasPlaceholder = Boolean(showPlaceholder && placeholderSrc); + const shouldHandleFakeFullscreen = !isAmp && !embedded && !isAudio; + + const setFakeFullscreenPageState = (isActive: boolean) => { + if (!onClient()) return; + + document.documentElement.classList.toggle( + PLAYER_FULLSCREEN_CLASS, + isActive, + ); + document.body.classList.toggle(PLAYER_FULLSCREEN_CLASS, isActive); + hasActivatedFakeFullscreenRef.current = isActive; + setIsFakeFullscreenActive(isActive); + }; return ( <> @@ -322,9 +422,33 @@ const MediaLoader = ({ noJsMessage={noJsMessage} /> ) : ( - <> + // This wrapper - rather than the figure - is what gets forced above + // page content during fake fullscreen, so the Caption below (page + // furniture) is never pulled into the fullscreen layer with it. +
{showAds && } + {shouldHandleFakeFullscreen && ( + + + + )} + {shouldHandleFakeFullscreen && ( + )} {captionBlock && ( Date: Fri, 24 Jul 2026 14:08:14 +0100 Subject: [PATCH 2/8] Fix visual regression: give fake-fullscreen wrapper div layout sizing [copilot] The inner div wrapping the player content needs flex/height properties so it fills the figure's aspect-ratio constraint for both portrait and landscape orientations. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- src/app/components/MediaLoader/index.styles.ts | 7 +++++++ src/app/components/MediaLoader/index.tsx | 1 + 2 files changed, 8 insertions(+) diff --git a/src/app/components/MediaLoader/index.styles.ts b/src/app/components/MediaLoader/index.styles.ts index 0399f4dd11f..498b024fec7 100644 --- a/src/app/components/MediaLoader/index.styles.ts +++ b/src/app/components/MediaLoader/index.styles.ts @@ -52,6 +52,13 @@ export default { !isEmbedded && commonMarginSpacing, ], + mediaPlayerWrapper: () => + css({ + flex: 1, + minHeight: 0, + height: '100%', + }), + audioMediaContainer: () => css({ height: '165px', diff --git a/src/app/components/MediaLoader/index.tsx b/src/app/components/MediaLoader/index.tsx index f23daa009df..d10d8bd4043 100644 --- a/src/app/components/MediaLoader/index.tsx +++ b/src/app/components/MediaLoader/index.tsx @@ -426,6 +426,7 @@ const MediaLoader = ({ // page content during fake fullscreen, so the Caption below (page // furniture) is never pulled into the fullscreen layer with it.
Date: Fri, 24 Jul 2026 15:08:45 +0100 Subject: [PATCH 3/8] Fix iOS fake fullscreen closing immediately due to player reinit [copilot] buildConfig() was called directly in MediaLoader's render body, producing a new playerConfig object identity on every render. Entering/exiting fake fullscreen updates isFakeFullscreenActive state, re-rendering MediaLoader, which caused MediaContainer's effect to see a changed playerConfig reference and tear down/recreate the Bump player mid-playback - immediately closing the freshly-entered iOS fake fullscreen. Memoise config via useMemo keyed on its real inputs so its identity is stable across re-renders that don't actually change the player configuration. Moved the memoised computation ahead of the isLite early return to keep hook ordering valid. Added a regression test that exercises real React state (rather than the mocked no-op setState used elsewhere in this file) to confirm requirejs/ Bump.player/load are only invoked once even after a fake fullscreen state change. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- src/app/components/MediaLoader/index.test.tsx | 46 ++++++++++++++ src/app/components/MediaLoader/index.tsx | 63 +++++++++++++------ 2 files changed, 90 insertions(+), 19 deletions(-) diff --git a/src/app/components/MediaLoader/index.test.tsx b/src/app/components/MediaLoader/index.test.tsx index fa474dd15d3..63edc071a26 100644 --- a/src/app/components/MediaLoader/index.test.tsx +++ b/src/app/components/MediaLoader/index.test.tsx @@ -276,6 +276,52 @@ describe('MediaLoader', () => { expect(fakeFullscreenBindings).toHaveLength(0); }); + + it('does not reinitialise the player when fake fullscreen state changes', async () => { + // Use the real useState implementation here so entering fake fullscreen + // actually triggers a MediaLoader re-render, reproducing the scenario + // that previously caused the Bump player to be torn down and + // recreated mid-playback (closing iOS fake fullscreen immediately). + (useState as jest.Mock).mockImplementation( + jest.requireActual('react').useState, + ); + + const mockRequire = jest.fn(); + const bind = jest.fn(); + const load = jest.fn(); + const mockBump = { + player: () => ({ + bind, + load, + }), + }; + + window.requirejs = mockRequire; + + await act(async () => { + render(, { + id: 'testId', + pageType: LIVE_PAGE, + }); + }); + + const callbackFn = mockRequire.mock.calls[0][1]; + callbackFn(mockBump); + + expect(mockRequire).toHaveBeenCalledTimes(1); + expect(load).toHaveBeenCalledTimes(1); + + const enterFakeFullscreen = bind.mock.calls.find( + ([event]) => event === 'enterFakeFullscreen', + )?.[1]; + + act(() => { + enterFakeFullscreen({}); + }); + + expect(mockRequire).toHaveBeenCalledTimes(1); + expect(load).toHaveBeenCalledTimes(1); + }); }); describe('Placeholder', () => { diff --git a/src/app/components/MediaLoader/index.tsx b/src/app/components/MediaLoader/index.tsx index d10d8bd4043..96f9f53c8ba 100644 --- a/src/app/components/MediaLoader/index.tsx +++ b/src/app/components/MediaLoader/index.tsx @@ -1,4 +1,4 @@ -import { use, useEffect, useRef, useState } from 'react'; +import { use, useEffect, useMemo, useRef, useState } from 'react'; import { Helmet } from 'react-helmet'; import { RequestContext } from '#contexts/RequestContext'; import { MEDIA_PLAYER_STATUS } from '#app/lib/logger.const'; @@ -331,28 +331,53 @@ const MediaLoader = ({ }; }, []); - if (isLite) return null; - const { model: mediaOverrides } = filterForBlockType(blocks, 'mediaOverrides') || {}; const producer = getProducerFromServiceName(service); - const config = buildConfig({ - id: id || '', - blocks, - counterName: mediaOverrides?.pageIdentifierOverride || pageIdentifier, - statsDestination, - producer, - isAmp, - lang, - pageType, - service, - translations, - adsEnabled, - showAdsBasedOnLocation, - embedded, - defaultImage, - }); + const counterName = mediaOverrides?.pageIdentifierOverride || pageIdentifier; + + // Memoised so playerConfig keeps a stable identity across re-renders that + // aren't caused by a real input change (e.g. the fake fullscreen state + // toggling), otherwise MediaContainer treats it as a new config and + // tears down/recreates the Bump player mid-playback. + const config = useMemo( + () => + buildConfig({ + id: id || '', + blocks, + counterName, + statsDestination, + producer, + isAmp, + lang, + pageType, + service, + translations, + adsEnabled, + showAdsBasedOnLocation, + embedded, + defaultImage, + }), + [ + id, + blocks, + counterName, + statsDestination, + producer, + isAmp, + lang, + pageType, + service, + translations, + adsEnabled, + showAdsBasedOnLocation, + embedded, + defaultImage, + ], + ); + + if (isLite) return null; if (!config) return null; From 36141178ad07aab9dc2eada2b2a36b2a60e93b39 Mon Sep 17 00:00:00 2001 From: HarveyPeachey Date: Tue, 28 Jul 2026 09:34:06 +0100 Subject: [PATCH 4/8] Update integration snapshots for fake fullscreen wrapper div [copilot] Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../__snapshots__/canonical.test.ts.snap | 133 ++++++++-------- .../__snapshots__/canonical.test.ts.snap | 12 +- .../__snapshots__/lite.test.ts.snap | 2 +- .../hausa/__snapshots__/amp.test.ts.snap | 10 +- .../__snapshots__/canonical.test.ts.snap | 12 +- .../news/__snapshots__/amp.test.ts.snap | 10 +- .../news/__snapshots__/canonical.test.ts.snap | 10 +- .../persian/__snapshots__/amp.test.ts.snap | 10 +- .../__snapshots__/canonical.test.ts.snap | 12 +- .../__snapshots__/amp.test.ts.snap | 10 +- .../__snapshots__/canonical.test.ts.snap | 145 ++++++++++-------- .../__snapshots__/amp.test.ts.snap | 3 +- .../__snapshots__/amp.test.ts.snap | 2 +- .../__snapshots__/canonical.test.ts.snap | 2 +- .../portuguese/__snapshots__/amp.test.ts.snap | 10 +- .../scotland/__snapshots__/amp.test.ts.snap | 10 +- .../__snapshots__/canonical.test.ts.snap | 12 +- .../__snapshots__/canonical.test.ts.snap | 129 ++++++++-------- .../__snapshots__/canonical.test.ts.snap | 12 +- .../__snapshots__/canonical.test.ts.snap | 12 +- .../__snapshots__/canonical.test.ts.snap | 12 +- .../__snapshots__/canonical.test.ts.snap | 12 +- .../__snapshots__/canonical.test.ts.snap | 12 +- .../__snapshots__/canonical.test.ts.snap | 35 +++-- .../__snapshots__/canonical.test.ts.snap | 26 ++-- .../__snapshots__/canonical.test.ts.snap | 43 +++--- .../__snapshots__/canonical.test.ts.snap | 43 +++--- .../__snapshots__/canonical.test.ts.snap | 43 +++--- .../pidgin/__snapshots__/amp.test.ts.snap | 14 +- .../__snapshots__/canonical.test.ts.snap | 12 +- .../__snapshots__/canonical.test.ts.snap | 12 +- .../persian/__snapshots__/amp.test.ts.snap | 14 +- .../__snapshots__/canonical.test.ts.snap | 12 +- .../pidgin/__snapshots__/amp.test.ts.snap | 14 +- .../__snapshots__/canonical.test.ts.snap | 12 +- .../__snapshots__/canonical.test.ts.snap | 12 +- .../__snapshots__/canonical.test.ts.snap | 12 +- .../__snapshots__/canonical.test.ts.snap | 12 +- .../__snapshots__/canonical.test.ts.snap | 43 +++--- .../__snapshots__/canonical.test.ts.snap | 12 +- .../__snapshots__/canonical.test.ts.snap | 43 +++--- .../__snapshots__/canonical.test.ts.snap | 43 +++--- .../__snapshots__/canonical.test.ts.snap | 145 ++++++++++-------- .../__snapshots__/canonical.test.ts.snap | 12 +- .../__snapshots__/canonical.test.ts.snap | 145 ++++++++++-------- .../mundo/__snapshots__/amp.test.ts.snap | 14 +- .../__snapshots__/canonical.test.ts.snap | 12 +- .../thai/__snapshots__/amp.test.ts.snap | 14 +- .../thai/__snapshots__/canonical.test.ts.snap | 12 +- .../__snapshots__/canonical.test.ts.snap | 81 +++++----- .../__snapshots__/canonical.test.ts.snap | 53 ++++--- .../hausa/__snapshots__/amp.test.ts.snap | 14 +- .../__snapshots__/canonical.test.ts.snap | 12 +- .../kyrgyz/__snapshots__/amp.test.ts.snap | 14 +- .../__snapshots__/canonical.test.ts.snap | 12 +- .../mundo/__snapshots__/amp.test.ts.snap | 14 +- .../__snapshots__/canonical.test.ts.snap | 12 +- .../__snapshots__/canonical.test.ts.snap | 12 +- 58 files changed, 860 insertions(+), 769 deletions(-) diff --git a/ws-nextjs-app/integration/pages/articles/afrique/__snapshots__/canonical.test.ts.snap b/ws-nextjs-app/integration/pages/articles/afrique/__snapshots__/canonical.test.ts.snap index c5f2673c24e..be7f8c6dfff 100644 --- a/ws-nextjs-app/integration/pages/articles/afrique/__snapshots__/canonical.test.ts.snap +++ b/ws-nextjs-app/integration/pages/articles/afrique/__snapshots__/canonical.test.ts.snap @@ -166,77 +166,86 @@ exports[`Canonical Articles Media Loader renders a valid container 1`] = ` data-e2e="media-loader__container" >
- -
-
+ + +
- 00:30 - - -
- + +
View the full version of the page to see all the content. diff --git a/ws-nextjs-app/integration/pages/articles/pidginEmbedImages/__snapshots__/amp.test.ts.snap b/ws-nextjs-app/integration/pages/articles/pidginEmbedImages/__snapshots__/amp.test.ts.snap index 6641e10c515..f396cc3c192 100644 --- a/ws-nextjs-app/integration/pages/articles/pidginEmbedImages/__snapshots__/amp.test.ts.snap +++ b/ws-nextjs-app/integration/pages/articles/pidginEmbedImages/__snapshots__/amp.test.ts.snap @@ -15,7 +15,7 @@ exports[`AMP Articles Embed Images should match snapshot 1`] = ` fallback="" height="1054" layout="responsive" - src="https://ichef.bbci.co.uk/news/1280/idt2-test/idt2/793f648b-b17f-489a-a473-9e5a71f12684/image/640" + src="https://ichef.bbci.co.uk/news/1280/idt2/idt2/793f648b-b17f-489a-a473-9e5a71f12684/image/640" width="1280" />
diff --git a/ws-nextjs-app/integration/pages/articles/pidginEmbedImages/__snapshots__/canonical.test.ts.snap b/ws-nextjs-app/integration/pages/articles/pidginEmbedImages/__snapshots__/canonical.test.ts.snap index 76130fb6a35..4f4d4c62649 100644 --- a/ws-nextjs-app/integration/pages/articles/pidginEmbedImages/__snapshots__/canonical.test.ts.snap +++ b/ws-nextjs-app/integration/pages/articles/pidginEmbedImages/__snapshots__/canonical.test.ts.snap @@ -14,7 +14,7 @@ exports[`Canonical Articles Embed Images should match snapshot 1`] = ` class="css-1seqhu9" height="1252" loading="eager" - src="https://ichef.bbci.co.uk/news/1632/idt2-test/idt2/793f648b-b17f-489a-a473-9e5a71f12684/image/816" + src="https://ichef.bbci.co.uk/news/1632/idt2/idt2/793f648b-b17f-489a-a473-9e5a71f12684/image/816" style="aspect-ratio:1632 / 1252" width="1632" /> diff --git a/ws-nextjs-app/integration/pages/articles/portuguese/__snapshots__/amp.test.ts.snap b/ws-nextjs-app/integration/pages/articles/portuguese/__snapshots__/amp.test.ts.snap index 8f8061acd69..a67bcda3c11 100644 --- a/ws-nextjs-app/integration/pages/articles/portuguese/__snapshots__/amp.test.ts.snap +++ b/ws-nextjs-app/integration/pages/articles/portuguese/__snapshots__/amp.test.ts.snap @@ -3,35 +3,35 @@ exports[`AMP Articles Flourish Embed Error messages Link should match text and url 1`] = ` { "text": "Acesse a visão integral da página para visualizar todo o conteúdo.", - "url": "http://localhost:7081/portuguese/articles/c72mg3j3x7eo", + "url": "http://192.168.1.106:7081/portuguese/articles/c72mg3j3x7eo", } `; exports[`AMP Articles Flourish Embed Error messages Link should match text and url 2`] = ` { "text": "Acesse a visão integral da página para visualizar todo o conteúdo.", - "url": "http://localhost:7081/portuguese/articles/c72mg3j3x7eo", + "url": "http://192.168.1.106:7081/portuguese/articles/c72mg3j3x7eo", } `; exports[`AMP Articles Flourish Embed Error messages Link should match text and url 3`] = ` { "text": "Acesse a visão integral da página para visualizar todo o conteúdo.", - "url": "http://localhost:7081/portuguese/articles/c72mg3j3x7eo", + "url": "http://192.168.1.106:7081/portuguese/articles/c72mg3j3x7eo", } `; exports[`AMP Articles Flourish Embed Error messages Link should match text and url 4`] = ` { "text": "Acesse a visão integral da página para visualizar todo o conteúdo.", - "url": "http://localhost:7081/portuguese/articles/c72mg3j3x7eo", + "url": "http://192.168.1.106:7081/portuguese/articles/c72mg3j3x7eo", } `; exports[`AMP Articles Flourish Embed Error messages Link should match text and url 5`] = ` { "text": "Acesse a visão integral da página para visualizar todo o conteúdo.", - "url": "http://localhost:7081/portuguese/articles/c72mg3j3x7eo", + "url": "http://192.168.1.106:7081/portuguese/articles/c72mg3j3x7eo", } `; diff --git a/ws-nextjs-app/integration/pages/articles/scotland/__snapshots__/amp.test.ts.snap b/ws-nextjs-app/integration/pages/articles/scotland/__snapshots__/amp.test.ts.snap index b46431394f3..e90f95225d4 100644 --- a/ws-nextjs-app/integration/pages/articles/scotland/__snapshots__/amp.test.ts.snap +++ b/ws-nextjs-app/integration/pages/articles/scotland/__snapshots__/amp.test.ts.snap @@ -94,7 +94,7 @@ exports[`AMP Articles Main heading should match text 1`] = `"This is the headlin exports[`AMP Articles SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/scotland/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/scotland/images/icons/icon-192x192.png", } `; @@ -126,7 +126,7 @@ exports[`AMP Articles SEO Apple Touch Icon should match attributes 5`] = ` } `; -exports[`AMP Articles SEO Canonical link 1`] = `"http://localhost:7081/scotland/articles/czwj5l0n210o"`; +exports[`AMP Articles SEO Canonical link 1`] = `"http://192.168.1.106:7081/scotland/articles/czwj5l0n210o"`; exports[`AMP Articles SEO Dir attribute 1`] = `"ltr"`; @@ -168,7 +168,7 @@ exports[`AMP Articles SEO Linked data should match text 1`] = ` "name": "English", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/scotland/articles/czwj5l0n210o", + "@id": "http://192.168.1.106:7081/scotland/articles/czwj5l0n210o", "@type": "WebPage", "name": "This is the SEO headline of this test article", }, @@ -183,7 +183,7 @@ exports[`AMP Articles SEO Linked data should match text 1`] = ` "name": "BBC", }, "thumbnailUrl": "https://static.files.bbci.co.uk/ws/simorgh-assets/public/scotland/images/metadata/poster-1024x576.png", - "url": "http://localhost:7081/scotland/articles/czwj5l0n210o", + "url": "http://192.168.1.106:7081/scotland/articles/czwj5l0n210o", }, ], } @@ -216,7 +216,7 @@ exports[`AMP Articles SEO OG title 1`] = `"This is the SEO headline of this test exports[`AMP Articles SEO OG type 1`] = `"article"`; -exports[`AMP Articles SEO OG url 1`] = `"http://localhost:7081/scotland/articles/czwj5l0n210o"`; +exports[`AMP Articles SEO OG url 1`] = `"http://192.168.1.106:7081/scotland/articles/czwj5l0n210o"`; exports[`AMP Articles SEO Page title 1`] = `"This is the SEO headline of this test article - BBC Scotland"`; diff --git a/ws-nextjs-app/integration/pages/articles/scotland/__snapshots__/canonical.test.ts.snap b/ws-nextjs-app/integration/pages/articles/scotland/__snapshots__/canonical.test.ts.snap index 8e7edb8b038..ea20cdbb277 100644 --- a/ws-nextjs-app/integration/pages/articles/scotland/__snapshots__/canonical.test.ts.snap +++ b/ws-nextjs-app/integration/pages/articles/scotland/__snapshots__/canonical.test.ts.snap @@ -9,7 +9,7 @@ exports[`Canonical Articles Analytics ATI tracking pixel hostname 1`] = `"https: exports[`Canonical Articles Analytics ATI tracking pixel search params 1`] = ` [ { - "s": "598274", + "s": "598273", }, { "s2": "79", @@ -138,7 +138,7 @@ exports[`Canonical Articles Main heading should match text 1`] = `"This is the h exports[`Canonical Articles SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/scotland/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/scotland/images/icons/icon-192x192.png", } `; @@ -170,7 +170,7 @@ exports[`Canonical Articles SEO Apple Touch Icon should match attributes 5`] = ` } `; -exports[`Canonical Articles SEO Canonical link 1`] = `"http://localhost:7081/scotland/articles/czwj5l0n210o"`; +exports[`Canonical Articles SEO Canonical link 1`] = `"http://192.168.1.106:7081/scotland/articles/czwj5l0n210o"`; exports[`Canonical Articles SEO Dir attribute 1`] = `"ltr"`; @@ -212,7 +212,7 @@ exports[`Canonical Articles SEO Linked data should match text 1`] = ` "name": "English", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/scotland/articles/czwj5l0n210o", + "@id": "http://192.168.1.106:7081/scotland/articles/czwj5l0n210o", "@type": "WebPage", "name": "This is the SEO headline of this test article", }, @@ -227,7 +227,7 @@ exports[`Canonical Articles SEO Linked data should match text 1`] = ` "name": "BBC", }, "thumbnailUrl": "https://static.files.bbci.co.uk/ws/simorgh-assets/public/scotland/images/metadata/poster-1024x576.png", - "url": "http://localhost:7081/scotland/articles/czwj5l0n210o", + "url": "http://192.168.1.106:7081/scotland/articles/czwj5l0n210o", }, ], } @@ -260,7 +260,7 @@ exports[`Canonical Articles SEO OG title 1`] = `"This is the SEO headline of thi exports[`Canonical Articles SEO OG type 1`] = `"article"`; -exports[`Canonical Articles SEO OG url 1`] = `"http://localhost:7081/scotland/articles/czwj5l0n210o"`; +exports[`Canonical Articles SEO OG url 1`] = `"http://192.168.1.106:7081/scotland/articles/czwj5l0n210o"`; exports[`Canonical Articles SEO Page title 1`] = `"This is the SEO headline of this test article - BBC Scotland"`; diff --git a/ws-nextjs-app/integration/pages/av-embeds/russian/__snapshots__/canonical.test.ts.snap b/ws-nextjs-app/integration/pages/av-embeds/russian/__snapshots__/canonical.test.ts.snap index 64cc90bd1dd..b88bd592999 100644 --- a/ws-nextjs-app/integration/pages/av-embeds/russian/__snapshots__/canonical.test.ts.snap +++ b/ws-nextjs-app/integration/pages/av-embeds/russian/__snapshots__/canonical.test.ts.snap @@ -162,77 +162,82 @@ exports[`Canonical Av-embeds Media Loader renders a valid container 1`] = ` data-e2e="media-loader__container" >
- -
-
+ + +
- 02:53 - - -
- + +
diff --git a/ws-nextjs-app/integration/pages/homePage/arabic/__snapshots__/canonical.test.ts.snap b/ws-nextjs-app/integration/pages/homePage/arabic/__snapshots__/canonical.test.ts.snap index 9eb0eba548f..75294e15d94 100644 --- a/ws-nextjs-app/integration/pages/homePage/arabic/__snapshots__/canonical.test.ts.snap +++ b/ws-nextjs-app/integration/pages/homePage/arabic/__snapshots__/canonical.test.ts.snap @@ -23,7 +23,7 @@ exports[`Canonical Home Page Analytics ATI tracking pixel hostname 1`] = `"https exports[`Canonical Home Page Analytics ATI tracking pixel search params 1`] = ` [ { - "s": "598343", + "s": "598342", }, { "s2": "5", @@ -163,7 +163,7 @@ exports[`Canonical Home Page Page content First item in the first curation is th exports[`Canonical Home Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/arabic/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/arabic/images/icons/icon-192x192.png", } `; @@ -195,7 +195,7 @@ exports[`Canonical Home Page SEO Apple Touch Icon should match attributes 5`] = } `; -exports[`Canonical Home Page SEO Canonical link 1`] = `"http://localhost:7081/arabic"`; +exports[`Canonical Home Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/arabic"`; exports[`Canonical Home Page SEO Dir attribute 1`] = `"rtl"`; @@ -224,7 +224,7 @@ exports[`Canonical Home Page SEO Linked data should match text 1`] = ` "name": "Arabic", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/arabic", + "@id": "http://192.168.1.106:7081/arabic", "@type": "WebPage", "name": "BBC News عربي", }, @@ -240,7 +240,7 @@ exports[`Canonical Home Page SEO Linked data should match text 1`] = ` "publishingPrinciples": "https://www.bbc.com/arabic/institutional-49283069", }, "thumbnailUrl": "https://static.files.bbci.co.uk/ws/simorgh-assets/public/arabic/images/metadata/poster-1024x576.png", - "url": "http://localhost:7081/arabic", + "url": "http://192.168.1.106:7081/arabic", }, { "@type": "ItemList", @@ -303,7 +303,7 @@ exports[`Canonical Home Page SEO OG title 1`] = `"BBC News عربي - BBC News exports[`Canonical Home Page SEO OG type 1`] = `"website"`; -exports[`Canonical Home Page SEO OG url 1`] = `"http://localhost:7081/arabic"`; +exports[`Canonical Home Page SEO OG url 1`] = `"http://192.168.1.106:7081/arabic"`; exports[`Canonical Home Page SEO Page title 1`] = `"BBC News عربي - BBC News عربي"`; diff --git a/ws-nextjs-app/integration/pages/homePage/hindi/__snapshots__/canonical.test.ts.snap b/ws-nextjs-app/integration/pages/homePage/hindi/__snapshots__/canonical.test.ts.snap index 39df8d7fd7f..b20a7034bea 100644 --- a/ws-nextjs-app/integration/pages/homePage/hindi/__snapshots__/canonical.test.ts.snap +++ b/ws-nextjs-app/integration/pages/homePage/hindi/__snapshots__/canonical.test.ts.snap @@ -9,7 +9,7 @@ exports[`Canonical Home Page Analytics ATI tracking pixel hostname 1`] = `"https exports[`Canonical Home Page Analytics ATI tracking pixel search params 1`] = ` [ { - "s": "598343", + "s": "598342", }, { "s2": "52", @@ -213,7 +213,7 @@ exports[`Canonical Home Page Page content First item in the first curation is th exports[`Canonical Home Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/hindi/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/hindi/images/icons/icon-192x192.png", } `; @@ -245,7 +245,7 @@ exports[`Canonical Home Page SEO Apple Touch Icon should match attributes 5`] = } `; -exports[`Canonical Home Page SEO Canonical link 1`] = `"http://localhost:7081/hindi"`; +exports[`Canonical Home Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/hindi"`; exports[`Canonical Home Page SEO Dir attribute 1`] = `"ltr"`; @@ -274,7 +274,7 @@ exports[`Canonical Home Page SEO Linked data should match text 1`] = ` "name": "Hindi", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/hindi", + "@id": "http://192.168.1.106:7081/hindi", "@type": "WebPage", "name": "BBC News हिंदी", }, @@ -290,7 +290,7 @@ exports[`Canonical Home Page SEO Linked data should match text 1`] = ` "publishingPrinciples": "https://www.bbc.com/hindi/institutional-50223932", }, "thumbnailUrl": "https://static.files.bbci.co.uk/ws/simorgh-assets/public/hindi/images/metadata/poster-1024x576.png", - "url": "http://localhost:7081/hindi", + "url": "http://192.168.1.106:7081/hindi", }, { "@type": "ItemList", @@ -707,7 +707,7 @@ exports[`Canonical Home Page SEO OG title 1`] = `"BBC News हिंदी - BBC exports[`Canonical Home Page SEO OG type 1`] = `"website"`; -exports[`Canonical Home Page SEO OG url 1`] = `"http://localhost:7081/hindi"`; +exports[`Canonical Home Page SEO OG url 1`] = `"http://192.168.1.106:7081/hindi"`; exports[`Canonical Home Page SEO Page title 1`] = `"BBC News हिंदी - BBC News हिंदी"`; diff --git a/ws-nextjs-app/integration/pages/homePage/kyrgyz/__snapshots__/canonical.test.ts.snap b/ws-nextjs-app/integration/pages/homePage/kyrgyz/__snapshots__/canonical.test.ts.snap index 42a5bc50b41..552d2e30983 100644 --- a/ws-nextjs-app/integration/pages/homePage/kyrgyz/__snapshots__/canonical.test.ts.snap +++ b/ws-nextjs-app/integration/pages/homePage/kyrgyz/__snapshots__/canonical.test.ts.snap @@ -9,7 +9,7 @@ exports[`Canonical Home Page Analytics ATI tracking pixel hostname 1`] = `"https exports[`Canonical Home Page Analytics ATI tracking pixel search params 1`] = ` [ { - "s": "598343", + "s": "598342", }, { "s2": "58", @@ -176,7 +176,7 @@ exports[`Canonical Home Page Page content First item in the first curation is th exports[`Canonical Home Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/kyrgyz/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/kyrgyz/images/icons/icon-192x192.png", } `; @@ -208,7 +208,7 @@ exports[`Canonical Home Page SEO Apple Touch Icon should match attributes 5`] = } `; -exports[`Canonical Home Page SEO Canonical link 1`] = `"http://localhost:7081/kyrgyz"`; +exports[`Canonical Home Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/kyrgyz"`; exports[`Canonical Home Page SEO Dir attribute 1`] = `"ltr"`; @@ -237,7 +237,7 @@ exports[`Canonical Home Page SEO Linked data should match text 1`] = ` "name": "Kyrgyz", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/kyrgyz", + "@id": "http://192.168.1.106:7081/kyrgyz", "@type": "WebPage", "name": "BBC News Kyrgyz", }, @@ -253,7 +253,7 @@ exports[`Canonical Home Page SEO Linked data should match text 1`] = ` "publishingPrinciples": "https://www.bbc.com/kyrgyz/institutional-49677275", }, "thumbnailUrl": "https://static.files.bbci.co.uk/ws/simorgh-assets/public/kyrgyz/images/metadata/poster-1024x576.png", - "url": "http://localhost:7081/kyrgyz", + "url": "http://192.168.1.106:7081/kyrgyz", }, { "@type": "ItemList", @@ -685,7 +685,7 @@ exports[`Canonical Home Page SEO OG title 1`] = `"BBC News Kyrgyz - BBC News К exports[`Canonical Home Page SEO OG type 1`] = `"website"`; -exports[`Canonical Home Page SEO OG url 1`] = `"http://localhost:7081/kyrgyz"`; +exports[`Canonical Home Page SEO OG url 1`] = `"http://192.168.1.106:7081/kyrgyz"`; exports[`Canonical Home Page SEO Page title 1`] = `"BBC News Kyrgyz - BBC News Кыргыз Кызматы"`; diff --git a/ws-nextjs-app/integration/pages/homePage/serbianCyr/__snapshots__/canonical.test.ts.snap b/ws-nextjs-app/integration/pages/homePage/serbianCyr/__snapshots__/canonical.test.ts.snap index 456bf2f22ec..2259cdb568c 100644 --- a/ws-nextjs-app/integration/pages/homePage/serbianCyr/__snapshots__/canonical.test.ts.snap +++ b/ws-nextjs-app/integration/pages/homePage/serbianCyr/__snapshots__/canonical.test.ts.snap @@ -9,7 +9,7 @@ exports[`Canonical Home Page Analytics ATI tracking pixel hostname 1`] = `"https exports[`Canonical Home Page Analytics ATI tracking pixel search params 1`] = ` [ { - "s": "598343", + "s": "598342", }, { "s2": "81", @@ -212,7 +212,7 @@ exports[`Canonical Home Page Page content First item in the first curation is th exports[`Canonical Home Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/serbian/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/serbian/images/icons/icon-192x192.png", } `; @@ -244,7 +244,7 @@ exports[`Canonical Home Page SEO Apple Touch Icon should match attributes 5`] = } `; -exports[`Canonical Home Page SEO Canonical link 1`] = `"http://localhost:7081/serbian/cyr"`; +exports[`Canonical Home Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/serbian/cyr"`; exports[`Canonical Home Page SEO Dir attribute 1`] = `"ltr"`; @@ -273,7 +273,7 @@ exports[`Canonical Home Page SEO Linked data should match text 1`] = ` "name": "Serbian", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/serbian/cyr", + "@id": "http://192.168.1.106:7081/serbian/cyr", "@type": "WebPage", "name": "Главна страница", }, @@ -289,7 +289,7 @@ exports[`Canonical Home Page SEO Linked data should match text 1`] = ` "publishingPrinciples": "https://www.bbc.com/serbian/cyr/institutional-50173730", }, "thumbnailUrl": "https://static.files.bbci.co.uk/ws/simorgh-assets/public/serbian/images/metadata/poster-1024x576.png", - "url": "http://localhost:7081/serbian/cyr", + "url": "http://192.168.1.106:7081/serbian/cyr", }, { "@type": "ItemList", @@ -418,7 +418,7 @@ exports[`Canonical Home Page SEO OG title 1`] = `"Главна страница exports[`Canonical Home Page SEO OG type 1`] = `"website"`; -exports[`Canonical Home Page SEO OG url 1`] = `"http://localhost:7081/serbian/cyr"`; +exports[`Canonical Home Page SEO OG url 1`] = `"http://192.168.1.106:7081/serbian/cyr"`; exports[`Canonical Home Page SEO Page title 1`] = `"Главна страница - BBC News на српском"`; diff --git a/ws-nextjs-app/integration/pages/homePage/serbianLat/__snapshots__/canonical.test.ts.snap b/ws-nextjs-app/integration/pages/homePage/serbianLat/__snapshots__/canonical.test.ts.snap index e71a6fc7d6a..797b3dd25b8 100644 --- a/ws-nextjs-app/integration/pages/homePage/serbianLat/__snapshots__/canonical.test.ts.snap +++ b/ws-nextjs-app/integration/pages/homePage/serbianLat/__snapshots__/canonical.test.ts.snap @@ -9,7 +9,7 @@ exports[`Canonical Home Page Analytics ATI tracking pixel hostname 1`] = `"https exports[`Canonical Home Page Analytics ATI tracking pixel search params 1`] = ` [ { - "s": "598343", + "s": "598342", }, { "s2": "81", @@ -212,7 +212,7 @@ exports[`Canonical Home Page Page content First item in the first curation is th exports[`Canonical Home Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/serbian/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/serbian/images/icons/icon-192x192.png", } `; @@ -244,7 +244,7 @@ exports[`Canonical Home Page SEO Apple Touch Icon should match attributes 5`] = } `; -exports[`Canonical Home Page SEO Canonical link 1`] = `"http://localhost:7081/serbian/lat"`; +exports[`Canonical Home Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/serbian/lat"`; exports[`Canonical Home Page SEO Dir attribute 1`] = `"ltr"`; @@ -273,7 +273,7 @@ exports[`Canonical Home Page SEO Linked data should match text 1`] = ` "name": "Serbian", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/serbian/lat", + "@id": "http://192.168.1.106:7081/serbian/lat", "@type": "WebPage", "name": "Glavna stranica", }, @@ -289,7 +289,7 @@ exports[`Canonical Home Page SEO Linked data should match text 1`] = ` "publishingPrinciples": "https://www.bbc.com/serbian/lat/institutional-50173730", }, "thumbnailUrl": "https://static.files.bbci.co.uk/ws/simorgh-assets/public/serbian/images/metadata/poster-1024x576.png", - "url": "http://localhost:7081/serbian/lat", + "url": "http://192.168.1.106:7081/serbian/lat", }, { "@type": "ItemList", @@ -418,7 +418,7 @@ exports[`Canonical Home Page SEO OG title 1`] = `"Glavna stranica - BBC News na exports[`Canonical Home Page SEO OG type 1`] = `"website"`; -exports[`Canonical Home Page SEO OG url 1`] = `"http://localhost:7081/serbian/lat"`; +exports[`Canonical Home Page SEO OG url 1`] = `"http://192.168.1.106:7081/serbian/lat"`; exports[`Canonical Home Page SEO Page title 1`] = `"Glavna stranica - BBC News na srpskom"`; diff --git a/ws-nextjs-app/integration/pages/live/pidgin/__snapshots__/canonical.test.ts.snap b/ws-nextjs-app/integration/pages/live/pidgin/__snapshots__/canonical.test.ts.snap index dd425940c1b..5c93b9d5cb4 100644 --- a/ws-nextjs-app/integration/pages/live/pidgin/__snapshots__/canonical.test.ts.snap +++ b/ws-nextjs-app/integration/pages/live/pidgin/__snapshots__/canonical.test.ts.snap @@ -22,22 +22,31 @@ exports[`Canonical Live Media Loader renders a valid container 1`] = ` data-e2e="media-loader__container" >
-
@@ -401,7 +410,7 @@ exports[`Canonical On Demand T V Page Recent Episodes List items should match te exports[`Canonical On Demand T V Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/hausa/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/hausa/images/icons/icon-192x192.png", } `; @@ -433,7 +442,7 @@ exports[`Canonical On Demand T V Page SEO Apple Touch Icon should match attribut } `; -exports[`Canonical On Demand T V Page SEO Canonical link 1`] = `"http://localhost:7081/hausa/bbc_hausa_tv/tv/w172yjj83ptptnj"`; +exports[`Canonical On Demand T V Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/hausa/bbc_hausa_tv/tv/w172yjj83ptptnj"`; exports[`Canonical On Demand T V Page SEO Dir attribute 1`] = `"ltr"`; @@ -461,7 +470,7 @@ exports[`Canonical On Demand T V Page SEO Linked data should match text 1`] = ` "name": "Hausa", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/hausa/bbc_hausa_tv/tv/w172yjj83ptptnj", + "@id": "http://192.168.1.106:7081/hausa/bbc_hausa_tv/tv/w172yjj83ptptnj", "@type": "WebPage", "name": "Labaran Talabijin - Labaran Talabijin - BBC News Hausa", }, @@ -477,7 +486,7 @@ exports[`Canonical On Demand T V Page SEO Linked data should match text 1`] = ` "publishingPrinciples": "https://www.bbc.com/hausa/game-da-mu-49283501", }, "thumbnailUrl": "https://static.files.bbci.co.uk/ws/simorgh-assets/public/hausa/images/metadata/poster-1024x576.png", - "url": "http://localhost:7081/hausa/bbc_hausa_tv/tv/w172yjj83ptptnj", + "url": "http://192.168.1.106:7081/hausa/bbc_hausa_tv/tv/w172yjj83ptptnj", }, { "@type": "VideoObject", @@ -505,7 +514,7 @@ exports[`Canonical On Demand T V Page SEO OG title 1`] = `"Labaran Talabijin - L exports[`Canonical On Demand T V Page SEO OG type 1`] = `"website"`; -exports[`Canonical On Demand T V Page SEO OG url 1`] = `"http://localhost:7081/hausa/bbc_hausa_tv/tv/w172yjj83ptptnj"`; +exports[`Canonical On Demand T V Page SEO OG url 1`] = `"http://192.168.1.106:7081/hausa/bbc_hausa_tv/tv/w172yjj83ptptnj"`; exports[`Canonical On Demand T V Page SEO Page title 1`] = `"Labaran Talabijin - Labaran Talabijin - BBC News Hausa - BBC News Hausa"`; diff --git a/ws-nextjs-app/integration/pages/onDemandTVPage/pashto.expired/__snapshots__/canonical.test.ts.snap b/ws-nextjs-app/integration/pages/onDemandTVPage/pashto.expired/__snapshots__/canonical.test.ts.snap index 594cce28032..79292280313 100644 --- a/ws-nextjs-app/integration/pages/onDemandTVPage/pashto.expired/__snapshots__/canonical.test.ts.snap +++ b/ws-nextjs-app/integration/pages/onDemandTVPage/pashto.expired/__snapshots__/canonical.test.ts.snap @@ -9,7 +9,7 @@ exports[`Canonical Pashto On Demand TV Page Analytics ATI tracking pixel hostnam exports[`Canonical Pashto On Demand TV Page Analytics ATI tracking pixel search params 1`] = ` [ { - "s": "598343", + "s": "598342", }, { "s2": "68", @@ -173,7 +173,7 @@ exports[`Canonical Pashto On Demand TV Page Recent Episodes List items should ma exports[`Canonical Pashto On Demand TV Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/pashto/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/pashto/images/icons/icon-192x192.png", } `; @@ -205,7 +205,7 @@ exports[`Canonical Pashto On Demand TV Page SEO Apple Touch Icon should match at } `; -exports[`Canonical Pashto On Demand TV Page SEO Canonical link 1`] = `"http://localhost:7081/pashto/bbc_pashto_tv/tv/w172xtq7x8660m1"`; +exports[`Canonical Pashto On Demand TV Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/pashto/bbc_pashto_tv/tv/w172xtq7x8660m1"`; exports[`Canonical Pashto On Demand TV Page SEO Dir attribute 1`] = `"rtl"`; @@ -233,7 +233,7 @@ exports[`Canonical Pashto On Demand TV Page SEO Linked data should match text 1` "name": "Pashto", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/pashto/bbc_pashto_tv/tv/w172xtq7x8660m1", + "@id": "http://192.168.1.106:7081/pashto/bbc_pashto_tv/tv/w172xtq7x8660m1", "@type": "WebPage", "name": " د بي بي سي خبرونه - نړۍ دا وخت - BBC News پښتو", }, @@ -249,7 +249,7 @@ exports[`Canonical Pashto On Demand TV Page SEO Linked data should match text 1` "publishingPrinciples": "https://www.bbc.com/pashto/institutional-49283007", }, "thumbnailUrl": "https://static.files.bbci.co.uk/ws/simorgh-assets/public/pashto/images/metadata/poster-1024x576.png", - "url": "http://localhost:7081/pashto/bbc_pashto_tv/tv/w172xtq7x8660m1", + "url": "http://192.168.1.106:7081/pashto/bbc_pashto_tv/tv/w172xtq7x8660m1", }, ], } @@ -269,7 +269,7 @@ exports[`Canonical Pashto On Demand TV Page SEO OG title 1`] = `" د بي بي exports[`Canonical Pashto On Demand TV Page SEO OG type 1`] = `"website"`; -exports[`Canonical Pashto On Demand TV Page SEO OG url 1`] = `"http://localhost:7081/pashto/bbc_pashto_tv/tv/w172xtq7x8660m1"`; +exports[`Canonical Pashto On Demand TV Page SEO OG url 1`] = `"http://192.168.1.106:7081/pashto/bbc_pashto_tv/tv/w172xtq7x8660m1"`; exports[`Canonical Pashto On Demand TV Page SEO Page title 1`] = `" د بي بي سي خبرونه - نړۍ دا وخت - BBC News پښتو - BBC News پښتو"`; diff --git a/ws-nextjs-app/integration/pages/onDemandTVPage/pashtoBrand/__snapshots__/canonical.test.ts.snap b/ws-nextjs-app/integration/pages/onDemandTVPage/pashtoBrand/__snapshots__/canonical.test.ts.snap index ddc989ad8b1..bfc11b3ea75 100644 --- a/ws-nextjs-app/integration/pages/onDemandTVPage/pashtoBrand/__snapshots__/canonical.test.ts.snap +++ b/ws-nextjs-app/integration/pages/onDemandTVPage/pashtoBrand/__snapshots__/canonical.test.ts.snap @@ -9,7 +9,7 @@ exports[`Canonical On Demand T V Page Analytics ATI tracking pixel hostname 1`] exports[`Canonical On Demand T V Page Analytics ATI tracking pixel search params 1`] = ` [ { - "s": "598343", + "s": "598342", }, { "s2": "68", @@ -297,77 +297,86 @@ exports[`Canonical On Demand T V Page Media Loader renders a valid container 1`] data-e2e="media-loader__container" >
- -
-
+ + +
- 28:00 - - -
- + +
@@ -404,7 +413,7 @@ exports[`Canonical On Demand T V Page Recent Episodes List items should match te exports[`Canonical On Demand T V Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/pashto/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/pashto/images/icons/icon-192x192.png", } `; @@ -436,7 +445,7 @@ exports[`Canonical On Demand T V Page SEO Apple Touch Icon should match attribut } `; -exports[`Canonical On Demand T V Page SEO Canonical link 1`] = `"http://localhost:7081/pashto/bbc_pashto_tv/tv_programmes/w13xttn4"`; +exports[`Canonical On Demand T V Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/pashto/bbc_pashto_tv/tv_programmes/w13xttn4"`; exports[`Canonical On Demand T V Page SEO Dir attribute 1`] = `"rtl"`; @@ -464,7 +473,7 @@ exports[`Canonical On Demand T V Page SEO Linked data should match text 1`] = ` "name": "Pashto", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/pashto/bbc_pashto_tv/tv_programmes/w13xttn4", + "@id": "http://192.168.1.106:7081/pashto/bbc_pashto_tv/tv_programmes/w13xttn4", "@type": "WebPage", "name": " د بي بي سي خبرونه - د بي بي سي خبرونه - BBC News پښتو", }, @@ -480,7 +489,7 @@ exports[`Canonical On Demand T V Page SEO Linked data should match text 1`] = ` "publishingPrinciples": "https://www.bbc.com/pashto/institutional-49283007", }, "thumbnailUrl": "https://static.files.bbci.co.uk/ws/simorgh-assets/public/pashto/images/metadata/poster-1024x576.png", - "url": "http://localhost:7081/pashto/bbc_pashto_tv/tv_programmes/w13xttn4", + "url": "http://192.168.1.106:7081/pashto/bbc_pashto_tv/tv_programmes/w13xttn4", }, { "@type": "VideoObject", @@ -512,7 +521,7 @@ exports[`Canonical On Demand T V Page SEO OG title 1`] = `" د بي بي سي خ exports[`Canonical On Demand T V Page SEO OG type 1`] = `"website"`; -exports[`Canonical On Demand T V Page SEO OG url 1`] = `"http://localhost:7081/pashto/bbc_pashto_tv/tv_programmes/w13xttn4"`; +exports[`Canonical On Demand T V Page SEO OG url 1`] = `"http://192.168.1.106:7081/pashto/bbc_pashto_tv/tv_programmes/w13xttn4"`; exports[`Canonical On Demand T V Page SEO Page title 1`] = `" د بي بي سي خبرونه - د بي بي سي خبرونه - BBC News پښتو - BBC News پښتو"`; diff --git a/ws-nextjs-app/integration/pages/photoGalleryPage/mundo/__snapshots__/amp.test.ts.snap b/ws-nextjs-app/integration/pages/photoGalleryPage/mundo/__snapshots__/amp.test.ts.snap index db92d105071..c04cbc27ce0 100644 --- a/ws-nextjs-app/integration/pages/photoGalleryPage/mundo/__snapshots__/amp.test.ts.snap +++ b/ws-nextjs-app/integration/pages/photoGalleryPage/mundo/__snapshots__/amp.test.ts.snap @@ -10,7 +10,7 @@ exports[`AMP Photo Gallery Page Analytics ATI 1`] = ` "base": "https://logws1363.ati-host.net/hit.xiti?", "pageview": [ { - "s": "598343", + "s": "598342", }, { "s2": "62", @@ -86,7 +86,7 @@ exports[`AMP Photo Gallery Page Analytics chartbeat 1`] = ` { "vars": { "contentType": "PGL", - "domain": "test.bbc.co.uk", + "domain": "mundo.bbc.co.uk", "sections": "Mundo, Mundo - PGL", "title": "Río 2016, el antes y el ahora: cómo ha cambiado la ropa deportiva en más de un siglo de juegos olímpicos", "uid": 50924, @@ -200,7 +200,7 @@ exports[`AMP Photo Gallery Page Main heading should match text 1`] = `"Río 2016 exports[`AMP Photo Gallery Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/mundo/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/mundo/images/icons/icon-192x192.png", } `; @@ -232,7 +232,7 @@ exports[`AMP Photo Gallery Page SEO Apple Touch Icon should match attributes 5`] } `; -exports[`AMP Photo Gallery Page SEO Canonical link 1`] = `"http://localhost:7081/mundo/deportes-36935058"`; +exports[`AMP Photo Gallery Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/mundo/deportes-36935058"`; exports[`AMP Photo Gallery Page SEO Dir attribute 1`] = `"ltr"`; @@ -275,7 +275,7 @@ exports[`AMP Photo Gallery Page SEO Linked data should match text 1`] = ` "name": "Spanish", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/mundo/deportes-36935058", + "@id": "http://192.168.1.106:7081/mundo/deportes-36935058", "@type": "WebPage", "name": "Río 2016, el antes y el ahora: cómo ha cambiado la ropa deportiva en más de un siglo de juegos olímpicos", }, @@ -291,7 +291,7 @@ exports[`AMP Photo Gallery Page SEO Linked data should match text 1`] = ` "publishingPrinciples": "https://www.bbc.com/mundo/institucional-51359666", }, "thumbnailUrl": "https://ichef.bbci.co.uk/news/1024/branded_mundo/16506/production/_90689319_gettyimages-2642105-1.jpg", - "url": "http://localhost:7081/mundo/deportes-36935058", + "url": "http://192.168.1.106:7081/mundo/deportes-36935058", }, ], } @@ -311,7 +311,7 @@ exports[`AMP Photo Gallery Page SEO OG title 1`] = `"Río 2016, el antes y el ah exports[`AMP Photo Gallery Page SEO OG type 1`] = `"article"`; -exports[`AMP Photo Gallery Page SEO OG url 1`] = `"http://localhost:7081/mundo/deportes-36935058"`; +exports[`AMP Photo Gallery Page SEO OG url 1`] = `"http://192.168.1.106:7081/mundo/deportes-36935058"`; exports[`AMP Photo Gallery Page SEO Page title 1`] = `"Río 2016, el antes y el ahora: cómo ha cambiado la ropa deportiva en más de un siglo de juegos olímpicos - BBC News Mundo"`; diff --git a/ws-nextjs-app/integration/pages/photoGalleryPage/mundo/__snapshots__/canonical.test.ts.snap b/ws-nextjs-app/integration/pages/photoGalleryPage/mundo/__snapshots__/canonical.test.ts.snap index 6226f765fef..ea1382c1789 100644 --- a/ws-nextjs-app/integration/pages/photoGalleryPage/mundo/__snapshots__/canonical.test.ts.snap +++ b/ws-nextjs-app/integration/pages/photoGalleryPage/mundo/__snapshots__/canonical.test.ts.snap @@ -9,7 +9,7 @@ exports[`Canonical Photo Gallery Page Analytics ATI tracking pixel hostname 1`] exports[`Canonical Photo Gallery Page Analytics ATI tracking pixel search params 1`] = ` [ { - "s": "598343", + "s": "598342", }, { "s2": "62", @@ -152,7 +152,7 @@ exports[`Canonical Photo Gallery Page Main heading should match text 1`] = `"Rí exports[`Canonical Photo Gallery Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/mundo/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/mundo/images/icons/icon-192x192.png", } `; @@ -184,7 +184,7 @@ exports[`Canonical Photo Gallery Page SEO Apple Touch Icon should match attribut } `; -exports[`Canonical Photo Gallery Page SEO Canonical link 1`] = `"http://localhost:7081/mundo/deportes-36935058"`; +exports[`Canonical Photo Gallery Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/mundo/deportes-36935058"`; exports[`Canonical Photo Gallery Page SEO Dir attribute 1`] = `"ltr"`; @@ -227,7 +227,7 @@ exports[`Canonical Photo Gallery Page SEO Linked data should match text 1`] = ` "name": "Spanish", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/mundo/deportes-36935058", + "@id": "http://192.168.1.106:7081/mundo/deportes-36935058", "@type": "WebPage", "name": "Río 2016, el antes y el ahora: cómo ha cambiado la ropa deportiva en más de un siglo de juegos olímpicos", }, @@ -243,7 +243,7 @@ exports[`Canonical Photo Gallery Page SEO Linked data should match text 1`] = ` "publishingPrinciples": "https://www.bbc.com/mundo/institucional-51359666", }, "thumbnailUrl": "https://ichef.bbci.co.uk/news/1024/branded_mundo/16506/production/_90689319_gettyimages-2642105-1.jpg", - "url": "http://localhost:7081/mundo/deportes-36935058", + "url": "http://192.168.1.106:7081/mundo/deportes-36935058", }, ], } @@ -263,7 +263,7 @@ exports[`Canonical Photo Gallery Page SEO OG title 1`] = `"Río 2016, el antes y exports[`Canonical Photo Gallery Page SEO OG type 1`] = `"article"`; -exports[`Canonical Photo Gallery Page SEO OG url 1`] = `"http://localhost:7081/mundo/deportes-36935058"`; +exports[`Canonical Photo Gallery Page SEO OG url 1`] = `"http://192.168.1.106:7081/mundo/deportes-36935058"`; exports[`Canonical Photo Gallery Page SEO Page title 1`] = `"Río 2016, el antes y el ahora: cómo ha cambiado la ropa deportiva en más de un siglo de juegos olímpicos - BBC News Mundo"`; diff --git a/ws-nextjs-app/integration/pages/photoGalleryPage/thai/__snapshots__/amp.test.ts.snap b/ws-nextjs-app/integration/pages/photoGalleryPage/thai/__snapshots__/amp.test.ts.snap index 6353d007aa4..567aac764d1 100644 --- a/ws-nextjs-app/integration/pages/photoGalleryPage/thai/__snapshots__/amp.test.ts.snap +++ b/ws-nextjs-app/integration/pages/photoGalleryPage/thai/__snapshots__/amp.test.ts.snap @@ -10,7 +10,7 @@ exports[`AMP Photo Gallery Page Analytics ATI 1`] = ` "base": "https://logws1363.ati-host.net/hit.xiti?", "pageview": [ { - "s": "598343", + "s": "598342", }, { "s2": "90", @@ -92,7 +92,7 @@ exports[`AMP Photo Gallery Page Analytics chartbeat 1`] = ` { "vars": { "contentType": "PGL", - "domain": "test.bbc.co.uk", + "domain": "thai.bbc.co.uk", "sections": "Thai, Thai - PGL", "title": "6 ตุลา : ธรรมศาสตร์จัดกิจกรรมรำลึก 43 ปี 6 ตุลา 2519", "uid": 50924, @@ -206,7 +206,7 @@ exports[`AMP Photo Gallery Page Main heading should match text 1`] = `"6 ตุ exports[`AMP Photo Gallery Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/thai/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/thai/images/icons/icon-192x192.png", } `; @@ -238,7 +238,7 @@ exports[`AMP Photo Gallery Page SEO Apple Touch Icon should match attributes 5`] } `; -exports[`AMP Photo Gallery Page SEO Canonical link 1`] = `"http://localhost:7081/thai/thailand-49950038"`; +exports[`AMP Photo Gallery Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/thai/thailand-49950038"`; exports[`AMP Photo Gallery Page SEO Dir attribute 1`] = `"ltr"`; @@ -281,7 +281,7 @@ exports[`AMP Photo Gallery Page SEO Linked data should match text 1`] = ` "name": "Thai", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/thai/thailand-49950038", + "@id": "http://192.168.1.106:7081/thai/thailand-49950038", "@type": "WebPage", "name": "6 ตุลา : ธรรมศาสตร์จัดกิจกรรมรำลึก 43 ปี 6 ตุลา 2519", }, @@ -297,7 +297,7 @@ exports[`AMP Photo Gallery Page SEO Linked data should match text 1`] = ` "publishingPrinciples": "https://www.bbc.com/thai/institutional-49281839", }, "thumbnailUrl": "https://ichef.bbci.co.uk/news/1024/branded_thai/17431/production/_109118259_01.jpg", - "url": "http://localhost:7081/thai/thailand-49950038", + "url": "http://192.168.1.106:7081/thai/thailand-49950038", }, ], } @@ -317,7 +317,7 @@ exports[`AMP Photo Gallery Page SEO OG title 1`] = `"6 ตุลา : ธรร exports[`AMP Photo Gallery Page SEO OG type 1`] = `"article"`; -exports[`AMP Photo Gallery Page SEO OG url 1`] = `"http://localhost:7081/thai/thailand-49950038"`; +exports[`AMP Photo Gallery Page SEO OG url 1`] = `"http://192.168.1.106:7081/thai/thailand-49950038"`; exports[`AMP Photo Gallery Page SEO Page title 1`] = `"6 ตุลา : ธรรมศาสตร์จัดกิจกรรมรำลึก 43 ปี 6 ตุลา 2519 - BBC News ไทย"`; diff --git a/ws-nextjs-app/integration/pages/photoGalleryPage/thai/__snapshots__/canonical.test.ts.snap b/ws-nextjs-app/integration/pages/photoGalleryPage/thai/__snapshots__/canonical.test.ts.snap index 3ea1cb09c79..c0566775885 100644 --- a/ws-nextjs-app/integration/pages/photoGalleryPage/thai/__snapshots__/canonical.test.ts.snap +++ b/ws-nextjs-app/integration/pages/photoGalleryPage/thai/__snapshots__/canonical.test.ts.snap @@ -9,7 +9,7 @@ exports[`Canonical Photo Gallery Page Analytics ATI tracking pixel hostname 1`] exports[`Canonical Photo Gallery Page Analytics ATI tracking pixel search params 1`] = ` [ { - "s": "598343", + "s": "598342", }, { "s2": "90", @@ -158,7 +158,7 @@ exports[`Canonical Photo Gallery Page Main heading should match text 1`] = `"6 exports[`Canonical Photo Gallery Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/thai/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/thai/images/icons/icon-192x192.png", } `; @@ -190,7 +190,7 @@ exports[`Canonical Photo Gallery Page SEO Apple Touch Icon should match attribut } `; -exports[`Canonical Photo Gallery Page SEO Canonical link 1`] = `"http://localhost:7081/thai/thailand-49950038"`; +exports[`Canonical Photo Gallery Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/thai/thailand-49950038"`; exports[`Canonical Photo Gallery Page SEO Dir attribute 1`] = `"ltr"`; @@ -233,7 +233,7 @@ exports[`Canonical Photo Gallery Page SEO Linked data should match text 1`] = ` "name": "Thai", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/thai/thailand-49950038", + "@id": "http://192.168.1.106:7081/thai/thailand-49950038", "@type": "WebPage", "name": "6 ตุลา : ธรรมศาสตร์จัดกิจกรรมรำลึก 43 ปี 6 ตุลา 2519", }, @@ -249,7 +249,7 @@ exports[`Canonical Photo Gallery Page SEO Linked data should match text 1`] = ` "publishingPrinciples": "https://www.bbc.com/thai/institutional-49281839", }, "thumbnailUrl": "https://ichef.bbci.co.uk/news/1024/branded_thai/17431/production/_109118259_01.jpg", - "url": "http://localhost:7081/thai/thailand-49950038", + "url": "http://192.168.1.106:7081/thai/thailand-49950038", }, ], } @@ -269,7 +269,7 @@ exports[`Canonical Photo Gallery Page SEO OG title 1`] = `"6 ตุลา : ธ exports[`Canonical Photo Gallery Page SEO OG type 1`] = `"article"`; -exports[`Canonical Photo Gallery Page SEO OG url 1`] = `"http://localhost:7081/thai/thailand-49950038"`; +exports[`Canonical Photo Gallery Page SEO OG url 1`] = `"http://192.168.1.106:7081/thai/thailand-49950038"`; exports[`Canonical Photo Gallery Page SEO Page title 1`] = `"6 ตุลา : ธรรมศาสตร์จัดกิจกรรมรำลึก 43 ปี 6 ตุลา 2519 - BBC News ไทย"`; diff --git a/ws-nextjs-app/integration/pages/podcastPage/portugueseBrand/__snapshots__/canonical.test.ts.snap b/ws-nextjs-app/integration/pages/podcastPage/portugueseBrand/__snapshots__/canonical.test.ts.snap index c296f79cb6c..4b0b2cf956a 100644 --- a/ws-nextjs-app/integration/pages/podcastPage/portugueseBrand/__snapshots__/canonical.test.ts.snap +++ b/ws-nextjs-app/integration/pages/podcastPage/portugueseBrand/__snapshots__/canonical.test.ts.snap @@ -9,7 +9,7 @@ exports[`Canonical Podcast Page Analytics ATI tracking pixel hostname 1`] = `"ht exports[`Canonical Podcast Page Analytics ATI tracking pixel search params 1`] = ` [ { - "s": "598343", + "s": "598342", }, { "s2": "33", @@ -140,22 +140,27 @@ exports[`Canonical Podcast Page Media Loader renders a valid container 1`] = ` data-e2e="media-loader__container" >
-
`; @@ -219,7 +224,7 @@ exports[`Canonical Podcast Page Recent Episodes List items should match text and exports[`Canonical Podcast Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/portuguese/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/portuguese/images/icons/icon-192x192.png", } `; @@ -251,7 +256,7 @@ exports[`Canonical Podcast Page SEO Apple Touch Icon should match attributes 5`] } `; -exports[`Canonical Podcast Page SEO Canonical link 1`] = `"http://localhost:7081/portuguese/podcasts/p07r3r3t"`; +exports[`Canonical Podcast Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t"`; exports[`Canonical Podcast Page SEO Dir attribute 1`] = `"ltr"`; @@ -280,10 +285,10 @@ exports[`Canonical Podcast Page SEO Linked data should match text 1`] = ` "name": "Portuguese", }, "mainEntity": { - "@id": "http://localhost:7081/portuguese/podcasts/p07r3r3t#series", + "@id": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t#series", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/portuguese/podcasts/p07r3r3t", + "@id": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t", "@type": "WebPage", "name": "Que História! - News Brasil", }, @@ -299,76 +304,76 @@ exports[`Canonical Podcast Page SEO Linked data should match text 1`] = ` "publishingPrinciples": "https://www.bbc.com/portuguese/institutional-50054434", }, "thumbnailUrl": "https://static.files.bbci.co.uk/ws/simorgh-assets/public/portuguese/images/metadata/poster-1024x576.png", - "url": "http://localhost:7081/portuguese/podcasts/p07r3r3t", + "url": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t", }, { - "@id": "http://localhost:7081/portuguese/podcasts/p07r3r3t#series", + "@id": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t#series", "@type": "PodcastSeries", "description": "Aos 16 anos, Eve Wiley descobriu que fora concebida com sêmen de doador anônimo. Mas anos depois, após doença de seu filho, fez descoberta chocante sobre sua identidade genética.", "hasPart": [ { - "@id": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p0jdspsp#episode", + "@id": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p0jdspsp#episode", "@type": "PodcastEpisode", "datePublished": "2024-09-18T00:00:00.000Z", "duration": "PT21M30S", "name": "'Como encontrei tesouro enterrado na 2ª Guerra com mapa desenhado a mão por meu pai'", - "url": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p0jdspsp", + "url": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p0jdspsp", }, { - "@id": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p0jdsnk1#episode", + "@id": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p0jdsnk1#episode", "@type": "PodcastEpisode", "datePublished": "2024-09-11T00:00:00.000Z", "duration": "PT22M10S", "name": "A família que passou 38 dias perdida no Pacífico", - "url": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p0jdsnk1", + "url": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p0jdsnk1", }, { - "@id": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p0jdsmk2#episode", + "@id": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p0jdsmk2#episode", "@type": "PodcastEpisode", "datePublished": "2024-09-04T00:00:00.000Z", "duration": "PT23M54S", "name": "'Aos 11 anos convenci a polícia de que meu pai era o assassino de minha mãe'", - "url": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p0jdsmk2", + "url": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p0jdsmk2", }, { - "@id": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p0jdsk9x#episode", + "@id": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p0jdsk9x#episode", "@type": "PodcastEpisode", "datePublished": "2024-08-28T00:00:00.000Z", "duration": "PT22M54S", "name": "'Como descobri a chocante identidade secreta do meu noivo'", - "url": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p0jdsk9x", + "url": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p0jdsk9x", }, { - "@id": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p0jdsd64#episode", + "@id": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p0jdsd64#episode", "@type": "PodcastEpisode", "datePublished": "2024-08-14T00:00:00.000Z", "duration": "PT17M54S", "name": "A mulher que caiu de avião destruído por raio a 3 km de altura", - "url": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p0jdsd64", + "url": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p0jdsd64", }, { - "@id": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p0jdschj#episode", + "@id": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p0jdschj#episode", "@type": "PodcastEpisode", "datePublished": "2024-08-07T00:00:00.000Z", "duration": "PT24M6S", "name": "O 'roubo do século' desvendado graças a reclamação sobre lixo jogado em terreno", - "url": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p0jdschj", + "url": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p0jdschj", }, { - "@id": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p0jdsg17#episode", + "@id": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p0jdsg17#episode", "@type": "PodcastEpisode", "datePublished": "2024-07-26T00:00:00.000Z", "duration": "PT20M44S", "name": "O homem encontrado vivo em navio afundado", - "url": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p0jdsg17", + "url": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p0jdsg17", }, { - "@id": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p0jd7041#episode", + "@id": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p0jd7041#episode", "@type": "PodcastEpisode", "datePublished": "2024-07-24T00:00:00.000Z", "duration": "PT43S", "name": "Vem aí a 3ª temporada do 'Que História!': ouça o trailer", - "url": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p0jd7041", + "url": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p0jd7041", }, ], "image": { @@ -382,7 +387,7 @@ exports[`Canonical Podcast Page SEO Linked data should match text 1`] = ` "https://www.youtube.com/playlist?list=PLCX5XjxKTpTmh19ipbvr6OACmBWczOLJO", "https://music.amazon.co.uk/podcasts/51c33ac0-d208-4026-bc4d-396205703a8f/que-hist%C3%B3ria", ], - "url": "http://localhost:7081/portuguese/podcasts/p07r3r3t", + "url": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t", "webFeed": "https://podcasts.files.bbci.co.uk/p07r3r3t.rss", }, ], @@ -403,7 +408,7 @@ exports[`Canonical Podcast Page SEO OG title 1`] = `"Que História! - News Brasi exports[`Canonical Podcast Page SEO OG type 1`] = `"website"`; -exports[`Canonical Podcast Page SEO OG url 1`] = `"http://localhost:7081/portuguese/podcasts/p07r3r3t"`; +exports[`Canonical Podcast Page SEO OG url 1`] = `"http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t"`; exports[`Canonical Podcast Page SEO Page title 1`] = `"Que História! - News Brasil - BBC News Brasil"`; diff --git a/ws-nextjs-app/integration/pages/podcastPage/portugueseEpisode/__snapshots__/canonical.test.ts.snap b/ws-nextjs-app/integration/pages/podcastPage/portugueseEpisode/__snapshots__/canonical.test.ts.snap index c790a16d579..37e9ca64750 100644 --- a/ws-nextjs-app/integration/pages/podcastPage/portugueseEpisode/__snapshots__/canonical.test.ts.snap +++ b/ws-nextjs-app/integration/pages/podcastPage/portugueseEpisode/__snapshots__/canonical.test.ts.snap @@ -9,7 +9,7 @@ exports[`Canonical Podcast Page Analytics ATI tracking pixel hostname 1`] = `"ht exports[`Canonical Podcast Page Analytics ATI tracking pixel search params 1`] = ` [ { - "s": "598343", + "s": "598342", }, { "s2": "33", @@ -140,22 +140,27 @@ exports[`Canonical Podcast Page Media Loader renders a valid container 1`] = ` data-e2e="media-loader__container" >
-
`; @@ -184,7 +189,7 @@ exports[`Canonical Podcast Page Recent Episodes List items should match text and exports[`Canonical Podcast Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/portuguese/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/portuguese/images/icons/icon-192x192.png", } `; @@ -216,7 +221,7 @@ exports[`Canonical Podcast Page SEO Apple Touch Icon should match attributes 5`] } `; -exports[`Canonical Podcast Page SEO Canonical link 1`] = `"http://localhost:7081/portuguese/podcasts/p07r3r3t/p083x9gr"`; +exports[`Canonical Podcast Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p083x9gr"`; exports[`Canonical Podcast Page SEO Dir attribute 1`] = `"ltr"`; @@ -244,10 +249,10 @@ exports[`Canonical Podcast Page SEO Linked data should match text 1`] = ` "name": "Portuguese", }, "mainEntity": { - "@id": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p083x9gr#episode", + "@id": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p083x9gr#episode", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p083x9gr", + "@id": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p083x9gr", "@type": "WebPage", "name": "'A vida secreta de meu filho que só conheci quando ele morreu' - Que História! - News Brasil", }, @@ -263,18 +268,18 @@ exports[`Canonical Podcast Page SEO Linked data should match text 1`] = ` "publishingPrinciples": "https://www.bbc.com/portuguese/institutional-50054434", }, "thumbnailUrl": "https://static.files.bbci.co.uk/ws/simorgh-assets/public/portuguese/images/metadata/poster-1024x576.png", - "url": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p083x9gr", + "url": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p083x9gr", }, { - "@id": "http://localhost:7081/portuguese/podcasts/p07r3r3t#series", + "@id": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t#series", "@type": "PodcastSeries", "name": "Que História!", }, { - "@id": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p083x9gr#episode", + "@id": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p083x9gr#episode", "@type": "PodcastEpisode", "associatedMedia": { - "@id": "http://localhost:7081/portuguese/podcasts/p07r3r3t/p083x9gr#audio", + "@id": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p083x9gr#audio", "@type": "AudioObject", "contentUrl": "https://open.live.bbc.co.uk/mediaselector/6/redir/version/2.0/mediaset/audio-nondrm-download-low/proto/https/vpid/p083x8gs.mp3", "description": "Pais de Mats Steen achavam que filho teve vida solitária; mas quando anunciaram sua morte, não tinham ideia da comoção que isso causaria.", @@ -288,7 +293,7 @@ exports[`Canonical Podcast Page SEO Linked data should match text 1`] = ` "description": "Pais de Mats Steen achavam que filho teve vida solitária; mas quando anunciaram sua morte, não tinham ideia da comoção que isso causaria.", "name": "'A vida secreta de meu filho que só conheci quando ele morreu'", "partOfSeries": { - "@id": "http://localhost:7081/portuguese/podcasts/p07r3r3t#series", + "@id": "http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t#series", }, }, ], @@ -309,7 +314,7 @@ exports[`Canonical Podcast Page SEO OG title 1`] = `"'A vida secreta de meu filh exports[`Canonical Podcast Page SEO OG type 1`] = `"website"`; -exports[`Canonical Podcast Page SEO OG url 1`] = `"http://localhost:7081/portuguese/podcasts/p07r3r3t/p083x9gr"`; +exports[`Canonical Podcast Page SEO OG url 1`] = `"http://192.168.1.106:7081/portuguese/podcasts/p07r3r3t/p083x9gr"`; exports[`Canonical Podcast Page SEO Page title 1`] = `"'A vida secreta de meu filho que só conheci quando ele morreu' - Que História! - News Brasil - BBC News Brasil"`; diff --git a/ws-nextjs-app/integration/pages/storyPage/hausa/__snapshots__/amp.test.ts.snap b/ws-nextjs-app/integration/pages/storyPage/hausa/__snapshots__/amp.test.ts.snap index 9116d085da4..0320eb0479d 100644 --- a/ws-nextjs-app/integration/pages/storyPage/hausa/__snapshots__/amp.test.ts.snap +++ b/ws-nextjs-app/integration/pages/storyPage/hausa/__snapshots__/amp.test.ts.snap @@ -10,7 +10,7 @@ exports[`AMP Story Page Analytics ATI 1`] = ` "base": "https://logws1363.ati-host.net/hit.xiti?", "pageview": [ { - "s": "598343", + "s": "598342", }, { "s2": "51", @@ -87,7 +87,7 @@ exports[`AMP Story Page Analytics chartbeat 1`] = ` "vars": { "authors": "Kalkidan Yibeltal", "contentType": "STY", - "domain": "test.bbc.co.uk", + "domain": "hausa.bbc.co.uk", "sections": "Hausa, Hausa - STY", "title": "Ɗanɗano: Kuskure a Hausa da Ƙa’idar hira da baƙì - Ɓ ɓ ɗ Ɗ ƙ Ƙ", "uid": 50924, @@ -209,7 +209,7 @@ exports[`AMP Story Page Main heading should match text 1`] = `"Ɗanɗano: Kuskur exports[`AMP Story Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/hausa/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/hausa/images/icons/icon-192x192.png", } `; @@ -241,7 +241,7 @@ exports[`AMP Story Page SEO Apple Touch Icon should match attributes 5`] = ` } `; -exports[`AMP Story Page SEO Canonical link 1`] = `"http://localhost:7081/hausa/labarai-23246985"`; +exports[`AMP Story Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/hausa/labarai-23246985"`; exports[`AMP Story Page SEO Dir attribute 1`] = `"ltr"`; @@ -277,7 +277,7 @@ exports[`AMP Story Page SEO Linked data should match text 1`] = ` "name": "Hausa", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/hausa/labarai-23246985", + "@id": "http://192.168.1.106:7081/hausa/labarai-23246985", "@type": "WebPage", "name": "Ɗanɗano: Kuskure a Hausa da Ƙa’idar hira da baƙì - Ɓ ɓ ɗ Ɗ ƙ Ƙ", }, @@ -293,7 +293,7 @@ exports[`AMP Story Page SEO Linked data should match text 1`] = ` "publishingPrinciples": "https://www.bbc.com/hausa/game-da-mu-49283501", }, "thumbnailUrl": "https://ichef.bbci.co.uk/news/1024/branded_hausa/1745C/test/_63542359_hi035712328.jpg", - "url": "http://localhost:7081/hausa/labarai-23246985", + "url": "http://192.168.1.106:7081/hausa/labarai-23246985", }, ], } @@ -326,7 +326,7 @@ exports[`AMP Story Page SEO OG title 1`] = `"Ɗanɗano: Kuskure a Hausa da Ƙa exports[`AMP Story Page SEO OG type 1`] = `"article"`; -exports[`AMP Story Page SEO OG url 1`] = `"http://localhost:7081/hausa/labarai-23246985"`; +exports[`AMP Story Page SEO OG url 1`] = `"http://192.168.1.106:7081/hausa/labarai-23246985"`; exports[`AMP Story Page SEO Page title 1`] = `"Ɗanɗano: Kuskure a Hausa da Ƙa’idar hira da baƙì - Ɓ ɓ ɗ Ɗ ƙ Ƙ - BBC News Hausa"`; diff --git a/ws-nextjs-app/integration/pages/storyPage/hausa/__snapshots__/canonical.test.ts.snap b/ws-nextjs-app/integration/pages/storyPage/hausa/__snapshots__/canonical.test.ts.snap index e82ea07a521..256aaf8c7d3 100644 --- a/ws-nextjs-app/integration/pages/storyPage/hausa/__snapshots__/canonical.test.ts.snap +++ b/ws-nextjs-app/integration/pages/storyPage/hausa/__snapshots__/canonical.test.ts.snap @@ -9,7 +9,7 @@ exports[`Canonical Story Page Analytics ATI tracking pixel hostname 1`] = `"http exports[`Canonical Story Page Analytics ATI tracking pixel search params 1`] = ` [ { - "s": "598343", + "s": "598342", }, { "s2": "51", @@ -191,7 +191,7 @@ exports[`Canonical Story Page Most Read has item with rank 5`] = ` exports[`Canonical Story Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/hausa/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/hausa/images/icons/icon-192x192.png", } `; @@ -223,7 +223,7 @@ exports[`Canonical Story Page SEO Apple Touch Icon should match attributes 5`] = } `; -exports[`Canonical Story Page SEO Canonical link 1`] = `"http://localhost:7081/hausa/labarai-23246985"`; +exports[`Canonical Story Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/hausa/labarai-23246985"`; exports[`Canonical Story Page SEO Dir attribute 1`] = `"ltr"`; @@ -259,7 +259,7 @@ exports[`Canonical Story Page SEO Linked data should match text 1`] = ` "name": "Hausa", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/hausa/labarai-23246985", + "@id": "http://192.168.1.106:7081/hausa/labarai-23246985", "@type": "WebPage", "name": "Ɗanɗano: Kuskure a Hausa da Ƙa’idar hira da baƙì - Ɓ ɓ ɗ Ɗ ƙ Ƙ", }, @@ -275,7 +275,7 @@ exports[`Canonical Story Page SEO Linked data should match text 1`] = ` "publishingPrinciples": "https://www.bbc.com/hausa/game-da-mu-49283501", }, "thumbnailUrl": "https://ichef.bbci.co.uk/news/1024/branded_hausa/1745C/test/_63542359_hi035712328.jpg", - "url": "http://localhost:7081/hausa/labarai-23246985", + "url": "http://192.168.1.106:7081/hausa/labarai-23246985", }, ], } @@ -308,7 +308,7 @@ exports[`Canonical Story Page SEO OG title 1`] = `"Ɗanɗano: Kuskure a Hausa da exports[`Canonical Story Page SEO OG type 1`] = `"article"`; -exports[`Canonical Story Page SEO OG url 1`] = `"http://localhost:7081/hausa/labarai-23246985"`; +exports[`Canonical Story Page SEO OG url 1`] = `"http://192.168.1.106:7081/hausa/labarai-23246985"`; exports[`Canonical Story Page SEO Page title 1`] = `"Ɗanɗano: Kuskure a Hausa da Ƙa’idar hira da baƙì - Ɓ ɓ ɗ Ɗ ƙ Ƙ - BBC News Hausa"`; diff --git a/ws-nextjs-app/integration/pages/storyPage/kyrgyz/__snapshots__/amp.test.ts.snap b/ws-nextjs-app/integration/pages/storyPage/kyrgyz/__snapshots__/amp.test.ts.snap index 3c558ada050..9982228f35b 100644 --- a/ws-nextjs-app/integration/pages/storyPage/kyrgyz/__snapshots__/amp.test.ts.snap +++ b/ws-nextjs-app/integration/pages/storyPage/kyrgyz/__snapshots__/amp.test.ts.snap @@ -10,7 +10,7 @@ exports[`AMP Story Page Analytics ATI 1`] = ` "base": "https://logws1363.ati-host.net/hit.xiti?", "pageview": [ { - "s": "598343", + "s": "598342", }, { "s2": "58", @@ -86,7 +86,7 @@ exports[`AMP Story Page Analytics chartbeat 1`] = ` { "vars": { "contentType": "STY", - "domain": "test.bbc.co.uk", + "domain": "kyrgyz.bbc.co.uk", "sections": "Kyrgyz, Kyrgyz - STY", "title": "Test STY for social embeds", "uid": 50924, @@ -199,7 +199,7 @@ exports[`AMP Story Page Main heading should match text 1`] = `"Test STY for soci exports[`AMP Story Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/kyrgyz/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/kyrgyz/images/icons/icon-192x192.png", } `; @@ -231,7 +231,7 @@ exports[`AMP Story Page SEO Apple Touch Icon should match attributes 5`] = ` } `; -exports[`AMP Story Page SEO Canonical link 1`] = `"http://localhost:7081/kyrgyz/23292889"`; +exports[`AMP Story Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/kyrgyz/23292889"`; exports[`AMP Story Page SEO Dir attribute 1`] = `"ltr"`; @@ -274,7 +274,7 @@ exports[`AMP Story Page SEO Linked data should match text 1`] = ` "name": "Kyrgyz", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/kyrgyz/23292889", + "@id": "http://192.168.1.106:7081/kyrgyz/23292889", "@type": "WebPage", "name": "Test STY for social embeds", }, @@ -290,7 +290,7 @@ exports[`AMP Story Page SEO Linked data should match text 1`] = ` "publishingPrinciples": "https://www.bbc.com/kyrgyz/institutional-49677275", }, "thumbnailUrl": "https://ichef.bbci.co.uk/news/1024/branded_kyrgyz/CF33/test/_63734035_socialmedia.jpg", - "url": "http://localhost:7081/kyrgyz/23292889", + "url": "http://192.168.1.106:7081/kyrgyz/23292889", }, ], } @@ -310,7 +310,7 @@ exports[`AMP Story Page SEO OG title 1`] = `"Test STY for social embeds - BBC Ne exports[`AMP Story Page SEO OG type 1`] = `"article"`; -exports[`AMP Story Page SEO OG url 1`] = `"http://localhost:7081/kyrgyz/23292889"`; +exports[`AMP Story Page SEO OG url 1`] = `"http://192.168.1.106:7081/kyrgyz/23292889"`; exports[`AMP Story Page SEO Page title 1`] = `"Test STY for social embeds - BBC News Кыргыз Кызматы"`; diff --git a/ws-nextjs-app/integration/pages/storyPage/kyrgyz/__snapshots__/canonical.test.ts.snap b/ws-nextjs-app/integration/pages/storyPage/kyrgyz/__snapshots__/canonical.test.ts.snap index 6eff0da9033..d67f2a6dc45 100644 --- a/ws-nextjs-app/integration/pages/storyPage/kyrgyz/__snapshots__/canonical.test.ts.snap +++ b/ws-nextjs-app/integration/pages/storyPage/kyrgyz/__snapshots__/canonical.test.ts.snap @@ -9,7 +9,7 @@ exports[`Canonical Story Page Analytics ATI tracking pixel hostname 1`] = `"http exports[`Canonical Story Page Analytics ATI tracking pixel search params 1`] = ` [ { - "s": "598343", + "s": "598342", }, { "s2": "58", @@ -189,7 +189,7 @@ exports[`Canonical Story Page Most Read has item with rank 5`] = ` exports[`Canonical Story Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/kyrgyz/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/kyrgyz/images/icons/icon-192x192.png", } `; @@ -221,7 +221,7 @@ exports[`Canonical Story Page SEO Apple Touch Icon should match attributes 5`] = } `; -exports[`Canonical Story Page SEO Canonical link 1`] = `"http://localhost:7081/kyrgyz/23292889"`; +exports[`Canonical Story Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/kyrgyz/23292889"`; exports[`Canonical Story Page SEO Dir attribute 1`] = `"ltr"`; @@ -264,7 +264,7 @@ exports[`Canonical Story Page SEO Linked data should match text 1`] = ` "name": "Kyrgyz", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/kyrgyz/23292889", + "@id": "http://192.168.1.106:7081/kyrgyz/23292889", "@type": "WebPage", "name": "Test STY for social embeds", }, @@ -280,7 +280,7 @@ exports[`Canonical Story Page SEO Linked data should match text 1`] = ` "publishingPrinciples": "https://www.bbc.com/kyrgyz/institutional-49677275", }, "thumbnailUrl": "https://ichef.bbci.co.uk/news/1024/branded_kyrgyz/CF33/test/_63734035_socialmedia.jpg", - "url": "http://localhost:7081/kyrgyz/23292889", + "url": "http://192.168.1.106:7081/kyrgyz/23292889", }, ], } @@ -300,7 +300,7 @@ exports[`Canonical Story Page SEO OG title 1`] = `"Test STY for social embeds - exports[`Canonical Story Page SEO OG type 1`] = `"article"`; -exports[`Canonical Story Page SEO OG url 1`] = `"http://localhost:7081/kyrgyz/23292889"`; +exports[`Canonical Story Page SEO OG url 1`] = `"http://192.168.1.106:7081/kyrgyz/23292889"`; exports[`Canonical Story Page SEO Page title 1`] = `"Test STY for social embeds - BBC News Кыргыз Кызматы"`; diff --git a/ws-nextjs-app/integration/pages/storyPage/mundo/__snapshots__/amp.test.ts.snap b/ws-nextjs-app/integration/pages/storyPage/mundo/__snapshots__/amp.test.ts.snap index 0f97c1f4ab6..d0668367ec4 100644 --- a/ws-nextjs-app/integration/pages/storyPage/mundo/__snapshots__/amp.test.ts.snap +++ b/ws-nextjs-app/integration/pages/storyPage/mundo/__snapshots__/amp.test.ts.snap @@ -10,7 +10,7 @@ exports[`AMP Story Page Analytics ATI 1`] = ` "base": "https://logws1363.ati-host.net/hit.xiti?", "pageview": [ { - "s": "598343", + "s": "598342", }, { "s2": "62", @@ -93,7 +93,7 @@ exports[`AMP Story Page Analytics chartbeat 1`] = ` "vars": { "authors": "Redacción ", "contentType": "STY", - "domain": "test.bbc.co.uk", + "domain": "mundo.bbc.co.uk", "sections": "Mundo, Mundo - STY", "title": "Brexit: qué cambiará para visitar, trabajar y estudiar en Reino Unido tras la salida del país de la Unión Europea", "uid": 50924, @@ -207,7 +207,7 @@ exports[`AMP Story Page Main heading should match text 1`] = `"Brexit: qué camb exports[`AMP Story Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/mundo/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/mundo/images/icons/icon-192x192.png", } `; @@ -239,7 +239,7 @@ exports[`AMP Story Page SEO Apple Touch Icon should match attributes 5`] = ` } `; -exports[`AMP Story Page SEO Canonical link 1`] = `"http://localhost:7081/mundo/noticias-internacional-51266689"`; +exports[`AMP Story Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/mundo/noticias-internacional-51266689"`; exports[`AMP Story Page SEO Dir attribute 1`] = `"ltr"`; @@ -275,7 +275,7 @@ exports[`AMP Story Page SEO Linked data should match text 1`] = ` "name": "Spanish", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/mundo/noticias-internacional-51266689", + "@id": "http://192.168.1.106:7081/mundo/noticias-internacional-51266689", "@type": "WebPage", "name": "Brexit: qué cambiará para visitar, trabajar y estudiar en Reino Unido tras la salida del país de la Unión Europea", }, @@ -291,7 +291,7 @@ exports[`AMP Story Page SEO Linked data should match text 1`] = ` "publishingPrinciples": "https://www.bbc.com/mundo/institucional-51359666", }, "thumbnailUrl": "https://ichef.bbci.co.uk/news/1024/branded_mundo/17D42/production/_110620679_gettyimages-542984918.jpg", - "url": "http://localhost:7081/mundo/noticias-internacional-51266689", + "url": "http://192.168.1.106:7081/mundo/noticias-internacional-51266689", }, ], } @@ -311,7 +311,7 @@ exports[`AMP Story Page SEO OG title 1`] = `"Brexit: qué cambiará para visitar exports[`AMP Story Page SEO OG type 1`] = `"article"`; -exports[`AMP Story Page SEO OG url 1`] = `"http://localhost:7081/mundo/noticias-internacional-51266689"`; +exports[`AMP Story Page SEO OG url 1`] = `"http://192.168.1.106:7081/mundo/noticias-internacional-51266689"`; exports[`AMP Story Page SEO Page title 1`] = `"Brexit: qué cambiará para visitar, trabajar y estudiar en Reino Unido tras la salida del país de la Unión Europea - BBC News Mundo"`; diff --git a/ws-nextjs-app/integration/pages/storyPage/mundo/__snapshots__/canonical.test.ts.snap b/ws-nextjs-app/integration/pages/storyPage/mundo/__snapshots__/canonical.test.ts.snap index cb82e8384d9..f1838516b8c 100644 --- a/ws-nextjs-app/integration/pages/storyPage/mundo/__snapshots__/canonical.test.ts.snap +++ b/ws-nextjs-app/integration/pages/storyPage/mundo/__snapshots__/canonical.test.ts.snap @@ -9,7 +9,7 @@ exports[`Canonical Story Page Analytics ATI tracking pixel hostname 1`] = `"http exports[`Canonical Story Page Analytics ATI tracking pixel search params 1`] = ` [ { - "s": "598343", + "s": "598342", }, { "s2": "62", @@ -237,7 +237,7 @@ exports[`Canonical Story Page Most Read has item with rank 10`] = ` exports[`Canonical Story Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/mundo/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/mundo/images/icons/icon-192x192.png", } `; @@ -269,7 +269,7 @@ exports[`Canonical Story Page SEO Apple Touch Icon should match attributes 5`] = } `; -exports[`Canonical Story Page SEO Canonical link 1`] = `"http://localhost:7081/mundo/noticias-internacional-51266689"`; +exports[`Canonical Story Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/mundo/noticias-internacional-51266689"`; exports[`Canonical Story Page SEO Dir attribute 1`] = `"ltr"`; @@ -305,7 +305,7 @@ exports[`Canonical Story Page SEO Linked data should match text 1`] = ` "name": "Spanish", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/mundo/noticias-internacional-51266689", + "@id": "http://192.168.1.106:7081/mundo/noticias-internacional-51266689", "@type": "WebPage", "name": "Brexit: qué cambiará para visitar, trabajar y estudiar en Reino Unido tras la salida del país de la Unión Europea", }, @@ -321,7 +321,7 @@ exports[`Canonical Story Page SEO Linked data should match text 1`] = ` "publishingPrinciples": "https://www.bbc.com/mundo/institucional-51359666", }, "thumbnailUrl": "https://ichef.bbci.co.uk/news/1024/branded_mundo/17D42/production/_110620679_gettyimages-542984918.jpg", - "url": "http://localhost:7081/mundo/noticias-internacional-51266689", + "url": "http://192.168.1.106:7081/mundo/noticias-internacional-51266689", }, ], } @@ -341,7 +341,7 @@ exports[`Canonical Story Page SEO OG title 1`] = `"Brexit: qué cambiará para v exports[`Canonical Story Page SEO OG type 1`] = `"article"`; -exports[`Canonical Story Page SEO OG url 1`] = `"http://localhost:7081/mundo/noticias-internacional-51266689"`; +exports[`Canonical Story Page SEO OG url 1`] = `"http://192.168.1.106:7081/mundo/noticias-internacional-51266689"`; exports[`Canonical Story Page SEO Page title 1`] = `"Brexit: qué cambiará para visitar, trabajar y estudiar en Reino Unido tras la salida del país de la Unión Europea - BBC News Mundo"`; diff --git a/ws-nextjs-app/integration/pages/topicPage/pidgin/__snapshots__/canonical.test.ts.snap b/ws-nextjs-app/integration/pages/topicPage/pidgin/__snapshots__/canonical.test.ts.snap index b9a3e30b44b..9b3a62d4345 100644 --- a/ws-nextjs-app/integration/pages/topicPage/pidgin/__snapshots__/canonical.test.ts.snap +++ b/ws-nextjs-app/integration/pages/topicPage/pidgin/__snapshots__/canonical.test.ts.snap @@ -9,7 +9,7 @@ exports[`Canonical Topic Page Analytics ATI tracking pixel hostname 1`] = `"http exports[`Canonical Topic Page Analytics ATI tracking pixel search params 1`] = ` [ { - "s": "598343", + "s": "598342", }, { "s2": "70", @@ -143,7 +143,7 @@ exports[`Canonical Topic Page Page content First item in the first curation is t exports[`Canonical Topic Page SEO Apple Touch Icon should match attributes 1`] = ` { "sizes": null, - "url": "http://localhost:7081/pidgin/images/icons/icon-192x192.png", + "url": "http://192.168.1.106:7081/pidgin/images/icons/icon-192x192.png", } `; @@ -175,7 +175,7 @@ exports[`Canonical Topic Page SEO Apple Touch Icon should match attributes 5`] = } `; -exports[`Canonical Topic Page SEO Canonical link 1`] = `"http://localhost:7081/pidgin/topics/c95y35941vrt"`; +exports[`Canonical Topic Page SEO Canonical link 1`] = `"http://192.168.1.106:7081/pidgin/topics/c95y35941vrt"`; exports[`Canonical Topic Page SEO Dir attribute 1`] = `"ltr"`; @@ -204,7 +204,7 @@ exports[`Canonical Topic Page SEO Linked data should match text 1`] = ` "name": "Nigerian Pidgin", }, "mainEntityOfPage": { - "@id": "http://localhost:7081/pidgin/topics/c95y35941vrt", + "@id": "http://192.168.1.106:7081/pidgin/topics/c95y35941vrt", "@type": "WebPage", "name": "Donald Trump", }, @@ -220,7 +220,7 @@ exports[`Canonical Topic Page SEO Linked data should match text 1`] = ` "publishingPrinciples": "https://www.bbc.com/pidgin/institutional-48528766", }, "thumbnailUrl": "https://static.files.bbci.co.uk/ws/simorgh-assets/public/pidgin/images/metadata/poster-1024x576.png", - "url": "http://localhost:7081/pidgin/topics/c95y35941vrt", + "url": "http://192.168.1.106:7081/pidgin/topics/c95y35941vrt", }, { "@type": "ItemList", @@ -397,7 +397,7 @@ exports[`Canonical Topic Page SEO OG title 1`] = `"Donald Trump - BBC News Pidgi exports[`Canonical Topic Page SEO OG type 1`] = `"website"`; -exports[`Canonical Topic Page SEO OG url 1`] = `"http://localhost:7081/pidgin/topics/c95y35941vrt"`; +exports[`Canonical Topic Page SEO OG url 1`] = `"http://192.168.1.106:7081/pidgin/topics/c95y35941vrt"`; exports[`Canonical Topic Page SEO Page title 1`] = `"Donald Trump - BBC News Pidgin"`; From e72997fa400f5ccba75e3f94fb25a9fa6d7b2b8d Mon Sep 17 00:00:00 2001 From: HarveyPeachey Date: Thu, 30 Jul 2026 11:21:48 +0100 Subject: [PATCH 5/8] moves fake full screen styling and adjusts z-index of different components --- .../AccountSignInModal/index.styles.tsx | 2 +- .../components/MediaLoader/index.styles.ts | 48 +++++++ src/app/components/MediaLoader/index.tsx | 135 +++++++----------- .../PortraitVideoModal/index.styles.tsx | 2 +- .../index.canonical.test.jsx.snap | 16 +++ .../ConsentBanner/Banner/index.canonical.jsx | 5 + src/app/lib/mediaPlayerFullscreen.const.ts | 7 + 7 files changed, 130 insertions(+), 85 deletions(-) create mode 100644 src/app/lib/mediaPlayerFullscreen.const.ts diff --git a/src/app/components/Account/AccountSignInModal/index.styles.tsx b/src/app/components/Account/AccountSignInModal/index.styles.tsx index 0706e888829..0ea9a9d3614 100644 --- a/src/app/components/Account/AccountSignInModal/index.styles.tsx +++ b/src/app/components/Account/AccountSignInModal/index.styles.tsx @@ -19,7 +19,7 @@ export default { modal: css({ position: 'fixed', inset: 0, - zIndex: 2147483647, + zIndex: 2147, display: 'flex', alignItems: 'center', justifyContent: 'center', diff --git a/src/app/components/MediaLoader/index.styles.ts b/src/app/components/MediaLoader/index.styles.ts index 498b024fec7..19bb7899a41 100644 --- a/src/app/components/MediaLoader/index.styles.ts +++ b/src/app/components/MediaLoader/index.styles.ts @@ -1,6 +1,54 @@ import pixelsToRem from '#app/utilities/pixelsToRem'; +import { PLAYER_FULLSCREEN_CLASS } from '#lib/mediaPlayerFullscreen.const'; import { css, Theme } from '@emotion/react'; +export { PLAYER_FULLSCREEN_CLASS }; +export const FAKE_FULLSCREEN_LAYER_CLASS = 'simorgh-fake-fullscreen-layer'; +export const FAKE_FULLSCREEN_ACTIVE_CLASS = 'simorgh-player-fullscreen-active'; +export const ACTIVE_FULLSCREEN_LOADER_STATE = 'active-fake-fullscreen'; + +export const fakeFullscreenStyles = ` + html.${PLAYER_FULLSCREEN_CLASS} { + overflow: hidden; + } + + body.${PLAYER_FULLSCREEN_CLASS} { + overflow: auto; + } + + .${FAKE_FULLSCREEN_LAYER_CLASS} { + display: none; + background: #000; + position: fixed; + inset: 0; + pointer-events: none; + height: 100lvh; + width: 100vw; + outline: 1000px solid #000; + z-index: 2147483646; + } + + .${FAKE_FULLSCREEN_LAYER_CLASS}.${FAKE_FULLSCREEN_ACTIVE_CLASS} { + display: block; + } + + [data-simorgh-media-loader="${ACTIVE_FULLSCREEN_LOADER_STATE}"] { + position: fixed !important; + inset: 0 !important; + width: 100vw !important; + max-width: none !important; + height: 100lvh !important; + margin: 0 !important; + aspect-ratio: auto !important; + background: #000 !important; + z-index: 2147483647 !important; + } + + [data-simorgh-media-loader="${ACTIVE_FULLSCREEN_LOADER_STATE}"] .media-player { + height: 100% !important; + } +`; + const commonMarginSpacing = ({ mq, spacings }: Theme) => css({ marginInline: 0, diff --git a/src/app/components/MediaLoader/index.tsx b/src/app/components/MediaLoader/index.tsx index 96f9f53c8ba..bf437ee0988 100644 --- a/src/app/components/MediaLoader/index.tsx +++ b/src/app/components/MediaLoader/index.tsx @@ -27,7 +27,13 @@ import buildConfig from './utils/buildSettings'; import Placeholder from './Placeholder'; import getProducerFromServiceName from './utils/getProducerFromServiceName'; import getCaptionBlock from './utils/getCaptionBlock'; -import styles from './index.styles'; +import styles, { + PLAYER_FULLSCREEN_CLASS, + FAKE_FULLSCREEN_LAYER_CLASS, + FAKE_FULLSCREEN_ACTIVE_CLASS, + ACTIVE_FULLSCREEN_LOADER_STATE, + fakeFullscreenStyles, +} from './index.styles'; import { getBootstrapSrc } from '../Ad/Canonical'; import Metadata from './Metadata'; import AmpMediaLoader from './Amp'; @@ -40,52 +46,6 @@ const PAGETYPES_IGNORE_PLACEHOLDER: PageTypes[] = [ ]; const logger = nodeLogger(__filename); -const PLAYER_FULLSCREEN_CLASS = 'simorgh-player-fullscreen'; -const FAKE_FULLSCREEN_LAYER_CLASS = 'simorgh-fake-fullscreen-layer'; -const FAKE_FULLSCREEN_ACTIVE_CLASS = 'simorgh-player-fullscreen-active'; -const ACTIVE_FULLSCREEN_LOADER_STATE = 'active-fake-fullscreen'; - -const fakeFullscreenStyles = ` - html.${PLAYER_FULLSCREEN_CLASS} { - overflow: hidden; - } - - body.${PLAYER_FULLSCREEN_CLASS} { - overflow: auto; - } - - .${FAKE_FULLSCREEN_LAYER_CLASS} { - display: none; - background: #000; - position: fixed; - inset: 0; - pointer-events: none; - height: 100lvh; - width: 100vw; - outline: 1000px solid #000; - z-index: 2147483646; - } - - .${FAKE_FULLSCREEN_LAYER_CLASS}.${FAKE_FULLSCREEN_ACTIVE_CLASS} { - display: block; - } - - [data-simorgh-media-loader="${ACTIVE_FULLSCREEN_LOADER_STATE}"] { - position: fixed !important; - inset: 0 !important; - width: 100vw !important; - max-width: none !important; - height: 100lvh !important; - margin: 0 !important; - aspect-ratio: auto !important; - background: #000 !important; - z-index: 2147483647 !important; - } - - [data-simorgh-media-loader="${ACTIVE_FULLSCREEN_LOADER_STATE}"] .media-player { - height: 100% !important; - } -`; type BumpLoaderProps = { nonce?: string | null; @@ -450,21 +410,14 @@ const MediaLoader = ({ // This wrapper - rather than the figure - is what gets forced above // page content during fake fullscreen, so the Caption below (page // furniture) is never pulled into the fullscreen layer with it. -
- {showAds && } - - {shouldHandleFakeFullscreen && ( - - - - )} + // The fake fullscreen layer is a sibling (not a child) of this + // wrapper so that both sit in the same page-level stacking context. + // Inside the wrapper they would compete: the layer at z-index + // 2147483646 would sit above the SMP player at z-index 999 within + // the wrapper's stacking context, hiding the video on iOS Safari + // where GPU compositing does not bypass CSS stacking as it does on + // desktop browsers. + <> {shouldHandleFakeFullscreen && ( +
+ {showAds && } + + {shouldHandleFakeFullscreen && ( + + + + )} + {hasPlaceholder ? ( + setShowPlaceholder(false)} + isPortraitOrientation={!!isPortrait} + /> + ) : ( + + )} +
+ )} {captionBlock && ( ( diff --git a/src/app/lib/mediaPlayerFullscreen.const.ts b/src/app/lib/mediaPlayerFullscreen.const.ts new file mode 100644 index 00000000000..0b9def5f84b --- /dev/null +++ b/src/app/lib/mediaPlayerFullscreen.const.ts @@ -0,0 +1,7 @@ +/** + * Global page-state class applied to and while the media player + * is in (fake) fullscreen. It acts as a shared signal that any component can + * react to in its own styles, so the media player never needs to reach across + * component boundaries into another component's DOM. + */ +export const PLAYER_FULLSCREEN_CLASS = 'simorgh-player-fullscreen'; From bc3da9d417ae4c9d3cc4e4f14b1e98587a154a48 Mon Sep 17 00:00:00 2001 From: HarveyPeachey Date: Thu, 30 Jul 2026 11:38:26 +0100 Subject: [PATCH 6/8] uses global fullscreen class to disable z-index --- .../components/Account/AccountSignInModal/index.styles.tsx | 7 ++++++- src/app/components/PortraitVideoModal/index.styles.tsx | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/app/components/Account/AccountSignInModal/index.styles.tsx b/src/app/components/Account/AccountSignInModal/index.styles.tsx index 0ea9a9d3614..1ce2000a8d9 100644 --- a/src/app/components/Account/AccountSignInModal/index.styles.tsx +++ b/src/app/components/Account/AccountSignInModal/index.styles.tsx @@ -1,6 +1,7 @@ import { Theme, css } from '@emotion/react'; import pixelsToRem from '#app/utilities/pixelsToRem'; import { getEnvConfig } from '#app/lib/utilities/getEnvConfig'; +import { PLAYER_FULLSCREEN_CLASS } from '#lib/mediaPlayerFullscreen.const'; const { SIMORGH_PUBLIC_STATIC_ASSETS_ORIGIN, @@ -19,12 +20,16 @@ export default { modal: css({ position: 'fixed', inset: 0, - zIndex: 2147, + zIndex: 2147483647, display: 'flex', alignItems: 'center', justifyContent: 'center', overflowY: 'auto', overflowX: 'hidden', + + [`body.${PLAYER_FULLSCREEN_CLASS} &`]: { + zIndex: -1, + }, }), backdrop: css({ diff --git a/src/app/components/PortraitVideoModal/index.styles.tsx b/src/app/components/PortraitVideoModal/index.styles.tsx index 1474d8a4717..6124815317c 100644 --- a/src/app/components/PortraitVideoModal/index.styles.tsx +++ b/src/app/components/PortraitVideoModal/index.styles.tsx @@ -1,6 +1,7 @@ import pixelsToRem from '#app/utilities/pixelsToRem'; import { css, Theme } from '@emotion/react'; import { visuallyHiddenStyle } from '#app/lib/styles.const'; +import { PLAYER_FULLSCREEN_CLASS } from '#lib/mediaPlayerFullscreen.const'; const styles = { bodyOverflowHidden: () => @@ -26,7 +27,11 @@ const styles = { flexDirection: 'row', alignItems: 'center', justifyContent: 'center', - zIndex: 2147, + zIndex: 2147483647, + + [`body.${PLAYER_FULLSCREEN_CLASS} &`]: { + zIndex: -1, + }, '&::after': { content: '""', From d4cdd4f321cf14cbb6b4756e5353080d1a6b8ddb Mon Sep 17 00:00:00 2001 From: HarveyPeachey Date: Thu, 30 Jul 2026 11:38:44 +0100 Subject: [PATCH 7/8] adds an opt out option for fake fullscreen --- src/app/components/MediaLoader/index.tsx | 9 ++++++++- src/app/components/PortraitVideoModal/index.tsx | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/app/components/MediaLoader/index.tsx b/src/app/components/MediaLoader/index.tsx index bf437ee0988..f9ad3d5c793 100644 --- a/src/app/components/MediaLoader/index.tsx +++ b/src/app/components/MediaLoader/index.tsx @@ -250,6 +250,11 @@ type Props = { embedded?: boolean; uniqueId?: string; eventMapping?: EventMapping; + // Opt-out for callers that provide their own fullscreen presentation (e.g. + // PortraitVideoModal). Prevents MediaLoader forcing SMP fake fullscreen and + // applying the global fullscreen page state, which would otherwise conflict + // with the caller's own fullscreen layout. + disableFakeFullscreen?: boolean; }; const MediaLoader = ({ @@ -258,6 +263,7 @@ const MediaLoader = ({ embedded, uniqueId, eventMapping, + disableFakeFullscreen = false, }: Props) => { const { lang, service, translations, defaultImage } = use(ServiceContext); const { pageIdentifier } = use(EventTrackingContext); @@ -365,7 +371,8 @@ const MediaLoader = ({ const noJsMessage = translatedNoJSMessage || translations?.media?.noJs; const hasPlaceholder = Boolean(showPlaceholder && placeholderSrc); - const shouldHandleFakeFullscreen = !isAmp && !embedded && !isAudio; + const shouldHandleFakeFullscreen = + !isAmp && !embedded && !isAudio && !disableFakeFullscreen; const setFakeFullscreenPageState = (isActive: boolean) => { if (!onClient()) return; diff --git a/src/app/components/PortraitVideoModal/index.tsx b/src/app/components/PortraitVideoModal/index.tsx index 6bd8d85dfc0..cbcb8d83704 100644 --- a/src/app/components/PortraitVideoModal/index.tsx +++ b/src/app/components/PortraitVideoModal/index.tsx @@ -365,6 +365,7 @@ const PortraitVideoModal = ({ playlistLoadedCallback(e, blocks), pluginLoaded: pluginLoadedCallback, From 0914d7e4f450bbab4e776cad94ab75191d42c5e1 Mon Sep 17 00:00:00 2001 From: HarveyPeachey Date: Mon, 3 Aug 2026 14:44:43 +0100 Subject: [PATCH 8/8] renames fake fullscreen boolean --- src/app/components/MediaLoader/index.tsx | 11 ++++++----- src/app/components/PortraitVideoModal/index.tsx | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/app/components/MediaLoader/index.tsx b/src/app/components/MediaLoader/index.tsx index f9ad3d5c793..f342166eafb 100644 --- a/src/app/components/MediaLoader/index.tsx +++ b/src/app/components/MediaLoader/index.tsx @@ -250,11 +250,12 @@ type Props = { embedded?: boolean; uniqueId?: string; eventMapping?: EventMapping; - // Opt-out for callers that provide their own fullscreen presentation (e.g. - // PortraitVideoModal). Prevents MediaLoader forcing SMP fake fullscreen and + // Set by callers that render the player inside their own fullscreen + // presentation (e.g. PortraitVideoModal, which is a full-viewport modal on + // mobile portrait). Prevents MediaLoader forcing SMP fake fullscreen and // applying the global fullscreen page state, which would otherwise conflict // with the caller's own fullscreen layout. - disableFakeFullscreen?: boolean; + withinFullscreenContainer?: boolean; }; const MediaLoader = ({ @@ -263,7 +264,7 @@ const MediaLoader = ({ embedded, uniqueId, eventMapping, - disableFakeFullscreen = false, + withinFullscreenContainer = false, }: Props) => { const { lang, service, translations, defaultImage } = use(ServiceContext); const { pageIdentifier } = use(EventTrackingContext); @@ -372,7 +373,7 @@ const MediaLoader = ({ const hasPlaceholder = Boolean(showPlaceholder && placeholderSrc); const shouldHandleFakeFullscreen = - !isAmp && !embedded && !isAudio && !disableFakeFullscreen; + !isAmp && !embedded && !isAudio && !withinFullscreenContainer; const setFakeFullscreenPageState = (isActive: boolean) => { if (!onClient()) return; diff --git a/src/app/components/PortraitVideoModal/index.tsx b/src/app/components/PortraitVideoModal/index.tsx index cbcb8d83704..dd7c6d96c95 100644 --- a/src/app/components/PortraitVideoModal/index.tsx +++ b/src/app/components/PortraitVideoModal/index.tsx @@ -365,7 +365,7 @@ const PortraitVideoModal = ({ playlistLoadedCallback(e, blocks), pluginLoaded: pluginLoadedCallback,