From d3a2ab5f424fade79169eadebc11ee1f77d6339d Mon Sep 17 00:00:00 2001 From: Isabella Mitchell Date: Thu, 17 Oct 2024 17:19:52 +0100 Subject: [PATCH 01/29] WSTEAM1-1349: Initial commit| --- src/app/components/LiteSiteCta/index.test.tsx | 13 ++++++++ src/app/components/LiteSiteCta/index.tsx | 31 +++++++++++++++++++ src/app/legacy/containers/Header/index.jsx | 4 ++- 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 src/app/components/LiteSiteCta/index.test.tsx create mode 100644 src/app/components/LiteSiteCta/index.tsx diff --git a/src/app/components/LiteSiteCta/index.test.tsx b/src/app/components/LiteSiteCta/index.test.tsx new file mode 100644 index 00000000000..1dfbc250b50 --- /dev/null +++ b/src/app/components/LiteSiteCta/index.test.tsx @@ -0,0 +1,13 @@ +import React from 'react'; +import { render } from '../react-testing-library-with-providers'; +import LiteSiteCta from '.'; + +describe('LiteSiteCTA', () => { + describe('dummy code', () => { + it('should render', () => { + const { getByText } = render(); + const ctaText = getByText('Go to main page'); + expect(ctaText).toBeInTheDocument(); + }); + }); +}); diff --git a/src/app/components/LiteSiteCta/index.tsx b/src/app/components/LiteSiteCta/index.tsx new file mode 100644 index 00000000000..5b4764c6eb5 --- /dev/null +++ b/src/app/components/LiteSiteCta/index.tsx @@ -0,0 +1,31 @@ +/** @jsx jsx */ +import { useContext } from 'react'; +import { jsx } from '@emotion/react'; +import CallToActionLink from '../CallToActionLink'; +import InlineLink from '../InlineLink'; +import Paragraph from '../Paragraph'; +import { LeftChevron, RightChevron } from '../icons'; +import { ServiceContext } from '../../contexts/ServiceContext'; +import { RequestContext } from '../../contexts/RequestContext'; + +const LiteSiteCta = () => { + // thinking it is better to do this here than in Header and pass in? + const { dir, translations } = useContext(ServiceContext); + // this is still taking to lite. + const { canonicalLink } = useContext(RequestContext); + const isRtl = dir === 'rtl'; + const { skipLinkText } = translations; + + return ( +
+ {skipLinkText} + + Go to main page + {isRtl ? : } + + +
+ ); +}; + +export default LiteSiteCta; diff --git a/src/app/legacy/containers/Header/index.jsx b/src/app/legacy/containers/Header/index.jsx index d4aad1c9965..310565169ca 100644 --- a/src/app/legacy/containers/Header/index.jsx +++ b/src/app/legacy/containers/Header/index.jsx @@ -4,6 +4,7 @@ import { RequestContext } from '#contexts/RequestContext'; import useOperaMiniDetection from '#hooks/useOperaMiniDetection'; import ScriptLink from '#app/components/Header/ScriptLink'; import { ARTICLE_PAGE } from '#app/routes/utils/pageTypes'; +import LiteSiteCta from '#app/components/LiteSiteCta'; import { ServiceContext } from '../../../contexts/ServiceContext'; import ConsentBanner from '../ConsentBanner'; import NavigationContainer from '../Navigation'; @@ -45,7 +46,7 @@ const HeaderContainer = ({ scriptSwitchId = '', renderScriptSwitch = true, }) => { - const { isAmp, isApp, pageType } = useContext(RequestContext); + const { isAmp, isApp, pageType, isLite } = useContext(RequestContext); const { service, script, translations, dir, scriptLink, lang, serviceLang } = useContext(ServiceContext); const { skipLinkText } = translations; @@ -104,6 +105,7 @@ const HeaderContainer = ({ } /> )} + {isLite && service === 'gahuza' && } ); From 6e2cf028f07e9b4a569aed9b11fa116f28fa0958 Mon Sep 17 00:00:00 2001 From: Isabella Mitchell Date: Fri, 18 Oct 2024 09:33:00 +0100 Subject: [PATCH 02/29] WSTEAM1-1349: Implements Screen Reader UX --- .../components/LiteSiteCta/index.styles.tsx | 1 + src/app/components/LiteSiteCta/index.tsx | 45 ++++++++++++++----- src/app/legacy/containers/Header/index.jsx | 5 ++- 3 files changed, 39 insertions(+), 12 deletions(-) create mode 100644 src/app/components/LiteSiteCta/index.styles.tsx diff --git a/src/app/components/LiteSiteCta/index.styles.tsx b/src/app/components/LiteSiteCta/index.styles.tsx new file mode 100644 index 00000000000..3458dec0c0c --- /dev/null +++ b/src/app/components/LiteSiteCta/index.styles.tsx @@ -0,0 +1 @@ +// import { css, Theme } from '@emotion/react'; diff --git a/src/app/components/LiteSiteCta/index.tsx b/src/app/components/LiteSiteCta/index.tsx index 5b4764c6eb5..27821669996 100644 --- a/src/app/components/LiteSiteCta/index.tsx +++ b/src/app/components/LiteSiteCta/index.tsx @@ -1,30 +1,53 @@ /** @jsx jsx */ import { useContext } from 'react'; import { jsx } from '@emotion/react'; -import CallToActionLink from '../CallToActionLink'; -import InlineLink from '../InlineLink'; +// import CallToActionLink from '../CallToActionLink'; +// import InlineLink from '../InlineLink'; import Paragraph from '../Paragraph'; +import Text from '../Text'; import { LeftChevron, RightChevron } from '../icons'; import { ServiceContext } from '../../contexts/ServiceContext'; import { RequestContext } from '../../contexts/RequestContext'; +// TO DO - see if it's possible to refactor with existing components +const CtaLink = ({ + isRtl, + href, + text, +}: { + isRtl: boolean; + href: string; + text: string; +}) => { + return ( + + + {text} + + {isRtl ? : } + + ); +}; + const LiteSiteCta = () => { - // thinking it is better to do this here than in Header and pass in? const { dir, translations } = useContext(ServiceContext); - // this is still taking to lite. + // TO DO - this is still taking to lite. const { canonicalLink } = useContext(RequestContext); const isRtl = dir === 'rtl'; + // TO DO - Add real translations const { skipLinkText } = translations; + const id = 'LiteSiteCta'; return ( -
+
+ {skipLinkText} - - Go to main page - {isRtl ? : } - - -
+ + + + ); }; diff --git a/src/app/legacy/containers/Header/index.jsx b/src/app/legacy/containers/Header/index.jsx index 310565169ca..550b2f77835 100644 --- a/src/app/legacy/containers/Header/index.jsx +++ b/src/app/legacy/containers/Header/index.jsx @@ -80,6 +80,9 @@ const HeaderContainer = ({ } } + const liteSiteServices = ['gahuaza']; + const renderLiteSiteCTA = isLite && liteSiteServices.includes(service); + if (isApp) return null; return ( @@ -105,7 +108,7 @@ const HeaderContainer = ({ } /> )} - {isLite && service === 'gahuza' && } + {renderLiteSiteCTA && } ); From 422ea18f252fbfc8d7a5629b46f988a69709755c Mon Sep 17 00:00:00 2001 From: Shayne Marc Enzo Ahchoon Date: Fri, 18 Oct 2024 10:55:12 +0100 Subject: [PATCH 03/29] WSTEAM1-1367: Add styles --- .../components/LiteSiteCta/index.stories.tsx | 9 +++ .../components/LiteSiteCta/index.styles.tsx | 27 +++++++- src/app/components/LiteSiteCta/index.tsx | 61 ++++++++++++------- src/app/lib/config/services/gahuza.ts | 6 ++ src/app/models/types/translations.ts | 6 ++ 5 files changed, 87 insertions(+), 22 deletions(-) create mode 100644 src/app/components/LiteSiteCta/index.stories.tsx diff --git a/src/app/components/LiteSiteCta/index.stories.tsx b/src/app/components/LiteSiteCta/index.stories.tsx new file mode 100644 index 00000000000..f9283c57891 --- /dev/null +++ b/src/app/components/LiteSiteCta/index.stories.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import LiteSiteCTA from '.'; + +export const Component = () => ; + +export default { + title: 'Components/LiteSiteCTA', + Component, +}; diff --git a/src/app/components/LiteSiteCta/index.styles.tsx b/src/app/components/LiteSiteCta/index.styles.tsx index 3458dec0c0c..386b4589c8f 100644 --- a/src/app/components/LiteSiteCta/index.styles.tsx +++ b/src/app/components/LiteSiteCta/index.styles.tsx @@ -1 +1,26 @@ -// import { css, Theme } from '@emotion/react'; +import { css, Theme } from '@emotion/react'; + +export default { + container: ({ spacings }: Theme) => + css({ + margin: `${spacings.TRIPLE}rem 0`, + }), + link: ({ palette, spacings }: Theme) => + css({ + svg: { + color: palette.GREY_10, + fill: 'currentColor', + marginInlineStart: `${spacings.HALF}rem`, + verticalAlign: 'middle', + }, + }), + canonicalLink: ({ spacings, fontVariants }: Theme) => + css({ + ...fontVariants.sansBold, + margin: `${spacings.TRIPLE}rem 0`, + }), + linkContainer: ({ spacings }: Theme) => + css({ + margin: `${spacings.TRIPLE}rem 0`, + }), +}; diff --git a/src/app/components/LiteSiteCta/index.tsx b/src/app/components/LiteSiteCta/index.tsx index 27821669996..141c73715e9 100644 --- a/src/app/components/LiteSiteCta/index.tsx +++ b/src/app/components/LiteSiteCta/index.tsx @@ -1,51 +1,70 @@ /** @jsx jsx */ import { useContext } from 'react'; import { jsx } from '@emotion/react'; -// import CallToActionLink from '../CallToActionLink'; -// import InlineLink from '../InlineLink'; import Paragraph from '../Paragraph'; import Text from '../Text'; import { LeftChevron, RightChevron } from '../icons'; import { ServiceContext } from '../../contexts/ServiceContext'; import { RequestContext } from '../../contexts/RequestContext'; +import VisuallyHiddenText from '../VisuallyHiddenText'; +import styles from './index.styles'; -// TO DO - see if it's possible to refactor with existing components -const CtaLink = ({ - isRtl, - href, - text, -}: { +type CtaLinkProps = { isRtl: boolean; href: string; text: string; -}) => { + className?: string; +}; + +const CtaLink = ({ isRtl, href, text, className }: CtaLinkProps) => { return ( - - - {text} - + + {text} {isRtl ? : } - + ); }; +const defaultTranslations = { + disclaimer: `You’re viewing a text-only version of this website that uses less data. View the main version of the website including all images and videos.`, + backToCanonical: 'Take me to the main website', + findOutMore: 'Find out more about this data-saving version', + dataSaving: 'Data saving version', +}; + const LiteSiteCta = () => { const { dir, translations } = useContext(ServiceContext); // TO DO - this is still taking to lite. const { canonicalLink } = useContext(RequestContext); const isRtl = dir === 'rtl'; // TO DO - Add real translations - const { skipLinkText } = translations; + const { liteSite = defaultTranslations } = translations; + const { disclaimer, backToCanonical, findOutMore, dataSaving } = liteSite; const id = 'LiteSiteCta'; return ( -
- - {skipLinkText} +
+ + {dataSaving} + + + {disclaimer} + + + + - +
); diff --git a/src/app/lib/config/services/gahuza.ts b/src/app/lib/config/services/gahuza.ts index 02bc87881ec..88e876a80ae 100644 --- a/src/app/lib/config/services/gahuza.ts +++ b/src/app/lib/config/services/gahuza.ts @@ -73,6 +73,12 @@ export const service: DefaultServiceConfig = { relatedContent: 'Ibindi bisa n’ibi', relatedTopics: 'Ibindi bisa n’ibi', navMenuText: 'Imice', + liteSite: { + disclaimer: `You’re viewing a text-only version of this website that uses less data. View the main version of the website including all images and videos.`, + backToCanonical: 'Take me to the main website', + findOutMore: 'Find out more about this data-saving version', + dataSaving: 'Data saving', + }, mediaAssetPage: { mediaPlayer: 'Ibikinwa', audioPlayer: 'Kina amajwi', diff --git a/src/app/models/types/translations.ts b/src/app/models/types/translations.ts index 001d999f2a2..f2960954f33 100644 --- a/src/app/models/types/translations.ts +++ b/src/app/models/types/translations.ts @@ -19,6 +19,12 @@ export interface Translations { topicsPath?: string; relatedTopics?: string; navMenuText: string; + liteSite?: { + disclaimer: string; + backToCanonical: string; + findOutMore: string; + dataSaving: string; + }; mediaAssetPage: { mediaPlayer: string; audioPlayer: string; From 5bf4774c9751a186f543d3954ddc9ad33c8745de Mon Sep 17 00:00:00 2001 From: Isabella Mitchell Date: Fri, 18 Oct 2024 10:57:16 +0100 Subject: [PATCH 04/29] WSTEAM1-1349: Fix typo --- src/app/legacy/containers/Header/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/legacy/containers/Header/index.jsx b/src/app/legacy/containers/Header/index.jsx index 550b2f77835..a1731d5e26a 100644 --- a/src/app/legacy/containers/Header/index.jsx +++ b/src/app/legacy/containers/Header/index.jsx @@ -80,7 +80,7 @@ const HeaderContainer = ({ } } - const liteSiteServices = ['gahuaza']; + const liteSiteServices = ['gahuza']; const renderLiteSiteCTA = isLite && liteSiteServices.includes(service); if (isApp) return null; From 0318d06ea987799de26cd6541234896235a82c37 Mon Sep 17 00:00:00 2001 From: Isabella Mitchell Date: Fri, 18 Oct 2024 12:39:53 +0100 Subject: [PATCH 05/29] WSTEAM1-1349: Update spacing. Remove textDecoration --- .../components/LiteSiteCta/index.styles.tsx | 61 ++++++++++++++++--- src/app/components/LiteSiteCta/index.tsx | 16 +++-- 2 files changed, 62 insertions(+), 15 deletions(-) diff --git a/src/app/components/LiteSiteCta/index.styles.tsx b/src/app/components/LiteSiteCta/index.styles.tsx index 386b4589c8f..08aee86b59e 100644 --- a/src/app/components/LiteSiteCta/index.styles.tsx +++ b/src/app/components/LiteSiteCta/index.styles.tsx @@ -1,26 +1,67 @@ import { css, Theme } from '@emotion/react'; +import pixelsToRem from '../../utilities/pixelsToRem'; export default { - container: ({ spacings }: Theme) => + container: ({ spacings, mq }: Theme) => css({ - margin: `${spacings.TRIPLE}rem 0`, + margin: `0 ${spacings.FULL}rem`, + padding: `${spacings.TRIPLE}rem 0 ${spacings.FULL}rem 0`, + maxWidth: '63.4rem', + position: 'relative', + + [mq.GROUP_2_MIN_WIDTH]: { + margin: `0 ${spacings.DOUBLE}rem`, + }, + [mq.GROUP_4_MIN_WIDTH]: { + margin: `0 auto`, + }, + }), + // link: ({ palette, spacings }: Theme) => + // css({ + + // }), + chevron: ({ palette, spacings }: Theme) => + css({ + color: palette.GREY_10, + fill: 'currentColor', + marginInlineStart: `${spacings.HALF}rem`, + verticalAlign: 'middle', }), - link: ({ palette, spacings }: Theme) => + // TO DO - split out padding so that the different links have different padding + linkWrapper: ({ palette, spacings }: Theme) => css({ + paddingTop: `${spacings.FULL}rem`, // touch target + paddingBottom: `${spacings.DOUBLE}rem`, // touch target + display: 'inline-block', + textDecoration: 'none', svg: { - color: palette.GREY_10, - fill: 'currentColor', - marginInlineStart: `${spacings.HALF}rem`, - verticalAlign: 'middle', + ' &:visited': { + color: palette.METAL, + }, + '&:focus, &:hover': { + color: palette.POSTBOX, + }, }, }), - canonicalLink: ({ spacings, fontVariants }: Theme) => + canonicalLink: ({ fontVariants }: Theme) => css({ ...fontVariants.sansBold, - margin: `${spacings.TRIPLE}rem 0`, }), linkContainer: ({ spacings }: Theme) => css({ - margin: `${spacings.TRIPLE}rem 0`, + // margin: `${spacings.DOUBLE}rem 0`, + }), + linkText: ({ palette }: Theme) => + css({ + borderBottom: `1px solid ${palette.GREY_10}`, + textDecoration: 'none', + ' &:visited': { + color: palette.METAL, + borderBottom: `1px solid ${palette.METAL}`, + }, + '&:focus, &:hover': { + borderBottom: `2px solid ${palette.POSTBOX}`, + color: palette.POSTBOX, + }, }), }; diff --git a/src/app/components/LiteSiteCta/index.tsx b/src/app/components/LiteSiteCta/index.tsx index 141c73715e9..0384e3e78ca 100644 --- a/src/app/components/LiteSiteCta/index.tsx +++ b/src/app/components/LiteSiteCta/index.tsx @@ -18,10 +18,16 @@ type CtaLinkProps = { const CtaLink = ({ isRtl, href, text, className }: CtaLinkProps) => { return ( - - {text} - {isRtl ? : } - + + + {text} + + {isRtl ? ( + + ) : ( + + )} + ); }; @@ -58,7 +64,7 @@ const LiteSiteCta = () => { text={backToCanonical} /> - + Date: Fri, 18 Oct 2024 16:18:33 +0100 Subject: [PATCH 06/29] WSTEAM1-1349: Update --- .../components/LiteSiteCta/index.styles.tsx | 47 +++++++--------- src/app/components/LiteSiteCta/index.test.tsx | 30 ++++++++-- src/app/components/LiteSiteCta/index.tsx | 56 +++++++++++-------- 3 files changed, 78 insertions(+), 55 deletions(-) diff --git a/src/app/components/LiteSiteCta/index.styles.tsx b/src/app/components/LiteSiteCta/index.styles.tsx index 08aee86b59e..d51a6a5b1e4 100644 --- a/src/app/components/LiteSiteCta/index.styles.tsx +++ b/src/app/components/LiteSiteCta/index.styles.tsx @@ -2,13 +2,17 @@ import { css, Theme } from '@emotion/react'; import pixelsToRem from '../../utilities/pixelsToRem'; export default { + outerContainer: ({ palette }: Theme) => + css({ + backgroundColor: `${palette.WHITE}`, + borderBottom: `${pixelsToRem(1)}rem solid ${palette.GREY_3}`, + }), container: ({ spacings, mq }: Theme) => css({ margin: `0 ${spacings.FULL}rem`, padding: `${spacings.TRIPLE}rem 0 ${spacings.FULL}rem 0`, maxWidth: '63.4rem', position: 'relative', - [mq.GROUP_2_MIN_WIDTH]: { margin: `0 ${spacings.DOUBLE}rem`, }, @@ -16,51 +20,42 @@ export default { margin: `0 auto`, }, }), - // link: ({ palette, spacings }: Theme) => - // css({ - - // }), chevron: ({ palette, spacings }: Theme) => css({ color: palette.GREY_10, fill: 'currentColor', marginInlineStart: `${spacings.HALF}rem`, verticalAlign: 'middle', + 'a:visited &': { + color: palette.METAL, + }, + 'a:focus &, a:hover &': { + color: palette.POSTBOX, + }, }), - // TO DO - split out padding so that the different links have different padding - linkWrapper: ({ palette, spacings }: Theme) => + link: () => css({ - paddingTop: `${spacings.FULL}rem`, // touch target - paddingBottom: `${spacings.DOUBLE}rem`, // touch target display: 'inline-block', textDecoration: 'none', - svg: { - ' &:visited': { - color: palette.METAL, - }, - '&:focus, &:hover': { - color: palette.POSTBOX, - }, - }, }), - canonicalLink: ({ fontVariants }: Theme) => + bottomLinkSpacing: ({ spacings }: Theme) => css({ - ...fontVariants.sansBold, + padding: `${spacings.FULL}rem 0 ${spacings.DOUBLE}rem`, }), - linkContainer: ({ spacings }: Theme) => + topLinkSpacing: ({ spacings }: Theme) => css({ - // margin: `${spacings.DOUBLE}rem 0`, + padding: `${spacings.DOUBLE}rem 0 ${spacings.FULL}rem`, }), linkText: ({ palette }: Theme) => css({ - borderBottom: `1px solid ${palette.GREY_10}`, + borderBottom: `${pixelsToRem(1)}rem solid ${palette.GREY_10}`, textDecoration: 'none', - ' &:visited': { + 'a:visited &': { color: palette.METAL, - borderBottom: `1px solid ${palette.METAL}`, + borderBottom: `${pixelsToRem(1)}rem solid ${palette.METAL}`, }, - '&:focus, &:hover': { - borderBottom: `2px solid ${palette.POSTBOX}`, + 'a:focus &, a:hover &': { + borderBottom: `${pixelsToRem(2)}rem solid ${palette.POSTBOX}`, color: palette.POSTBOX, }, }), diff --git a/src/app/components/LiteSiteCta/index.test.tsx b/src/app/components/LiteSiteCta/index.test.tsx index 1dfbc250b50..7ffdde8ddc2 100644 --- a/src/app/components/LiteSiteCta/index.test.tsx +++ b/src/app/components/LiteSiteCta/index.test.tsx @@ -3,11 +3,29 @@ import { render } from '../react-testing-library-with-providers'; import LiteSiteCta from '.'; describe('LiteSiteCTA', () => { - describe('dummy code', () => { - it('should render', () => { - const { getByText } = render(); - const ctaText = getByText('Go to main page'); - expect(ctaText).toBeInTheDocument(); - }); + it('Should have a strong element with page identifier.', () => { + const { container } = render(); + const strongText = container.querySelector('strong'); + expect(strongText?.innerHTML).toBe('Data saving version'); + }); + it('Should have a CTA link to the main site.', () => { + const { container } = render(); + const ctaText = container.querySelectorAll('a span')[0]; + const ctaLink = container.querySelectorAll( + 'a[href="https://www.test.bbc.com/news/articles/c0g992jmmkko"]', + )[0]; + expect(ctaText?.innerHTML).toBe('Take me to the main website'); + expect(ctaLink).toBeTruthy(); + }); + it('Should have a CTA link for more information.', () => { + const { container } = render(); + const ctaText = container.querySelectorAll('a span')[1]; + const ctaLink = container.querySelectorAll( + 'a[href="https://www.test.bbc.com/news/articles/c0g992jmmkko"]', + )[0]; + expect(ctaText?.innerHTML).toBe( + 'Find out more about this data-saving version', + ); + expect(ctaLink).toBeTruthy(); }); }); diff --git a/src/app/components/LiteSiteCta/index.tsx b/src/app/components/LiteSiteCta/index.tsx index 0384e3e78ca..ad1a84531f2 100644 --- a/src/app/components/LiteSiteCta/index.tsx +++ b/src/app/components/LiteSiteCta/index.tsx @@ -13,13 +13,20 @@ type CtaLinkProps = { isRtl: boolean; href: string; text: string; + fontVariant?: string; className?: string; }; -const CtaLink = ({ isRtl, href, text, className }: CtaLinkProps) => { +const CtaLink = ({ + isRtl, + href, + text, + fontVariant = 'sansRegular', + className, +}: CtaLinkProps) => { return ( - - + + {text} {isRtl ? ( @@ -49,29 +56,32 @@ const LiteSiteCta = () => { const id = 'LiteSiteCta'; return ( -
+
{dataSaving} - - {disclaimer} - - - - - - - +
+ + {disclaimer} + + + + + + + +
); }; From 663ced94e01203c4d080fde220d2855fddb13a1f Mon Sep 17 00:00:00 2001 From: Shayne Marc Enzo Ahchoon <32307964+shayneahchoon@users.noreply.github.com> Date: Tue, 22 Oct 2024 11:28:53 +0100 Subject: [PATCH 07/29] WSTEAM1-1349: Add e2e tests (#12074) * WSTEAM1-1349: Update * WSTEAM1-1349: Update --- cypress/e2e/pages/articles/index.cy.js | 2 + .../e2e/pages/articles/testsForLiteOnly.js | 10 + cypress/support/config/settings.js | 6 +- cypress/support/helpers/getLiteUrl/index.js | 16 + .../support/helpers/getLiteUrl/index.test.js | 35 + cypress/support/helpers/runTestsForPage.js | 26 + data/gahuza/articles/c5y51yxeg53o.json | 6624 +++++++++++++++++ src/app/components/LiteSiteCta/index.tsx | 7 +- 8 files changed, 6722 insertions(+), 4 deletions(-) create mode 100644 cypress/e2e/pages/articles/testsForLiteOnly.js create mode 100644 cypress/support/helpers/getLiteUrl/index.js create mode 100644 cypress/support/helpers/getLiteUrl/index.test.js create mode 100644 data/gahuza/articles/c5y51yxeg53o.json diff --git a/cypress/e2e/pages/articles/index.cy.js b/cypress/e2e/pages/articles/index.cy.js index c140c1c61ff..f0a32f28fc5 100644 --- a/cypress/e2e/pages/articles/index.cy.js +++ b/cypress/e2e/pages/articles/index.cy.js @@ -2,6 +2,7 @@ import runTestsForPage from '../../../support/helpers/runTestsForPage'; import { testsThatAlwaysRun, testsThatFollowSmokeTestConfig } from './tests'; import { testsThatFollowSmokeTestConfigForAMPOnly } from './testsForAMPOnly'; import { testsThatFollowSmokeTestConfigForCanonicalOnly } from './testsForCanonicalOnly'; +import { testsForLiteOnly } from './testsForLiteOnly'; const testsForPage = { pageType: 'articles', @@ -9,6 +10,7 @@ const testsForPage = { testsThatFollowSmokeTestConfig, testsThatFollowSmokeTestConfigForCanonicalOnly, testsThatFollowSmokeTestConfigForAMPOnly, + testsForLiteOnly, }; runTestsForPage(testsForPage); diff --git a/cypress/e2e/pages/articles/testsForLiteOnly.js b/cypress/e2e/pages/articles/testsForLiteOnly.js new file mode 100644 index 00000000000..213b8d03783 --- /dev/null +++ b/cypress/e2e/pages/articles/testsForLiteOnly.js @@ -0,0 +1,10 @@ +/* eslint-disable import/prefer-default-export */ +export const testsForLiteOnly = ({ service, pageType }) => { + describe(`Running testsForLiteOnly for ${service} ${pageType}`, () => { + describe('CTA: Lite', () => { + it('should render a call to action component', () => { + cy.get('[data-e2e="lite-cta"]').should('be.visible'); + }); + }); + }); +}; diff --git a/cypress/support/config/settings.js b/cypress/support/config/settings.js index 1bfbd1a01c9..81c8d475a8f 100644 --- a/cypress/support/config/settings.js +++ b/cypress/support/config/settings.js @@ -1518,11 +1518,11 @@ module.exports = () => ({ enabled: false, }, local: { - paths: ['/gahuza/articles/cey23zx8wx8o'], - enabled: false, + paths: ['/gahuza/articles/c5y51yxeg53o'], + enabled: true, }, }, - smoke: false, + smoke: true, }, errorPage404: { environments: { diff --git a/cypress/support/helpers/getLiteUrl/index.js b/cypress/support/helpers/getLiteUrl/index.js new file mode 100644 index 00000000000..334c23c5d55 --- /dev/null +++ b/cypress/support/helpers/getLiteUrl/index.js @@ -0,0 +1,16 @@ +import Url from 'url-parse'; + +export default path => { + /** + * Appends .lite to the pathname, before appending query string values + * + * */ + + const urlFromPath = new Url(path); + + if (!urlFromPath.pathname.includes('.lite')) { + urlFromPath.set('pathname', `${urlFromPath.pathname}.lite`); + } + + return urlFromPath.href; +}; diff --git a/cypress/support/helpers/getLiteUrl/index.test.js b/cypress/support/helpers/getLiteUrl/index.test.js new file mode 100644 index 00000000000..d9a60e9a09e --- /dev/null +++ b/cypress/support/helpers/getLiteUrl/index.test.js @@ -0,0 +1,35 @@ +const { default: getLiteUrl } = require('.'); + +describe('getLiteUrl', () => { + [ + 'http://localhost:7080', + 'https://www.test.bbc.com', + 'https://www.bbc.com', + ].forEach(baseUrl => { + describe(`with base url ${baseUrl}`, () => { + it('should return lite url', () => { + expect(getLiteUrl(`${baseUrl}/pathname`)).toEqual( + `${baseUrl}/pathname.lite`, + ); + }); + + it('should not append .lite to lite path', () => { + expect(getLiteUrl(`${baseUrl}/pathname.lite`)).toEqual( + `${baseUrl}/pathname.lite`, + ); + }); + + it('should return lite url for path with query string params', () => { + expect(getLiteUrl(`${baseUrl}/pathname?query_string=value`)).toEqual( + `${baseUrl}/pathname.lite?query_string=value`, + ); + }); + + it('should not append .lite to lite path with query string params', () => { + expect( + getLiteUrl(`${baseUrl}/pathname.lite?query_string=value`), + ).toEqual(`${baseUrl}/pathname.lite?query_string=value`); + }); + }); + }); +}); diff --git a/cypress/support/helpers/runTestsForPage.js b/cypress/support/helpers/runTestsForPage.js index 0438c84ba07..f20c7bffa3d 100644 --- a/cypress/support/helpers/runTestsForPage.js +++ b/cypress/support/helpers/runTestsForPage.js @@ -9,6 +9,7 @@ import serviceHasPageType from './serviceHasPageType'; import ampOnlyServices from './ampOnlyServices'; import visitPage from './visitPage'; import getAmpUrl from './getAmpUrl'; +import getLiteUrl from './getLiteUrl'; // This function takes all types of tests we have and runs in this series of steps with the fewest possible page visits @@ -26,6 +27,7 @@ const runTestsForPage = ({ testsThatNeverRunDuringSmokeTesting = noOp, testsThatNeverRunDuringSmokeTestingForCanonicalOnly = noOp, testsThatNeverRunDuringSmokeTestingForAMPOnly = noOp, + testsForLiteOnly = noOp, }) => { // For each Service and Page Type in the config file it visits the path and it writes a describe saying this. @@ -137,6 +139,30 @@ const runTestsForPage = ({ } } }); + + // Switch to Lite page URL (NB only some of our pages have AMP variants) + describe(`${pageType} - ${currentPath} - Lite`, () => { + // TC2 MAPs are not loading the media player which causes the tests to fail when the page is visited, this is accepted behaviour + // The substring '/20' is common to all the TC2 MAPs test URLs in the settings and we will not be adding more + if (!currentPath.includes('/20')) { + before(() => { + Cypress.env('currentPath', currentPath); + + visitPage(getLiteUrl(currentPath), pageType); + }); + + const testArgs = { + service, + pageType, + variant: config[service].variant, + isAmp: true, + }; + + if (service === 'gahuza') { + testsForLiteOnly(testArgs); + } + } + }); }); }); }; diff --git a/data/gahuza/articles/c5y51yxeg53o.json b/data/gahuza/articles/c5y51yxeg53o.json new file mode 100644 index 00000000000..a6fe4ce67fe --- /dev/null +++ b/data/gahuza/articles/c5y51yxeg53o.json @@ -0,0 +1,6624 @@ +{ + "data": { + "article": { + "metadata": { + "atiAnalytics": { + "categoryName": "Russia~Politics", + "contentId": "urn:bbc:optimo:asset:c5y51yxeg53o", + "contentType": "article", + "language": "rw", + "ldpThingIds": "39267b85-1784-4f4b-80ed-f8cb4a35f337~75612fa6-147c-4a43-97fa-fcf70d9cced3", + "ldpThingLabels": "Russia~Politics", + "nationsProducer": null, + "pageIdentifier": "gahuza.articles.c5y51yxeg53o.page", + "pageTitle": "Russia: Yulia Navalnaya yabwiye BBC ko afite intego yo kuziyamamariza kuba Perezida", + "timePublished": "2024-10-21T09:23:49.476Z", + "timeUpdated": "2024-10-21T09:23:49.476Z" + }, + "id": "urn:bbc:ares::article:c5y51yxeg53o", + "locators": { + "optimoUrn": "urn:bbc:optimo:asset:c5y51yxeg53o", + "canonicalUrl": "https://www.bbc.com/gahuza/articles/c5y51yxeg53o" + }, + "type": "article", + "createdBy": "Gahuza", + "language": "rw", + "firstPublished": 1729502629476, + "lastPublished": 1729502629476, + "options": { "includeComments": false }, + "analyticsLabels": { + "ldp_tags": "Russia~Politics", + "page": "gahuza.articles.c5y51yxeg53o.page", + "irisKeyword": null, + "audience_motivation": "Give me perspective", + "ldp_ids": "39267b85-1784-4f4b-80ed-f8cb4a35f337~75612fa6-147c-4a43-97fa-fcf70d9cced3", + "contentId": "urn:bbc:optimo:asset:c5y51yxeg53o", + "producer": "Gahuza" + }, + "passport": { + "language": "rw", + "home": "http://www.bbc.co.uk/ontologies/passport/home/Gahuza", + "taggings": [ + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/39267b85-1784-4f4b-80ed-f8cb4a35f337#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/75612fa6-147c-4a43-97fa-fcf70d9cced3#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/audience/motivation", + "value": "http://www.bbc.co.uk/things/7047e74c-b9ae-4c02-a4a8-748df451ac58#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/infoClass", + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/primaryMediaType", + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/format", + "value": "http://www.bbc.co.uk/things/8d1509ef-08ef-42bd-b831-82504eed9b8e#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/assetType", + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/editorialSensitivity", + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id" + } + ], + "predicates": { + "assetType": [ + { + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id", + "type": "assetType" + } + ], + "primaryMediaType": [ + { + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id", + "type": "primaryMediaType" + } + ], + "infoClass": [ + { + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id", + "type": "infoClass" + } + ], + "formats": [ + { + "value": "http://www.bbc.co.uk/things/8d1509ef-08ef-42bd-b831-82504eed9b8e#id", + "thingLabel": "Feature", + "thingUri": "http://www.bbc.co.uk/things/8d1509ef-08ef-42bd-b831-82504eed9b8e#id", + "thingId": "8d1509ef-08ef-42bd-b831-82504eed9b8e", + "thingType": ["tagging:TagConcept", "tagging:Format"], + "thingSameAs": [ + "http://www.bbc.co.uk/ontologies/applicationlogic-news/Feature" + ], + "thingEnglishLabel": "Feature", + "thingPreferredLabel": "Feature", + "thingLabelLanguage": "rw", + "type": "formats" + } + ], + "editorialSensitivity": [ + { + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id", + "type": "editorialSensitivity" + } + ], + "about": [ + { + "value": "http://www.bbc.co.uk/things/39267b85-1784-4f4b-80ed-f8cb4a35f337#id", + "thingLabel": "Uburusiya", + "thingUri": "http://www.bbc.co.uk/things/39267b85-1784-4f4b-80ed-f8cb4a35f337#id", + "thingId": "39267b85-1784-4f4b-80ed-f8cb4a35f337", + "thingType": ["core:Place", "tagging:TagConcept", "core:Thing"], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q159", + "http://sws.geonames.org/2017370/" + ], + "thingEnglishLabel": "Russia", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/75612fa6-147c-4a43-97fa-fcf70d9cced3#id", + "thingLabel": "Politike", + "thingUri": "http://www.bbc.co.uk/things/75612fa6-147c-4a43-97fa-fcf70d9cced3#id", + "thingId": "75612fa6-147c-4a43-97fa-fcf70d9cced3", + "thingType": [ + "tagging:Genre", + "tagging:TagConcept", + "tagging:AmbiguousTerm", + "core:Theme", + "core:Thing" + ], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q7163", + "http://dbpedia.org/resource/Politics" + ], + "thingEnglishLabel": "Politics", + "type": "about" + } + ] + } + }, + "tags": { + "about": [ + { + "thingLabel": "Uburusiya", + "thingUri": "http://www.bbc.co.uk/things/39267b85-1784-4f4b-80ed-f8cb4a35f337#id", + "thingId": "39267b85-1784-4f4b-80ed-f8cb4a35f337", + "thingType": ["core:Place", "tagging:TagConcept", "core:Thing"], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q159", + "http://sws.geonames.org/2017370/" + ], + "topicName": "Uburusiya", + "topicId": "cnq68qdw4kyt", + "curationList": [ + { + "curationId": "3a802bdc-5080-4ec4-8310-c09fa1c2d2bd", + "curationType": "vivo-stream" + } + ], + "thingEnglishLabel": "Russia", + "thingLabelLanguage": "rw", + "thingPreferredLabel": "Russia" + }, + { + "thingLabel": "Politike", + "thingUri": "http://www.bbc.co.uk/things/75612fa6-147c-4a43-97fa-fcf70d9cced3#id", + "thingId": "75612fa6-147c-4a43-97fa-fcf70d9cced3", + "thingType": [ + "tagging:Genre", + "tagging:TagConcept", + "tagging:AmbiguousTerm", + "core:Theme", + "core:Thing" + ], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q7163", + "http://dbpedia.org/resource/Politics" + ], + "topicName": "Politike", + "topicId": "c5qvpq5ppqpt", + "curationList": [ + { + "curationId": "cb60b036-9236-4306-a1db-997c309ef28c", + "curationType": "vivo-stream" + } + ], + "thingEnglishLabel": "Politics", + "thingLabelLanguage": "rw", + "thingPreferredLabel": "Politics" + } + ] + }, + "blockTypes": [ + "headline", + "text", + "paragraph", + "fragment", + "byline", + "contributor", + "name", + "role", + "image", + "caption", + "altText", + "rawImage", + "links", + "link", + "urlLink", + "aresLink" + ], + "includeComments": false, + "topics": [ + { + "topicName": "Politike", + "topicId": "c5qvpq5ppqpt", + "subjectList": [ + { + "subjectId": "http://www.bbc.co.uk/things/75612fa6-147c-4a43-97fa-fcf70d9cced3#id", + "subjectType": "tag" + } + ], + "curationList": [ + { + "curationId": "cb60b036-9236-4306-a1db-997c309ef28c", + "curationType": "vivo-stream", + "visualProminence": "NORMAL" + } + ], + "types": [ + "tagging:Genre", + "tagging:TagConcept", + "tagging:AmbiguousTerm", + "core:Theme", + "core:Thing" + ], + "home": "http://www.bbc.co.uk/ontologies/passport/home/Gahuza", + "topicUrl": "/gahuza/topics/c5qvpq5ppqpt" + }, + { + "topicName": "Uburusiya", + "topicId": "cnq68qdw4kyt", + "subjectList": [ + { + "subjectId": "http://www.bbc.co.uk/things/39267b85-1784-4f4b-80ed-f8cb4a35f337#id", + "subjectType": "tag" + } + ], + "curationList": [ + { + "curationId": "3a802bdc-5080-4ec4-8310-c09fa1c2d2bd", + "curationType": "vivo-stream", + "visualProminence": "NORMAL" + } + ], + "types": ["core:Place", "tagging:TagConcept", "core:Thing"], + "home": "http://www.bbc.co.uk/ontologies/passport/home/Gahuza", + "topicUrl": "/gahuza/topics/cnq68qdw4kyt" + } + ], + "consumableAsSFV": false, + "allowAdvertising": true, + "consumableOnRedButton": false, + "consumableOnlyOnRedButton": false, + "breakingNews": { "isBreaking": false }, + "useSensitiveOnwardJourneys": false, + "stats": { "readTime": 7, "wordCount": 1447 }, + "isTransliterated": false + }, + "content": { + "model": { + "blocks": [ + { + "id": "fce68f2d", + "type": "headline", + "model": { + "blocks": [ + { + "id": "c7298038", + "type": "text", + "model": { + "blocks": [ + { + "id": "eed627ab", + "type": "paragraph", + "model": { + "text": "‘Nziyamamariza kuba perezida w’Uburusiya Putin navaho’ - Umupfakazi wa Navalny", + "blocks": [ + { + "id": "af816737", + "type": "fragment", + "model": { + "text": "‘Nziyamamariza kuba perezida w’Uburusiya Putin navaho’ - Umupfakazi wa Navalny", + "attributes": [] + }, + "position": [1, 1, 1, 1] + } + ] + }, + "position": [1, 1, 1] + } + ] + }, + "position": [1, 1] + } + ] + }, + "position": [1] + }, + { + "id": "416980bc", + "type": "image", + "model": { + "blocks": [ + { + "id": "e93c90c0", + "type": "caption", + "model": { + "blocks": [ + { + "id": "3f134ae0", + "type": "text", + "model": { + "blocks": [ + { + "id": "d64af24a", + "type": "paragraph", + "model": { + "text": "Alexei Navalny na Yulia Navalnaya bari i Moscow mu 2013 muri metingi yo kwiyamamaza kw'abakuru b'imijyi", + "blocks": [ + { + "id": "bcdb8458", + "type": "fragment", + "model": { + "text": "Alexei Navalny na Yulia Navalnaya bari i Moscow mu 2013 muri metingi yo kwiyamamaza kw'abakuru b'imijyi", + "attributes": [] + }, + "position": [2, 1, 1, 1, 1] + } + ] + }, + "position": [2, 1, 1, 1] + } + ] + }, + "position": [2, 1, 1] + } + ] + }, + "position": [2, 1] + }, + { + "id": "49ce9854", + "type": "altText", + "model": { + "blocks": [ + { + "id": "8f43dff1", + "type": "text", + "model": { + "blocks": [ + { + "id": "f3eda8aa", + "type": "paragraph", + "model": { + "text": "Alexei Navalny na Yulia Navalnaya bari i Moscow mu 2013 muri metingi yo kwiyamamaza kw'abakuru b'imijyi", + "blocks": [ + { + "id": "b8c424bb", + "type": "fragment", + "model": { + "text": "Alexei Navalny na Yulia Navalnaya bari i Moscow mu 2013 muri metingi yo kwiyamamaza kw'abakuru b'imijyi", + "attributes": [] + }, + "position": [2, 2, 1, 1, 1] + } + ] + }, + "position": [2, 2, 1, 1] + } + ] + }, + "position": [2, 2, 1] + } + ] + }, + "position": [2, 2] + }, + { + "id": "d1b55db4", + "type": "rawImage", + "model": { + "width": 1536, + "height": 864, + "locator": "8654/live/6fd0abe0-8f8a-11ef-8e6d-e3e64e16c628.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "Umuryango wa Navalny", + "suitableForSyndication": false + }, + "position": [2, 3] + } + ] + }, + "position": [2] + }, + { + "id": "fc117d0f", + "type": "byline", + "model": { + "blocks": [ + { + "id": "fc398635", + "type": "contributor", + "model": { + "blocks": [ + { + "id": "8241f2ac", + "type": "name", + "model": { + "blocks": [ + { + "id": "d153ab1f", + "type": "text", + "model": { + "blocks": [ + { + "id": "28afcbef", + "type": "paragraph", + "model": { + "text": "Katie Razzall", + "blocks": [ + { + "id": "b118170f", + "type": "fragment", + "model": { + "text": "Katie Razzall", + "attributes": [] + }, + "position": [3, 1, 1, 1, 1, 1] + } + ] + }, + "position": [3, 1, 1, 1, 1] + } + ] + }, + "position": [3, 1, 1, 1] + } + ] + }, + "position": [3, 1, 1] + }, + { + "id": "0f0e0025", + "type": "role", + "model": { + "blocks": [ + { + "id": "1ba0dc92", + "type": "text", + "model": { + "blocks": [ + { + "id": "911ec33c", + "type": "paragraph", + "model": { + "text": "BBC News", + "blocks": [ + { + "id": "f2c60e98", + "type": "fragment", + "model": { + "text": "BBC News", + "attributes": [] + }, + "position": [3, 1, 2, 1, 1, 1] + } + ] + }, + "position": [3, 1, 2, 1, 1] + } + ] + }, + "position": [3, 1, 2, 1] + } + ] + }, + "position": [3, 1, 2] + } + ] + }, + "position": [3, 1] + } + ] + }, + "position": [3] + }, + { + "id": "82bd604c", + "type": "timestamp", + "model": { + "firstPublished": 1729502629476, + "lastPublished": 1729502629476 + }, + "position": [4] + }, + { + "id": "2018f65f", + "type": "text", + "model": { + "blocks": [ + { + "id": "5a1152ef", + "type": "paragraph", + "model": { + "text": "Yulia Navalnaya arifuza kuba perezida w’Uburusiya, ni ko yambwiye. Andeba mu maso. Nta gushidikanya cyangwa impumbya.", + "blocks": [ + { + "id": "c4840ff1", + "type": "fragment", + "model": { + "text": "Yulia Navalnaya arifuza kuba perezida w’Uburusiya, ni ko yambwiye. Andeba mu maso. Nta gushidikanya cyangwa impumbya.", + "attributes": [] + }, + "position": [5, 1, 1] + } + ] + }, + "position": [5, 1] + }, + { + "id": "9b7afb98", + "type": "paragraph", + "model": { + "text": "Navalnaya azi ko yahita afungwa ageze iwabo mu gihe Perezida Vladimir Putin akiri ku ntebe. Ubutegetsi bwe bushinja uyu mugore ubuhezanguni.", + "blocks": [ + { + "id": "87c76ca1", + "type": "fragment", + "model": { + "text": "Navalnaya azi ko yahita afungwa ageze iwabo mu gihe Perezida Vladimir Putin akiri ku ntebe. Ubutegetsi bwe bushinja uyu mugore ubuhezanguni.", + "attributes": [] + }, + "position": [5, 2, 1] + } + ] + }, + "position": [5, 2] + }, + { + "id": "4cecc0c6", + "type": "paragraph", + "model": { + "text": "Ibi ntabwo ari iterabwoba ry’icyuka. Mu Burusiya bishobora kukugeza ku rupfu.", + "blocks": [ + { + "id": "4223eb81", + "type": "fragment", + "model": { + "text": "Ibi ntabwo ari iterabwoba ry’icyuka. Mu Burusiya bishobora kukugeza ku rupfu.", + "attributes": [] + }, + "position": [5, 3, 1] + } + ] + }, + "position": [5, 3] + }, + { + "id": "9104b54f", + "type": "paragraph", + "model": { + "text": "Umugabo we, wanengaga Perezida Putin bikomeye, yakatiwe gufungwa imyaka 19 kubera ubuhezanguni, ibirego byabonwaga nk’ibifite imvo ya politike. ", + "blocks": [ + { + "id": "b15afa2c", + "type": "fragment", + "model": { + "text": "Umugabo we, wanengaga Perezida Putin bikomeye, yakatiwe gufungwa imyaka 19 kubera ubuhezanguni, ibirego byabonwaga nk’ibifite imvo ya politike. ", + "attributes": [] + }, + "position": [5, 4, 1] + } + ] + }, + "position": [5, 4] + } + ] + }, + "position": [5] + }, + { "id": "3b309b9c", "type": "mpu", "model": {}, "position": [6] }, + { + "id": "f46b04b3", + "type": "text", + "model": { + "blocks": [ + { + "id": "36b74103", + "type": "paragraph", + "model": { + "text": "Yapfiriye muri gereza muri Gashyantare(2) uyu mwaka. Perezida Joe Biden wa Amerika yavuze ko “nta gushidikanya” ari Putin wabikoze.", + "blocks": [ + { + "id": "e0ed33d7", + "type": "fragment", + "model": { + "text": "Yapfiriye muri gereza muri Gashyantare(2) uyu mwaka. Perezida Joe Biden wa Amerika yavuze ko “nta gushidikanya” ari Putin wabikoze.", + "attributes": [] + }, + "position": [7, 1, 1] + } + ] + }, + "position": [7, 1] + } + ] + }, + "position": [7] + }, + { + "id": "6b22d8da", + "type": "wsoj", + "model": { "type": "recommendations" }, + "position": [8] + }, + { + "id": "1dae03fd", + "type": "text", + "model": { + "blocks": [ + { + "id": "2b634601", + "type": "paragraph", + "model": { + "text": "Uburusiya bwahakanye kwica Navalny.", + "blocks": [ + { + "id": "d9abeb4c", + "type": "fragment", + "model": { + "text": "Uburusiya bwahakanye kwica Navalny.", + "attributes": [] + }, + "position": [9, 1, 1] + } + ] + }, + "position": [9, 1] + }, + { + "id": "82674d5f", + "type": "paragraph", + "model": { + "text": "Yicaye mu isomero riri i Londres, Yulia Navalnaya aravuga kandi arasa n’uzasimbura umugabo we mu ntambara yari ari ho, uyu munyamategeko wabaye umunyapolitike arota Uburusiya butandukanye.", + "blocks": [ + { + "id": "4369ee77", + "type": "fragment", + "model": { + "text": "Yicaye mu isomero riri i Londres, Yulia Navalnaya aravuga kandi arasa n’uzasimbura umugabo we mu ntambara yari ari ho, uyu munyamategeko wabaye umunyapolitike arota Uburusiya butandukanye.", + "attributes": [] + }, + "position": [9, 2, 1] + } + ] + }, + "position": [9, 2] + } + ] + }, + "position": [9] + }, + { + "id": "5c738405", + "type": "text", + "model": { + "blocks": [ + { + "id": "7694636b", + "type": "paragraph", + "model": { + "text": "Ubwo yamurikaga igitabo cyitwa ‘Patriot’ umugabo we yariho yandika mbere y’uko apfa, Yulia yasubiyemo umugambi we wo gukomeza urugamba rwa demokarasi. rw’umugabo we .", + "blocks": [ + { + "id": "2cf03a18", + "type": "fragment", + "model": { + "text": "Ubwo yamurikaga igitabo cyitwa ‘Patriot’ umugabo we yariho yandika mbere y’uko apfa, Yulia yasubiyemo umugambi we wo gukomeza urugamba rwa demokarasi. rw’umugabo we .", + "attributes": [] + }, + "position": [10, 1, 1] + } + ] + }, + "position": [10, 1] + }, + { + "id": "54543ad5", + "type": "paragraph", + "model": { + "text": "Igihe nyacyo nikigera “nzajya mu matora…nk’umukandida”, ni ko yabwiye BBC.", + "blocks": [ + { + "id": "e696927f", + "type": "fragment", + "model": { + "text": "Igihe nyacyo nikigera “nzajya mu matora…nk’umukandida”, ni ko yabwiye BBC.", + "attributes": [] + }, + "position": [10, 2, 1] + } + ] + }, + "position": [10, 2] + }, + { + "id": "aaffef66", + "type": "paragraph", + "model": { + "text": "Ati: “Umukeba wanjye muri politike ni Vladimir Putin. Kandi nzakora ibishoboka byose mu gukuraho ubutegetsi bwe vuba bishoboka.”", + "blocks": [ + { + "id": "f56d5130", + "type": "fragment", + "model": { + "text": "Ati: “Umukeba wanjye muri politike ni Vladimir Putin. Kandi nzakora ibishoboka byose mu gukuraho ubutegetsi bwe vuba bishoboka.”", + "attributes": [] + }, + "position": [10, 3, 1] + } + ] + }, + "position": [10, 3] + }, + { + "id": "781894fc", + "type": "paragraph", + "model": { + "text": "Kugeza ubu, ibyo bigomba kuva hanze y’Uburusiya.", + "blocks": [ + { + "id": "7436bbdc", + "type": "fragment", + "model": { + "text": "Kugeza ubu, ibyo bigomba kuva hanze y’Uburusiya.", + "attributes": [] + }, + "position": [10, 4, 1] + } + ] + }, + "position": [10, 4] + } + ] + }, + "position": [10] + }, + { + "id": "b0df2266", + "type": "image", + "model": { + "blocks": [ + { + "id": "f65234ca", + "type": "caption", + "model": { + "blocks": [ + { + "id": "e5c12a08", + "type": "text", + "model": { + "blocks": [ + { + "id": "89e22292", + "type": "paragraph", + "model": { + "text": "Yulia Navalnaya yabwiye BBC ko umugabo we yari \"umuntu ukunda igihugu by'ukuri\"", + "blocks": [ + { + "id": "5901a84e", + "type": "fragment", + "model": { + "text": "Yulia Navalnaya yabwiye BBC ko umugabo we yari \"umuntu ukunda igihugu by'ukuri\"", + "attributes": [] + }, + "position": [11, 1, 1, 1, 1] + } + ] + }, + "position": [11, 1, 1, 1] + } + ] + }, + "position": [11, 1, 1] + } + ] + }, + "position": [11, 1] + }, + { + "id": "64c53291", + "type": "altText", + "model": { + "blocks": [ + { + "id": "236c3716", + "type": "text", + "model": { + "blocks": [ + { + "id": "767d8ad0", + "type": "paragraph", + "model": { + "text": "Yulia Navalnaya yabwiye BBC ko umugabo we yari \"umuntu ukunda igihugu by'ukuri\"", + "blocks": [ + { + "id": "3f5c1e99", + "type": "fragment", + "model": { + "text": "Yulia Navalnaya yabwiye BBC ko umugabo we yari \"umuntu ukunda igihugu by'ukuri\"", + "attributes": [] + }, + "position": [11, 2, 1, 1, 1] + } + ] + }, + "position": [11, 2, 1, 1] + } + ] + }, + "position": [11, 2, 1] + } + ] + }, + "position": [11, 2] + }, + { + "id": "6606e77c", + "type": "rawImage", + "model": { + "width": 1536, + "height": 864, + "locator": "774f/live/a6a31860-8f8a-11ef-b3c2-754b6219680e.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "BBC", + "suitableForSyndication": true + }, + "position": [11, 3] + } + ] + }, + "position": [11] + }, + { + "id": "5e466529", + "type": "text", + "model": { + "blocks": [ + { + "id": "9a951f3a", + "type": "paragraph", + "model": { + "text": "Yambwiye ko mu gihe Putin akiri ku butegetsi atasubira iwabo. Ariko ko afite ikizere cy’uko uwo munsi amaherezo uzagera, ubwo igihe cya Putin kizarangira Uburusiya bukongera bugafunguka.", + "blocks": [ + { + "id": "b7f7bc14", + "type": "fragment", + "model": { + "text": "Yambwiye ko mu gihe Putin akiri ku butegetsi atasubira iwabo. Ariko ko afite ikizere cy’uko uwo munsi amaherezo uzagera, ubwo igihe cya Putin kizarangira Uburusiya bukongera bugafunguka.", + "attributes": [] + }, + "position": [12, 1, 1] + } + ] + }, + "position": [12, 1] + }, + { + "id": "dd75bdfe", + "type": "paragraph", + "model": { + "text": "Kimwe n’umugabo we, Yulia afite ikizere ko hazabaho amatora mu mucyo n’ubwisanzure. Ibyo nibiba, avuga ko azaba ariyo.", + "blocks": [ + { + "id": "35218c85", + "type": "fragment", + "model": { + "text": "Kimwe n’umugabo we, Yulia afite ikizere ko hazabaho amatora mu mucyo n’ubwisanzure. Ibyo nibiba, avuga ko azaba ariyo.", + "attributes": [] + }, + "position": [12, 2, 1] + } + ] + }, + "position": [12, 2] + }, + { + "id": "3e909359", + "type": "paragraph", + "model": { + "text": "Umuryango we warakubitse bikomeye mu rugamba rwo kurwanya ubutegetsi bw’Uburusiya, agahinda ke yakerekeje mu butumwa bwa politike.", + "blocks": [ + { + "id": "52ba6fec", + "type": "fragment", + "model": { + "text": "Umuryango we warakubitse bikomeye mu rugamba rwo kurwanya ubutegetsi bw’Uburusiya, agahinda ke yakerekeje mu butumwa bwa politike.", + "attributes": [] + }, + "position": [12, 3, 1] + } + ] + }, + "position": [12, 3] + } + ] + }, + "position": [12] + }, + { + "id": "db987a24", + "type": "image", + "model": { + "blocks": [ + { + "id": "49233497", + "type": "caption", + "model": { + "blocks": [ + { + "id": "1deb88f1", + "type": "text", + "model": { + "blocks": [ + { + "id": "ea5d3716", + "type": "paragraph", + "model": { + "text": "Alexei, Yulia n'umuhungu wabo Zakhar i Moscow mu 2017, bazengurutswe n'abapolisi", + "blocks": [ + { + "id": "f7d95497", + "type": "fragment", + "model": { + "text": "Alexei, Yulia n'umuhungu wabo Zakhar i Moscow mu 2017, bazengurutswe n'abapolisi", + "attributes": [] + }, + "position": [13, 1, 1, 1, 1] + } + ] + }, + "position": [13, 1, 1, 1] + } + ] + }, + "position": [13, 1, 1] + } + ] + }, + "position": [13, 1] + }, + { + "id": "1bc0f181", + "type": "altText", + "model": { + "blocks": [ + { + "id": "adbe132d", + "type": "text", + "model": { + "blocks": [ + { + "id": "684ed9b0", + "type": "paragraph", + "model": { + "text": "Alexei, Yulia n'umuhungu wabo Zakhar i Moscow mu 2017, bazengurutswe n'abapolisi", + "blocks": [ + { + "id": "001726a6", + "type": "fragment", + "model": { + "text": "Alexei, Yulia n'umuhungu wabo Zakhar i Moscow mu 2017, bazengurutswe n'abapolisi", + "attributes": [] + }, + "position": [13, 2, 1, 1, 1] + } + ] + }, + "position": [13, 2, 1, 1] + } + ] + }, + "position": [13, 2, 1] + } + ] + }, + "position": [13, 2] + }, + { + "id": "7df574b4", + "type": "rawImage", + "model": { + "width": 1536, + "height": 864, + "locator": "098f/live/d09e5170-8f8a-11ef-b3c2-754b6219680e.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "Evgeny Feldman", + "suitableForSyndication": false + }, + "position": [13, 3] + } + ] + }, + "position": [13] + }, + { + "id": "7396fc94", + "type": "text", + "model": { + "blocks": [ + { + "id": "139877fd", + "type": "paragraph", + "model": { + "text": "Yulia avuga ko kuva umugabo we Alexei yapfa, yakomeje gutekereza kurushaho uburyo bari basangiye imyumvire ya politike, n’uko ibyemezo byabo byagize ingaruka ku bana babo Dasha, 23, na Zakhar, 16.", + "blocks": [ + { + "id": "0c58d5d4", + "type": "fragment", + "model": { + "text": "Yulia avuga ko kuva umugabo we Alexei yapfa, yakomeje gutekereza kurushaho uburyo bari basangiye imyumvire ya politike, n’uko ibyemezo byabo byagize ingaruka ku bana babo Dasha, 23, na Zakhar, 16.", + "attributes": [] + }, + "position": [14, 1, 1] + } + ] + }, + "position": [14, 1] + }, + { + "id": "48016caa", + "type": "paragraph", + "model": { + "text": "Ati: “Ndabyumva neza ko batabihisemo”. Ariko avuga ko atigeze asaba na Navalny guhindura inzira.", + "blocks": [ + { + "id": "d00a99d1", + "type": "fragment", + "model": { + "text": "Ati: “Ndabyumva neza ko batabihisemo”. Ariko avuga ko atigeze asaba na Navalny guhindura inzira.", + "attributes": [] + }, + "position": [14, 2, 1] + } + ] + }, + "position": [14, 2] + }, + { + "id": "f44ea4e1", + "type": "paragraph", + "model": { + "text": "Navalny yangiwe na Komisiyo y’amatora y’Uburusiya kwiyamamariza kuba perezida mu 2018.", + "blocks": [ + { + "id": "017e7f5e", + "type": "fragment", + "model": { + "text": "Navalny yangiwe na Komisiyo y’amatora y’Uburusiya kwiyamamariza kuba perezida mu 2018.", + "attributes": [] + }, + "position": [14, 3, 1] + } + ] + }, + "position": [14, 3] + }, + { + "id": "91e641cf", + "type": "paragraph", + "model": { + "text": "Amaperereza yakoraga abicishije mu kigo cye Anti-Corruption Foundation yarebwe na za miliyoni z’abantu, harimo video yatangajwe amaze gutabwa muri yombi, ivuga uko Putin yubatse ingoro y’agaciro ka miliyari imwe y’amadorari ku Nyanja y’Umukara.", + "blocks": [ + { + "id": "51a345c4", + "type": "fragment", + "model": { + "text": "Amaperereza yakoraga abicishije mu kigo cye Anti-Corruption Foundation yarebwe na za miliyoni z’abantu, harimo video yatangajwe amaze gutabwa muri yombi, ivuga uko Putin yubatse ingoro y’agaciro ka miliyari imwe y’amadorari ku Nyanja y’Umukara.", + "attributes": [] + }, + "position": [14, 4, 1] + } + ] + }, + "position": [14, 4] + }, + { + "id": "e71be65c", + "type": "paragraph", + "model": { + "text": "Perezida Putin ibyo yarabihakanye.", + "blocks": [ + { + "id": "7a459309", + "type": "fragment", + "model": { + "text": "Perezida Putin ibyo yarabihakanye.", + "attributes": [] + }, + "position": [14, 5, 1] + } + ] + }, + "position": [14, 5] + } + ] + }, + "position": [14] + }, + { + "id": "fd13d99f", + "type": "image", + "model": { + "blocks": [ + { + "id": "e4de156a", + "type": "caption", + "model": { + "blocks": [ + { + "id": "57d4b642", + "type": "text", + "model": { + "blocks": [ + { + "id": "f145ba1c", + "type": "paragraph", + "model": { + "text": "Navalny avuga ko iperereza ku 'ngoro ya Putin' iri ku Nyanja y'Umukara ryafashe amezi menshi", + "blocks": [ + { + "id": "0d040f7c", + "type": "fragment", + "model": { + "text": "Navalny avuga ko iperereza ku 'ngoro ya Putin' iri ku Nyanja y'Umukara ryafashe amezi menshi", + "attributes": [] + }, + "position": [15, 1, 1, 1, 1] + } + ] + }, + "position": [15, 1, 1, 1] + } + ] + }, + "position": [15, 1, 1] + } + ] + }, + "position": [15, 1] + }, + { + "id": "9697acfd", + "type": "altText", + "model": { + "blocks": [ + { + "id": "d1605bd2", + "type": "text", + "model": { + "blocks": [ + { + "id": "28bbfcce", + "type": "paragraph", + "model": { + "text": "Navalny avuga ko iperereza ku 'ngoro ya Putin' iri ku Nyanja y'Umukara ryafashe amezi menshi", + "blocks": [ + { + "id": "4b22a870", + "type": "fragment", + "model": { + "text": "Navalny avuga ko iperereza ku 'ngoro ya Putin' iri ku Nyanja y'Umukara ryafashe amezi menshi", + "attributes": [] + }, + "position": [15, 2, 1, 1, 1] + } + ] + }, + "position": [15, 2, 1, 1] + } + ] + }, + "position": [15, 2, 1] + } + ] + }, + "position": [15, 2] + }, + { + "id": "7bef845a", + "type": "rawImage", + "model": { + "width": 1536, + "height": 864, + "locator": "0b6d/live/2d36ffe0-8f8b-11ef-8e6d-e3e64e16c628.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "Alexei Navalny/Anti-Corruption Foundation", + "suitableForSyndication": false + }, + "position": [15, 3] + } + ] + }, + "position": [15] + }, + { + "id": "f2e30598", + "type": "text", + "model": { + "blocks": [ + { + "id": "de813dee", + "type": "paragraph", + "model": { + "text": "Navalny yahawe uburozi bwa agent Novichok in 2020.", + "blocks": [ + { + "id": "19a2b937", + "type": "fragment", + "model": { + "text": "Navalny yahawe uburozi bwa agent Novichok in 2020.", + "attributes": [] + }, + "position": [16, 1, 1] + } + ] + }, + "position": [16, 1] + }, + { + "id": "7be7f427", + "type": "paragraph", + "model": { + "text": "Ajyanwa kuvurirwa mu Budage kandi Umukuru w’Ubudage yasabye ibisobanuro Perezida Putin.", + "blocks": [ + { + "id": "b45c1242", + "type": "fragment", + "model": { + "text": "Ajyanwa kuvurirwa mu Budage kandi Umukuru w’Ubudage yasabye ibisobanuro Perezida Putin.", + "attributes": [] + }, + "position": [16, 2, 1] + } + ] + }, + "position": [16, 2] + }, + { + "id": "4a331c53", + "type": "paragraph", + "model": { + "text": "Nyuma Navalny yakoranye n’abakora icukumbura bitwa Bellingcat babona ko bwa burozi bufitanye isano n’urwego rw’umutekano rw’Uburusiya, Federal Security Service (FSB).", + "blocks": [ + { + "id": "5e492221", + "type": "fragment", + "model": { + "text": "Nyuma Navalny yakoranye n’abakora icukumbura bitwa Bellingcat babona ko bwa burozi bufitanye isano n’urwego rw’umutekano rw’Uburusiya, Federal Security Service (FSB).", + "attributes": [] + }, + "position": [16, 3, 1] + } + ] + }, + "position": [16, 3] + }, + { + "id": "205565c6", + "type": "paragraph", + "model": { + "text": "Atangiye koroherwa yahise atangira kwandika igitabo ku buzima bwe.", + "blocks": [ + { + "id": "4845dbab", + "type": "fragment", + "model": { + "text": "Atangiye koroherwa yahise atangira kwandika igitabo ku buzima bwe.", + "attributes": [] + }, + "position": [16, 4, 1] + } + ] + }, + "position": [16, 4] + } + ] + }, + "position": [16] + }, + { + "id": "7368d86a", + "type": "image", + "model": { + "blocks": [ + { + "id": "135fb270", + "type": "caption", + "model": { + "blocks": [ + { + "id": "1e9a9999", + "type": "text", + "model": { + "blocks": [ + { + "id": "9c9738de", + "type": "paragraph", + "model": { + "text": "Mu gitabo cye, Alexei avuga ko yarokotse uburozi bwa Novichok", + "blocks": [ + { + "id": "1e6146de", + "type": "fragment", + "model": { + "text": "Mu gitabo cye, Alexei avuga ko yarokotse uburozi bwa Novichok", + "attributes": [] + }, + "position": [17, 1, 1, 1, 1] + } + ] + }, + "position": [17, 1, 1, 1] + } + ] + }, + "position": [17, 1, 1] + } + ] + }, + "position": [17, 1] + }, + { + "id": "b1640322", + "type": "altText", + "model": { + "blocks": [ + { + "id": "fd6fd0ec", + "type": "text", + "model": { + "blocks": [ + { + "id": "8a4f4c45", + "type": "paragraph", + "model": { + "text": "Mu gitabo cye, Alexei avuga ko yarokotse uburozi bwa Novichok", + "blocks": [ + { + "id": "78fa8780", + "type": "fragment", + "model": { + "text": "Mu gitabo cye, Alexei avuga ko yarokotse uburozi bwa Novichok", + "attributes": [] + }, + "position": [17, 2, 1, 1, 1] + } + ] + }, + "position": [17, 2, 1, 1] + } + ] + }, + "position": [17, 2, 1] + } + ] + }, + "position": [17, 2] + }, + { + "id": "14703920", + "type": "rawImage", + "model": { + "width": 1536, + "height": 1152, + "locator": "1e45/live/74e58640-8f8b-11ef-b3c2-754b6219680e.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "Umuryango wa Navalny", + "suitableForSyndication": false + }, + "position": [17, 3] + } + ] + }, + "position": [17] + }, + { + "id": "4e2d69c1", + "type": "image", + "model": { + "blocks": [ + { + "id": "46d9db98", + "type": "caption", + "model": { + "blocks": [ + { + "id": "bd0a50ea", + "type": "text", + "model": { + "blocks": [ + { + "id": "5c8821e3", + "type": "paragraph", + "model": { + "text": "Yulia na Alexei n'abana babo Zakhar na Dasha mu Budage", + "blocks": [ + { + "id": "3c63a240", + "type": "fragment", + "model": { + "text": "Yulia na Alexei n'abana babo Zakhar na Dasha mu Budage", + "attributes": [] + }, + "position": [18, 1, 1, 1, 1] + } + ] + }, + "position": [18, 1, 1, 1] + } + ] + }, + "position": [18, 1, 1] + } + ] + }, + "position": [18, 1] + }, + { + "id": "93eba296", + "type": "altText", + "model": { + "blocks": [ + { + "id": "66894cbb", + "type": "text", + "model": { + "blocks": [ + { + "id": "880733da", + "type": "paragraph", + "model": { + "text": "Yulia na Alexei n'abana babo Zakhar na Dasha mu Budage", + "blocks": [ + { + "id": "8e825f3f", + "type": "fragment", + "model": { + "text": "Yulia na Alexei n'abana babo Zakhar na Dasha mu Budage", + "attributes": [] + }, + "position": [18, 2, 1, 1, 1] + } + ] + }, + "position": [18, 2, 1, 1] + } + ] + }, + "position": [18, 2, 1] + } + ] + }, + "position": [18, 2] + }, + { + "id": "e20dacc0", + "type": "rawImage", + "model": { + "width": 1536, + "height": 1082, + "locator": "ee3d/live/a5aba390-8f8b-11ef-89ae-5575c76d98e6.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "Umuryango wa Navalny", + "suitableForSyndication": false + }, + "position": [18, 3] + } + ] + }, + "position": [18] + }, + { + "id": "fa7d4db1", + "type": "text", + "model": { + "blocks": [ + { + "id": "09e5ec54", + "type": "paragraph", + "model": { + "text": "We na Yulia basubiye mu Burusiya muri Mutarama(1) 2021 aho yahise atabwa muri yombi indege imuzanye ikihagera.", + "blocks": [ + { + "id": "f9d21099", + "type": "fragment", + "model": { + "text": "We na Yulia basubiye mu Burusiya muri Mutarama(1) 2021 aho yahise atabwa muri yombi indege imuzanye ikihagera.", + "attributes": [] + }, + "position": [19, 1, 1] + } + ] + }, + "position": [19, 1] + }, + { + "id": "a3961da6", + "type": "paragraph", + "model": { + "text": "Benshi bibajije impamvu basubiyeyo.", + "blocks": [ + { + "id": "5663e8cd", + "type": "fragment", + "model": { + "text": "Benshi bibajije impamvu basubiyeyo.", + "attributes": [] + }, + "position": [19, 2, 1] + } + ] + }, + "position": [19, 2] + }, + { + "id": "998c7d6b", + "type": "paragraph", + "model": { + "text": "Yulia ati: “Nta mpaka mwari kubijyaho. Nari mbizi neza ko ashaka gusubira mu Burusiya. Nari mbizi ko ashaka kubana n’abamushyigikiye, yashakaga kuba urugero kuri abo bose bafite ubutwari kandi ubutwari bwe bweretse abantu ko nta mpamvu yo gutinya uyu munyagitugu.", + "blocks": [ + { + "id": "444d4123", + "type": "fragment", + "model": { + "text": "Yulia ati: “Nta mpaka mwari kubijyaho. Nari mbizi neza ko ashaka gusubira mu Burusiya. Nari mbizi ko ashaka kubana n’abamushyigikiye, yashakaga kuba urugero kuri abo bose bafite ubutwari kandi ubutwari bwe bweretse abantu ko nta mpamvu yo gutinya uyu munyagitugu.", + "attributes": [] + }, + "position": [19, 3, 1] + } + ] + }, + "position": [19, 3] + }, + { + "id": "b560003d", + "type": "paragraph", + "model": { + "text": "“Sinigeze ndeka ubwonko bwanjye bwibaza ko ashobora kwicwa…Twabayeho ubwo buzima imyaka myinshi.”", + "blocks": [ + { + "id": "bcd3605a", + "type": "fragment", + "model": { + "text": "“Sinigeze ndeka ubwonko bwanjye bwibaza ko ashobora kwicwa…Twabayeho ubwo buzima imyaka myinshi.”", + "attributes": [] + }, + "position": [19, 4, 1] + } + ] + }, + "position": [19, 4] + } + ] + }, + "position": [19] + }, + { + "id": "ec6eb235", + "type": "image", + "model": { + "blocks": [ + { + "id": "d998b5f0", + "type": "caption", + "model": { + "blocks": [ + { + "id": "b634095f", + "type": "text", + "model": { + "blocks": [ + { + "id": "b1405245", + "type": "paragraph", + "model": { + "text": "Navalny yabajijwe n'umwe mu banyamakuru bari mu ndege yamusubije mu Burusiya muri Mutarama(1) 2021 niba \"adafite ubwoba\", undi ati \"hoya\"", + "blocks": [ + { + "id": "76d0bc09", + "type": "fragment", + "model": { + "text": "Navalny yabajijwe n'umwe mu banyamakuru bari mu ndege yamusubije mu Burusiya muri Mutarama(1) 2021 niba \"adafite ubwoba\", undi ati \"hoya\"", + "attributes": [] + }, + "position": [20, 1, 1, 1, 1] + } + ] + }, + "position": [20, 1, 1, 1] + } + ] + }, + "position": [20, 1, 1] + } + ] + }, + "position": [20, 1] + }, + { + "id": "901c78c4", + "type": "altText", + "model": { + "blocks": [ + { + "id": "5a6bc356", + "type": "text", + "model": { + "blocks": [ + { + "id": "04e55d89", + "type": "paragraph", + "model": { + "text": "Navalny yabajijwe n'umwe mu banyamakuru bari mu ndege yamusubije mu Burusiya muri Mutarama(1) 2021 niba \"adafite ubwoba\" undi ati \"hoya\"", + "blocks": [ + { + "id": "0b128a7e", + "type": "fragment", + "model": { + "text": "Navalny yabajijwe n'umwe mu banyamakuru bari mu ndege yamusubije mu Burusiya muri Mutarama(1) 2021 niba \"adafite ubwoba\" undi ati \"hoya\"", + "attributes": [] + }, + "position": [20, 2, 1, 1, 1] + } + ] + }, + "position": [20, 2, 1, 1] + } + ] + }, + "position": [20, 2, 1] + } + ] + }, + "position": [20, 2] + }, + { + "id": "bcd353e3", + "type": "rawImage", + "model": { + "width": 1536, + "height": 864, + "locator": "b109/live/cbf08b60-8f8b-11ef-8e6d-e3e64e16c628.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "Getty Images", + "suitableForSyndication": true + }, + "position": [20, 3] + } + ] + }, + "position": [20] + }, + { + "id": "1609fbe1", + "type": "podcastPromo", + "model": { "type": "podcastPromo" }, + "position": [21] + }, + { + "id": "f1ec0779", + "type": "text", + "model": { + "blocks": [ + { + "id": "67304c00", + "type": "paragraph", + "model": { + "text": "Nyuma yo gufungwa, Navalny yakomeje kwandika igitabo cye, akoresheje uburyo butandukanye, ubu cyatangajwe ku nshuro ya mbere. Zimwe mu nyandiko ze zafatiriwe n’abakuriye gereza, nk’uko yabivuze.", + "blocks": [ + { + "id": "0ae34989", + "type": "fragment", + "model": { + "text": "Nyuma yo gufungwa, Navalny yakomeje kwandika igitabo cye, akoresheje uburyo butandukanye, ubu cyatangajwe ku nshuro ya mbere. Zimwe mu nyandiko ze zafatiriwe n’abakuriye gereza, nk’uko yabivuze.", + "attributes": [] + }, + "position": [22, 1, 1] + } + ] + }, + "position": [22, 1] + }, + { + "id": "83f09450", + "type": "paragraph", + "model": { + "text": "Patriot ivugamo bimwe bitari bizwi – n’ibindi bibabaje. Benshi bazi ibihe bya nyuma bya Navalny, ibi nabyo biri mu byo asobanura muri iki gitabo.", + "blocks": [ + { + "id": "b585fb11", + "type": "fragment", + "model": { + "text": "Patriot ivugamo bimwe bitari bizwi – n’ibindi bibabaje. Benshi bazi ibihe bya nyuma bya Navalny, ibi nabyo biri mu byo asobanura muri iki gitabo.", + "attributes": [] + }, + "position": [22, 2, 1] + } + ] + }, + "position": [22, 2] + }, + { + "id": "f651bf95", + "type": "paragraph", + "model": { + "text": "Navalny yamaze iminsi 295 afungiye ukwa wenyine, nk’uko biri muri iki gitabo, ahanirwa ibirimo kudafunga ibifungo byose by’umwenda we wa gereza. Ntiyari yemerewe gusurwa cyangwa kwitaba telephone.", + "blocks": [ + { + "id": "b2ff5c7d", + "type": "fragment", + "model": { + "text": "Navalny yamaze iminsi 295 afungiye ukwa wenyine, nk’uko biri muri iki gitabo, ahanirwa ibirimo kudafunga ibifungo byose by’umwenda we wa gereza. Ntiyari yemerewe gusurwa cyangwa kwitaba telephone.", + "attributes": [] + }, + "position": [22, 3, 1] + } + ] + }, + "position": [22, 3] + }, + { + "id": "da09e9f6", + "type": "paragraph", + "model": { + "text": "Yulia Navalnaya ati: “Ubundi, ibisanzwe ni ukwimwa ubwo burenganzira ibyumweru bibiri kandi ni cyo gihano gikomeye cyane. Umugabo wanjye yamaze hafi umwaka umwe muri icyo gihano.”", + "blocks": [ + { + "id": "6287cb6b", + "type": "fragment", + "model": { + "text": "Yulia Navalnaya ati: “Ubundi, ibisanzwe ni ukwimwa ubwo burenganzira ibyumweru bibiri kandi ni cyo gihano gikomeye cyane. Umugabo wanjye yamaze hafi umwaka umwe muri icyo gihano.”", + "attributes": [] + }, + "position": [22, 4, 1] + } + ] + }, + "position": [22, 4] + }, + { + "id": "47c7668f", + "type": "paragraph", + "model": { + "text": "Afungiye ukwa wenyine, muri Kanama(8) 2022 Navalny yaranditse ati:", + "blocks": [ + { + "id": "1ac434e5", + "type": "fragment", + "model": { + "text": "Afungiye ukwa wenyine, muri Kanama(8) 2022 Navalny yaranditse ati:", + "attributes": [] + }, + "position": [22, 5, 1] + } + ] + }, + "position": [22, 5] + } + ] + }, + "position": [22] + }, + { + "id": "6a76bd75", + "type": "text", + "model": { + "blocks": [ + { + "id": "60276eab", + "type": "paragraph", + "model": { + "text": "Harashyushye cyane mu kumba kanjye ku buryo no guhumeka bigoye. Wumva umeze nk’ifi bagaritse ku nkombe, irimo gushaka akuka. Akenshi ariko nanone haba hakonje bikabije…Kandi hari umuziki usakuza udaceceka. Ibi mu mvugo, ni ukugira ngo imfungwa ziri mu twumba dutandukanye zitavugana zisakuza, ariko mu ngiro, ni ukuburizamo urusaku rw’abarimo gukorerwa iyicarubozo.", + "blocks": [ + { + "id": "345e62cb", + "type": "fragment", + "model": { + "text": "Harashyushye cyane mu kumba kanjye ku buryo no guhumeka bigoye. Wumva umeze nk’ifi bagaritse ku nkombe, irimo gushaka akuka. Akenshi ariko nanone haba hakonje bikabije…Kandi hari umuziki usakuza udaceceka. Ibi mu mvugo, ni ukugira ngo imfungwa ziri mu twumba dutandukanye zitavugana zisakuza, ariko mu ngiro, ni ukuburizamo urusaku rw’abarimo gukorerwa iyicarubozo.", + "attributes": ["italic"] + }, + "position": [23, 1, 1] + } + ] + }, + "position": [23, 1] + } + ] + }, + "position": [23] + }, + { + "id": "34931c1b", + "type": "image", + "model": { + "blocks": [ + { + "id": "3c56fbce", + "type": "caption", + "model": { + "blocks": [ + { + "id": "fa344d3c", + "type": "text", + "model": { + "blocks": [ + { + "id": "fbb2aaa0", + "type": "paragraph", + "model": { + "text": "Alexei Navalny yapfiriye muri gereza ya IK-3 iri ku mpera ya ruguru y'isi tariki 16 Gashyantare (2) uyu mwaka", + "blocks": [ + { + "id": "b166ab5c", + "type": "fragment", + "model": { + "text": "Alexei Navalny yapfiriye muri gereza ya IK-3 iri ku mpera ya ruguru y'isi tariki 16 Gashyantare (2) uyu mwaka", + "attributes": [] + }, + "position": [24, 1, 1, 1, 1] + } + ] + }, + "position": [24, 1, 1, 1] + } + ] + }, + "position": [24, 1, 1] + } + ] + }, + "position": [24, 1] + }, + { + "id": "bb4f90ac", + "type": "altText", + "model": { + "blocks": [ + { + "id": "b31745b1", + "type": "text", + "model": { + "blocks": [ + { + "id": "0445a416", + "type": "paragraph", + "model": { + "text": "Alexei Navalny yapfiriye muri gereza ya IK-3 iri ku mpera ya ruguru y'isi tariki 16 Gashyantare (2) uyu mwaka", + "blocks": [ + { + "id": "229e3bab", + "type": "fragment", + "model": { + "text": "Alexei Navalny yapfiriye muri gereza ya IK-3 iri ku mpera ya ruguru y'isi tariki 16 Gashyantare (2) uyu mwaka", + "attributes": [] + }, + "position": [24, 2, 1, 1, 1] + } + ] + }, + "position": [24, 2, 1, 1] + } + ] + }, + "position": [24, 2, 1] + } + ] + }, + "position": [24, 2] + }, + { + "id": "d3166462", + "type": "rawImage", + "model": { + "width": 1536, + "height": 864, + "locator": "1b86/live/6712e660-8f8c-11ef-89ae-5575c76d98e6.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "Reuters", + "suitableForSyndication": true + }, + "position": [24, 3] + } + ] + }, + "position": [24] + }, + { + "id": "b7e0ab66", + "type": "text", + "model": { + "blocks": [ + { + "id": "cd8de06a", + "type": "paragraph", + "model": { + "text": "Navalnaya avuga ko yabujijwe kenshi gusura no kuvugana n’umugabo we mu gihe cy’imyaka ibiri mbere y’uko apfa. Avuga ko Alexei yakorewe iyicarubozo, yicishijwe inzara, kandi agafungirwa “ahantu habi cyane”.", + "blocks": [ + { + "id": "9ae7e193", + "type": "fragment", + "model": { + "text": "Navalnaya avuga ko yabujijwe kenshi gusura no kuvugana n’umugabo we mu gihe cy’imyaka ibiri mbere y’uko apfa. Avuga ko Alexei yakorewe iyicarubozo, yicishijwe inzara, kandi agafungirwa “ahantu habi cyane”.", + "attributes": [] + }, + "position": [25, 1, 1] + } + ] + }, + "position": [25, 1] + }, + { + "id": "47de07f1", + "type": "paragraph", + "model": { + "text": "Nyuma y’urupfu rwe, Amerika, Ubumwe bw’Uburayi, n’Ubwongereza byatangaje ibihano bishya ku Burusiya. Ibyo birimo gufatira imitungo y’abakuru batandatu ba gereza yo mu gace ka Arctic Circle n’ibihano ku bacamanza baciriye urubanza Navalny.", + "blocks": [ + { + "id": "cd741c90", + "type": "fragment", + "model": { + "text": "Nyuma y’urupfu rwe, Amerika, Ubumwe bw’Uburayi, n’Ubwongereza byatangaje ibihano bishya ku Burusiya. Ibyo birimo gufatira imitungo y’abakuru batandatu ba gereza yo mu gace ka Arctic Circle n’ibihano ku bacamanza baciriye urubanza Navalny.", + "attributes": [] + }, + "position": [25, 2, 1] + } + ] + }, + "position": [25, 2] + }, + { + "id": "9ddf80e9", + "type": "paragraph", + "model": { + "text": "Yulia avuga ko ibyo amahanga yakoze ku rupfu rw’umugabo we ari “byendagusetsa”, we icyo yifuza ni ukubona Putin afungwa.", + "blocks": [ + { + "id": "713cf0a7", + "type": "fragment", + "model": { + "text": "Yulia avuga ko ibyo amahanga yakoze ku rupfu rw’umugabo we ari “byendagusetsa”, we icyo yifuza ni ukubona Putin afungwa.", + "attributes": [] + }, + "position": [25, 3, 1] + } + ] + }, + "position": [25, 3] + }, + { + "id": "3f78d11f", + "type": "paragraph", + "model": { + "text": "Ati: “Sinshaka kumubona muri gereza, ahantu hanze [y’Uburusiya], muri gereza nziza afite mudasobwa, ibiryo byiza…Ndashaka ko afungirwa mu Burusiya. Kandi si ibyo gusa – Ndashaka ko afungwa kimwe na Alexei. Kandi kuri njye ni ibintu by’ingenzi cyane.”", + "blocks": [ + { + "id": "26e843bb", + "type": "fragment", + "model": { + "text": "Ati: “Sinshaka kumubona muri gereza, ahantu hanze [y’Uburusiya], muri gereza nziza afite mudasobwa, ibiryo byiza…Ndashaka ko afungirwa mu Burusiya. Kandi si ibyo gusa – Ndashaka ko afungwa kimwe na Alexei. Kandi kuri njye ni ibintu by’ingenzi cyane.”", + "attributes": [] + }, + "position": [25, 4, 1] + } + ] + }, + "position": [25, 4] + }, + { + "id": "d63bdbd1", + "type": "paragraph", + "model": { + "text": "Abategetsi b’Uburusiya bavuga ko Navalny yapfuye urupfu rusanzwe. Yulia yemeza ko Putin ari we wategetse ko yicwa.", + "blocks": [ + { + "id": "39d5a985", + "type": "fragment", + "model": { + "text": "Abategetsi b’Uburusiya bavuga ko Navalny yapfuye urupfu rusanzwe. Yulia yemeza ko Putin ari we wategetse ko yicwa.", + "attributes": [] + }, + "position": [25, 5, 1] + } + ] + }, + "position": [25, 5] + } + ] + }, + "position": [25] + }, + { + "id": "976f70c2", + "type": "image", + "model": { + "blocks": [ + { + "id": "bd7b26b2", + "type": "caption", + "model": { + "blocks": [ + { + "id": "4e9f71df", + "type": "text", + "model": { + "blocks": [ + { + "id": "7deced1b", + "type": "paragraph", + "model": { + "text": "Mu nyandiko ze afunze, Navalny yashinje Perezida Putin \"ruswa\" ", + "blocks": [ + { + "id": "6253bf38", + "type": "fragment", + "model": { + "text": "Mu nyandiko ze afunze, Navalny yashinje Perezida Putin \"ruswa\" ", + "attributes": [] + }, + "position": [26, 1, 1, 1, 1] + } + ] + }, + "position": [26, 1, 1, 1] + } + ] + }, + "position": [26, 1, 1] + } + ] + }, + "position": [26, 1] + }, + { + "id": "294fe38a", + "type": "altText", + "model": { + "blocks": [ + { + "id": "4320b0b0", + "type": "text", + "model": { + "blocks": [ + { + "id": "c5f95ac0", + "type": "paragraph", + "model": { + "text": "Mu nyandiko ze afunze, Navalny yashinje Perezida Putin \"ruswa\" ", + "blocks": [ + { + "id": "81fadacd", + "type": "fragment", + "model": { + "text": "Mu nyandiko ze afunze, Navalny yashinje Perezida Putin \"ruswa\" ", + "attributes": [] + }, + "position": [26, 2, 1, 1, 1] + } + ] + }, + "position": [26, 2, 1, 1] + } + ] + }, + "position": [26, 2, 1] + } + ] + }, + "position": [26, 2] + }, + { + "id": "f926c412", + "type": "rawImage", + "model": { + "width": 1536, + "height": 1055, + "locator": "9924/live/a6ac7c50-8f8c-11ef-89ae-5575c76d98e6.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "Getty Images", + "suitableForSyndication": true + }, + "position": [26, 3] + } + ] + }, + "position": [26] + }, + { + "id": "7f780fd7", + "type": "text", + "model": { + "blocks": [ + { + "id": "396f159f", + "type": "paragraph", + "model": { + "text": "Uyu mugore ubu ukuriye Anti-Corruption Foundation mu mwanya w’umugabo we, avuga ko afite “ibimenyetso” azatangaza ubwo bazaba bafite “ishusho yose”.", + "blocks": [ + { + "id": "7f929df8", + "type": "fragment", + "model": { + "text": "Uyu mugore ubu ukuriye Anti-Corruption Foundation mu mwanya w’umugabo we, avuga ko afite “ibimenyetso” azatangaza ubwo bazaba bafite “ishusho yose”.", + "attributes": [] + }, + "position": [27, 1, 1] + } + ] + }, + "position": [27, 1] + }, + { + "id": "31f9cdbc", + "type": "paragraph", + "model": { + "text": "Iki gitabo yasohoye avuga ko batazohereza kopi zacyo mu Burusiya na Belarus kuko bazi ko abategetsi batareka zihinjira, gusa basohoye ebook yacyo na audiobook yacyo, nubwo batazi neza niba nabyo Abarusiya b’imbere mu gihugu bazabasha kubifungura.", + "blocks": [ + { + "id": "eedfe6fc", + "type": "fragment", + "model": { + "text": "Iki gitabo yasohoye avuga ko batazohereza kopi zacyo mu Burusiya na Belarus kuko bazi ko abategetsi batareka zihinjira, gusa basohoye ebook yacyo na audiobook yacyo, nubwo batazi neza niba nabyo Abarusiya b’imbere mu gihugu bazabasha kubifungura.", + "attributes": [] + }, + "position": [27, 2, 1] + } + ] + }, + "position": [27, 2] + }, + { + "id": "30b7249f", + "type": "paragraph", + "model": { + "text": "Muri iki gitabo, Navalny yumvikanishaga ko atacitse intege kandi ko aho afungiye ukwa wenyine, arimo abona “ku buntu” amahirwe yo guceceka, kurya bicye, no kujya kure y’isi yo hanze, iyo “abakire baruhijwe n’ubuzima bwo hanze” bishyurira.", + "blocks": [ + { + "id": "a9e35cf3", + "type": "fragment", + "model": { + "text": "Muri iki gitabo, Navalny yumvikanishaga ko atacitse intege kandi ko aho afungiye ukwa wenyine, arimo abona “ku buntu” amahirwe yo guceceka, kurya bicye, no kujya kure y’isi yo hanze, iyo “abakire baruhijwe n’ubuzima bwo hanze” bishyurira.", + "attributes": [] + }, + "position": [27, 3, 1] + } + ] + }, + "position": [27, 3] + } + ] + }, + "position": [27] + }, + { + "id": "1a9e11e7", + "type": "image", + "model": { + "blocks": [ + { + "id": "e440b289", + "type": "caption", + "model": { + "blocks": [ + { + "id": "5e1d1280", + "type": "text", + "model": { + "blocks": [ + { + "id": "f83993be", + "type": "paragraph", + "model": { + "text": "Alexei Navalny mu myigaragambyo nyuma y'uko yangiwe kwiyamamaza ku mwanya wa perezida mu 2018 ", + "blocks": [ + { + "id": "6ad0ed33", + "type": "fragment", + "model": { + "text": "Alexei Navalny mu myigaragambyo nyuma y'uko yangiwe kwiyamamaza ku mwanya wa perezida mu 2018 ", + "attributes": [] + }, + "position": [28, 1, 1, 1, 1] + } + ] + }, + "position": [28, 1, 1, 1] + } + ] + }, + "position": [28, 1, 1] + } + ] + }, + "position": [28, 1] + }, + { + "id": "e2eeedf8", + "type": "altText", + "model": { + "blocks": [ + { + "id": "30f86814", + "type": "text", + "model": { + "blocks": [ + { + "id": "23a22d93", + "type": "paragraph", + "model": { + "text": "Alexei Navalny mu myigaragambyo nyuma y'uko yangiwe kwiyamamaza ku mwanya wa perezida mu 2018 ", + "blocks": [ + { + "id": "68d39e21", + "type": "fragment", + "model": { + "text": "Alexei Navalny mu myigaragambyo nyuma y'uko yangiwe kwiyamamaza ku mwanya wa perezida mu 2018 ", + "attributes": [] + }, + "position": [28, 2, 1, 1, 1] + } + ] + }, + "position": [28, 2, 1, 1] + } + ] + }, + "position": [28, 2, 1] + } + ] + }, + "position": [28, 2] + }, + { + "id": "7df8fe93", + "type": "rawImage", + "model": { + "width": 1536, + "height": 976, + "locator": "96cd/live/d0e840d0-8f8c-11ef-b3c2-754b6219680e.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "Evgeny Feldman", + "suitableForSyndication": false + }, + "position": [28, 3] + } + ] + }, + "position": [28] + }, + { + "id": "518ba9f0", + "type": "text", + "model": { + "blocks": [ + { + "id": "9a9e8c08", + "type": "paragraph", + "model": { + "text": "Yulia avuga ko atigeze agira ubwoba ko umugabo we azageraho akamanika amaboko ku butegetsi.", + "blocks": [ + { + "id": "acaef5e3", + "type": "fragment", + "model": { + "text": "Yulia avuga ko atigeze agira ubwoba ko umugabo we azageraho akamanika amaboko ku butegetsi.", + "attributes": [] + }, + "position": [29, 1, 1] + } + ] + }, + "position": [29, 1] + }, + { + "id": "63c8da55", + "type": "paragraph", + "model": { + "text": "Ati: “Sinshidikanya ko ari yo mpamvu amaherezo bahisemo kumwica. Kuko babonye ko atazigera acogora.”", + "blocks": [ + { + "id": "922f7044", + "type": "fragment", + "model": { + "text": "Ati: “Sinshidikanya ko ari yo mpamvu amaherezo bahisemo kumwica. Kuko babonye ko atazigera acogora.”", + "attributes": [] + }, + "position": [29, 2, 1] + } + ] + }, + "position": [29, 2] + }, + { + "id": "3eb8fd15", + "type": "paragraph", + "model": { + "text": "Yewe n’umunsi ubanziriza urupfu rwe, ubwo yari mu rukiko kuri video, Navalny yafashwe amashusho atera urwenya n’abacamanza.", + "blocks": [ + { + "id": "9b223ad5", + "type": "fragment", + "model": { + "text": "Yewe n’umunsi ubanziriza urupfu rwe, ubwo yari mu rukiko kuri video, Navalny yafashwe amashusho atera urwenya n’abacamanza.", + "attributes": [] + }, + "position": [29, 3, 1] + } + ] + }, + "position": [29, 3] + } + ] + }, + "position": [29] + }, + { + "id": "7a4d334b", + "type": "image", + "model": { + "blocks": [ + { + "id": "c98d0e2b", + "type": "caption", + "model": { + "blocks": [ + { + "id": "f269635e", + "type": "text", + "model": { + "blocks": [ + { + "id": "b8a96c9c", + "type": "paragraph", + "model": { + "text": "Tariki 15 Gashyantare, Navalny yabonetse mu rukiko kuri video, aho yateye urwenya ambwira umucamanza ngo amwoherereze amafaranga ", + "blocks": [ + { + "id": "bcac82b0", + "type": "fragment", + "model": { + "text": "Tariki 15 Gashyantare, Navalny yabonetse mu rukiko kuri video, aho yateye urwenya ambwira umucamanza ngo amwoherereze amafaranga ", + "attributes": [] + }, + "position": [30, 1, 1, 1, 1] + } + ] + }, + "position": [30, 1, 1, 1] + } + ] + }, + "position": [30, 1, 1] + } + ] + }, + "position": [30, 1] + }, + { + "id": "8f7d96fc", + "type": "altText", + "model": { + "blocks": [ + { + "id": "208623b9", + "type": "text", + "model": { + "blocks": [ + { + "id": "2cb70302", + "type": "paragraph", + "model": { + "text": "Tariki 15 Gashyantare, Navalny yabonetse mu rukiko kuri video, aho yateye urwenya ambwira umucamanza ngo amwoherereze amafaranga ", + "blocks": [ + { + "id": "b0c163d3", + "type": "fragment", + "model": { + "text": "Tariki 15 Gashyantare, Navalny yabonetse mu rukiko kuri video, aho yateye urwenya ambwira umucamanza ngo amwoherereze amafaranga ", + "attributes": [] + }, + "position": [30, 2, 1, 1, 1] + } + ] + }, + "position": [30, 2, 1, 1] + } + ] + }, + "position": [30, 2, 1] + } + ] + }, + "position": [30, 2] + }, + { + "id": "52d0d54c", + "type": "rawImage", + "model": { + "width": 1536, + "height": 863, + "locator": "d97f/live/0d583520-8f8d-11ef-89ae-5575c76d98e6.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "SOTA VISION", + "suitableForSyndication": false + }, + "position": [30, 3] + } + ] + }, + "position": [30] + }, + { + "id": "131c6dca", + "type": "text", + "model": { + "blocks": [ + { + "id": "b76b8202", + "type": "paragraph", + "model": { + "text": "Yulia avuga ko gusetsa no guseka byari intwaro ikomeye ya Navalny.", + "blocks": [ + { + "id": "342fec9d", + "type": "fragment", + "model": { + "text": "Yulia avuga ko gusetsa no guseka byari intwaro ikomeye ya Navalny.", + "attributes": [] + }, + "position": [31, 1, 1] + } + ] + }, + "position": [31, 1] + }, + { + "id": "daf140e3", + "type": "paragraph", + "model": { + "text": "Ati: “Rwose yasetse ubu butegetsi na Vladimir Putin. Ni yo mpamvu Vladimir Putin yamwangaga cyane.”", + "blocks": [ + { + "id": "497a35cf", + "type": "fragment", + "model": { + "text": "Ati: “Rwose yasetse ubu butegetsi na Vladimir Putin. Ni yo mpamvu Vladimir Putin yamwangaga cyane.”", + "attributes": [] + }, + "position": [31, 2, 1] + } + ] + }, + "position": [31, 2] + }, + { + "id": "722302fa", + "type": "paragraph", + "model": { + "text": "Iki gitabo kirimo no gutebya gutangaje. Nalvany yanditse ko kizagurisha cyane napfa. Ati:", + "blocks": [ + { + "id": "5fa6b9f6", + "type": "fragment", + "model": { + "text": "Iki gitabo kirimo no gutebya gutangaje. Nalvany yanditse ko kizagurisha cyane napfa. Ati:", + "attributes": [] + }, + "position": [31, 3, 1] + } + ] + }, + "position": [31, 3] + } + ] + }, + "position": [31] + }, + { + "id": "3329789e", + "type": "text", + "model": { + "blocks": [ + { + "id": "2021caf5", + "type": "paragraph", + "model": { + "text": "“Reka tubirebe, kugerageza kunyica bakoresheje intwaro y’uburozi, bikurikiwe no gupfira muri gereza, niba bitazatambutsa igitabo, biragoye gutekereza ikindi kizabikora. Uwanditse iki gitabo yishwe n’umutegetsi w’umugome; ni iki kindi abazagicuruza basaba?”", + "blocks": [ + { + "id": "955c6828", + "type": "fragment", + "model": { + "text": "“Reka tubirebe, kugerageza kunyica bakoresheje intwaro y’uburozi, bikurikiwe no gupfira muri gereza, niba bitazatambutsa igitabo, biragoye gutekereza ikindi kizabikora. Uwanditse iki gitabo yishwe n’umutegetsi w’umugome; ni iki kindi abazagicuruza basaba?”", + "attributes": ["italic"] + }, + "position": [32, 1, 1] + } + ] + }, + "position": [32, 1] + } + ] + }, + "position": [32] + }, + { + "id": "079ce153", + "type": "text", + "model": { + "blocks": [ + { + "id": "6367995b", + "type": "paragraph", + "model": { + "text": "Mu mpera, Patriot ivuga kandi inkuru y’urukundo y’abantu babiri bahagurukiye byeruye intego bombi bemera.", + "blocks": [ + { + "id": "d5ce48cd", + "type": "fragment", + "model": { + "text": "Mu mpera, Patriot ivuga kandi inkuru y’urukundo y’abantu babiri bahagurukiye byeruye intego bombi bemera.", + "attributes": [] + }, + "position": [33, 1, 1] + } + ] + }, + "position": [33, 1] + }, + { + "id": "dd65c87f", + "type": "paragraph", + "model": { + "text": "Intego Yulia avuga ko n’ubu akigamije kugeraho.", + "blocks": [ + { + "id": "9aca4741", + "type": "fragment", + "model": { + "text": "Intego Yulia avuga ko n’ubu akigamije kugeraho.", + "attributes": [] + }, + "position": [33, 2, 1] + } + ] + }, + "position": [33, 2] + } + ] + }, + "position": [33] + }, + { + "id": "f2fdcb8e", + "type": "image", + "model": { + "blocks": [ + { + "id": "a0a661a0", + "type": "caption", + "model": { + "blocks": [ + { + "id": "54acf995", + "type": "text", + "model": { + "blocks": [ + { + "id": "e1e0c0cf", + "type": "paragraph", + "model": { + "text": "Mu gitabo cye, Alexei avuga Yulia nk'umuntu bahuje, kandi \"ashobora kuba andusha kwanga abantu bafashe ubutegetsi mu gihugu cyacu\"", + "blocks": [ + { + "id": "25fd0ea3", + "type": "fragment", + "model": { + "text": "Mu gitabo cye, Alexei avuga Yulia nk'umuntu bahuje, kandi \"ashobora kuba andusha kwanga abantu bafashe ubutegetsi mu gihugu cyacu\"", + "attributes": [] + }, + "position": [34, 1, 1, 1, 1] + } + ] + }, + "position": [34, 1, 1, 1] + } + ] + }, + "position": [34, 1, 1] + } + ] + }, + "position": [34, 1] + }, + { + "id": "76f18cd5", + "type": "altText", + "model": { + "blocks": [ + { + "id": "1802ecbd", + "type": "text", + "model": { + "blocks": [ + { + "id": "06d1e548", + "type": "paragraph", + "model": { + "text": "Mu gitabo cye, Alexei avuga Yulia nk'umuntu bahuje ukwemera, kandi \"ashobora kuba andusha kwanga abantu bafashe ubutegetsi mu gihugu cyacu\"", + "blocks": [ + { + "id": "fa54e713", + "type": "fragment", + "model": { + "text": "Mu gitabo cye, Alexei avuga Yulia nk'umuntu bahuje ukwemera, kandi \"ashobora kuba andusha kwanga abantu bafashe ubutegetsi mu gihugu cyacu\"", + "attributes": [] + }, + "position": [34, 2, 1, 1, 1] + } + ] + }, + "position": [34, 2, 1, 1] + } + ] + }, + "position": [34, 2, 1] + } + ] + }, + "position": [34, 2] + }, + { + "id": "c89acd25", + "type": "rawImage", + "model": { + "width": 1536, + "height": 1066, + "locator": "7906/live/4563bde0-8f8d-11ef-8e6d-e3e64e16c628.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "Umuryango wa Navalny", + "suitableForSyndication": false + }, + "position": [34, 3] + } + ] + }, + "position": [34] + }, + { + "id": "494820c1", + "type": "text", + "model": { + "blocks": [ + { + "id": "57b169b3", + "type": "paragraph", + "model": { + "text": "Nyuma y’uko Yulia abashije kumusura, Navalny yaranditse ati:", + "blocks": [ + { + "id": "18c29909", + "type": "fragment", + "model": { + "text": "Nyuma y’uko Yulia abashije kumusura, Navalny yaranditse ati:", + "attributes": [] + }, + "position": [35, 1, 1] + } + ] + }, + "position": [35, 1] + }, + { + "id": "6b6e4914", + "type": "paragraph", + "model": { + "text": "Naramwongoroye nti ‘Umva, sinshaka kugutera ubwoba, ariko hari ibyago byinshi ko ntazava hano…bazandoga’.", + "blocks": [ + { + "id": "da6216d2", + "type": "fragment", + "model": { + "text": "Naramwongoroye nti ‘Umva, sinshaka kugutera ubwoba, ariko hari ibyago byinshi ko ntazava hano…bazandoga’.", + "attributes": ["italic"] + }, + "position": [35, 2, 1] + } + ] + }, + "position": [35, 2] + }, + { + "id": "18b2e9e6", + "type": "paragraph", + "model": { + "text": "‘Ndabizi’ ni ko yansubije, mu ijwi rituje. ‘Nanjye nariho mbitekereza’…", + "blocks": [ + { + "id": "8db00a67", + "type": "fragment", + "model": { + "text": "‘Ndabizi’ ni ko yansubije, mu ijwi rituje. ‘Nanjye nariho mbitekereza’…", + "attributes": ["italic"] + }, + "position": [35, 3, 1] + } + ] + }, + "position": [35, 3] + }, + { + "id": "98bca7a6", + "type": "paragraph", + "model": { + "text": "Aho ni bwo ubona ko washatse umuntu nyawe. Cyangwa se ari we wagushatse.", + "blocks": [ + { + "id": "ea733fe5", + "type": "fragment", + "model": { + "text": "Aho ni bwo ubona ko washatse umuntu nyawe. Cyangwa se ari we wagushatse.", + "attributes": ["italic"] + }, + "position": [35, 4, 1] + } + ] + }, + "position": [35, 4] + }, + { + "id": "a4c6f3b5", + "type": "paragraph", + "model": { + "text": "Iki gitabo Patriot kizasohoka ku wa kabiri tariki 22 Ukwakira.", + "blocks": [ + { + "id": "a64feae6", + "type": "fragment", + "model": { + "text": "Iki gitabo Patriot kizasohoka ku wa kabiri tariki 22 Ukwakira.", + "attributes": [] + }, + "position": [35, 5, 1] + } + ] + }, + "position": [35, 5] + } + ] + }, + "position": [35] + }, + { + "id": "91cdc792", + "type": "relatedContent", + "model": { + "blocks": [ + { + "id": "9caf5064", + "type": "link", + "model": { + "locator": "urn:bbc:optimo:asset:cjrjy7lwxd9o", + "blocks": [ + { + "id": "43158634", + "type": "image", + "model": { + "blocks": [ + { + "id": "27381df1", + "type": "altText", + "model": { + "blocks": [ + { + "id": "e242f719", + "type": "text", + "model": { + "blocks": [ + { + "id": "70a24ed7", + "type": "paragraph", + "model": { + "text": "Vladimir Putin yatsindiye ikiringo kigira gatanu c'umukuru w'igihugu ", + "blocks": [ + { + "id": "54525bf9", + "type": "fragment", + "model": { + "text": "Vladimir Putin yatsindiye ikiringo kigira gatanu c'umukuru w'igihugu ", + "attributes": [] + }, + "position": [ + 36, 1, 1, 1, 1, 1, 1 + ] + } + ] + }, + "position": [36, 1, 1, 1, 1, 1] + } + ] + }, + "position": [36, 1, 1, 1, 1] + } + ] + }, + "position": [36, 1, 1, 1] + }, + { + "id": "a4b3e0b0", + "type": "rawImage", + "model": { + "width": 976, + "height": 549, + "locator": "c129/live/076387c0-e5c7-11ee-860f-4b0b053e4cd0.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "Getty Images / BBC" + }, + "position": [36, 1, 1, 2] + } + ] + }, + "position": [36, 1, 1] + }, + { + "id": "838a6e6c", + "type": "text", + "model": { + "blocks": [ + { + "id": "f9e4fd8b", + "type": "paragraph", + "model": { + "text": "Imvo zitatu zerekana ko Putin ari kibirengeye ku rugero rutari bwigere rubaho", + "blocks": [ + { + "id": "3c1e56b4", + "type": "urlLink", + "model": { + "text": "Imvo zitatu zerekana ko Putin ari kibirengeye ku rugero rutari bwigere rubaho", + "locator": "https://www.bbc.com/gahuza/articles/cjrjy7lwxd9o", + "blocks": [ + { + "id": "344ce9dd", + "type": "fragment", + "model": { + "text": "Imvo zitatu zerekana ko Putin ari kibirengeye ku rugero rutari bwigere rubaho", + "attributes": [] + }, + "position": [36, 1, 2, 1, 1, 1] + } + ], + "isExternal": false + }, + "position": [36, 1, 2, 1, 1] + } + ] + }, + "position": [36, 1, 2, 1] + } + ] + }, + "position": [36, 1, 2] + }, + { + "id": "2677b2f0", + "type": "aresLink", + "model": { + "blocks": [ + { + "id": "c8bf61de", + "type": "optimoLinkMetadata", + "model": { + "timestamp": 1710837170741, + "consumableAsSFV": false + }, + "position": [36, 1, 3, 1] + } + ] + }, + "position": [36, 1, 3] + } + ] + }, + "position": [36, 1] + }, + { + "id": "5af01426", + "type": "link", + "model": { + "locator": "urn:bbc:optimo:asset:ckrd4g3l84mo", + "blocks": [ + { + "id": "10ef47c2", + "type": "image", + "model": { + "blocks": [ + { + "id": "3e49b389", + "type": "altText", + "model": { + "blocks": [ + { + "id": "aca81137", + "type": "text", + "model": { + "blocks": [ + { + "id": "31193774", + "type": "paragraph", + "model": { + "text": "Abaganga bakurikirana Lenine bamukuyemwo ubwonko amaze gupfa kugira ngo babwigeko ", + "blocks": [ + { + "id": "f9e1ff09", + "type": "fragment", + "model": { + "text": "Abaganga bakurikirana Lenine bamukuyemwo ubwonko amaze gupfa kugira ngo babwigeko ", + "attributes": [] + }, + "position": [ + 36, 2, 1, 1, 1, 1, 1 + ] + } + ] + }, + "position": [36, 2, 1, 1, 1, 1] + } + ] + }, + "position": [36, 2, 1, 1, 1] + } + ] + }, + "position": [36, 2, 1, 1] + }, + { + "id": "eaf68f05", + "type": "rawImage", + "model": { + "width": 800, + "height": 450, + "locator": "e9fc/live/a8f4ebd0-c590-11ee-8685-316409d66f25.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "Getty Images" + }, + "position": [36, 2, 1, 2] + } + ] + }, + "position": [36, 2, 1] + }, + { + "id": "3effa9bd", + "type": "text", + "model": { + "blocks": [ + { + "id": "39d440d5", + "type": "paragraph", + "model": { + "text": "Kubera iki ubwonko bwa Lenine bwacagaguwemwo uduhimba 30.000 ?", + "blocks": [ + { + "id": "3991a3c3", + "type": "urlLink", + "model": { + "text": "Kubera iki ubwonko bwa Lenine bwacagaguwemwo uduhimba 30.000 ?", + "locator": "https://www.bbc.com/gahuza/articles/ckrd4g3l84mo", + "blocks": [ + { + "id": "9309c8d5", + "type": "fragment", + "model": { + "text": "Kubera iki ubwonko bwa Lenine bwacagaguwemwo uduhimba 30.000 ?", + "attributes": [] + }, + "position": [36, 2, 2, 1, 1, 1] + } + ], + "isExternal": false + }, + "position": [36, 2, 2, 1, 1] + } + ] + }, + "position": [36, 2, 2, 1] + } + ] + }, + "position": [36, 2, 2] + }, + { + "id": "5ceb71df", + "type": "aresLink", + "model": { + "blocks": [ + { + "id": "d73720e2", + "type": "optimoLinkMetadata", + "model": { + "timestamp": 1707297394523, + "consumableAsSFV": false + }, + "position": [36, 2, 3, 1] + } + ] + }, + "position": [36, 2, 3] + } + ] + }, + "position": [36, 2] + }, + { + "id": "b6724512", + "type": "link", + "model": { + "locator": "urn:bbc:cps:curie:asset:013fc156-971a-4dfb-b37b-6f801531c341", + "blocks": [ + { + "id": "f7e140be", + "type": "image", + "model": { + "blocks": [ + { + "id": "84b0f89c", + "type": "altText", + "model": { + "blocks": [ + { + "id": "44509710", + "type": "text", + "model": { + "blocks": [ + { + "id": "659708ef", + "type": "paragraph", + "model": { + "text": "Russian President Vladimir Putin and Russian gymnast Aline Kabaeva", + "blocks": [ + { + "id": "0e61f238", + "type": "fragment", + "model": { + "text": "Russian President Vladimir Putin and Russian gymnast Aline Kabaeva", + "attributes": [] + }, + "position": [ + 36, 3, 1, 1, 1, 1, 1 + ] + } + ] + }, + "position": [36, 3, 1, 1, 1, 1] + } + ] + }, + "position": [36, 3, 1, 1, 1] + } + ] + }, + "position": [36, 3, 1, 1] + }, + { + "id": "9102176b", + "type": "rawImage", + "model": { + "width": 976, + "height": 549, + "locator": "387E/production/_124626441_mediaitem124625358.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "Reuters" + }, + "position": [36, 3, 1, 2] + } + ] + }, + "position": [36, 3, 1] + }, + { + "id": "eb2a1a85", + "type": "text", + "model": { + "blocks": [ + { + "id": "2cf14fb4", + "type": "paragraph", + "model": { + "text": "Alina Kabaeva: 'Umukunzi wa Putin' ni muntu ki?", + "blocks": [ + { + "id": "1174cdf5", + "type": "urlLink", + "model": { + "text": "Alina Kabaeva: 'Umukunzi wa Putin' ni muntu ki?", + "locator": "https://www.bbc.com/gahuza/amakuru-61376902", + "blocks": [ + { + "id": "1db74fa4", + "type": "fragment", + "model": { + "text": "Alina Kabaeva: 'Umukunzi wa Putin' ni muntu ki?", + "attributes": [] + }, + "position": [36, 3, 2, 1, 1, 1] + } + ], + "isExternal": false + }, + "position": [36, 3, 2, 1, 1] + } + ] + }, + "position": [36, 3, 2, 1] + } + ] + }, + "position": [36, 3, 2] + }, + { + "id": "c1143c05", + "type": "aresLink", + "model": { + "blocks": [ + { + "id": "5981f830", + "type": "cpsLinkMetadata", + "model": { + "assetType": "STY", + "timestamp": 1652089332000 + }, + "position": [36, 3, 3, 1] + } + ] + }, + "position": [36, 3, 3] + } + ] + }, + "position": [36, 3] + } + ] + }, + "position": [36] + } + ] + } + }, + "promo": { + "headlines": { + "seoHeadline": "Russia: Yulia Navalnaya yabwiye BBC ko afite intego yo kuziyamamariza kuba Perezida", + "promoHeadline": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "‘Nziyamamariza kuba perezida w’Uburusiya Putin navaho’ - Umupfakazi wa Navalny", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "‘Nziyamamariza kuba perezida w’Uburusiya Putin navaho’ - Umupfakazi wa Navalny", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + "images": { + "defaultPromoImage": { + "blocks": [ + { + "type": "caption", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Alexei Navalny na Yulia Navalnaya bari i Moscow mu 2013 muri metingi yo kwiyamamaza kw'abakuru b'imijyi", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Alexei Navalny na Yulia Navalnaya bari i Moscow mu 2013 muri metingi yo kwiyamamaza kw'abakuru b'imijyi", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "altText", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Alexei Navalny na Yulia Navalnaya bari i Moscow mu 2013 muri metingi yo kwiyamamaza kw'abakuru b'imijyi", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Alexei Navalny na Yulia Navalnaya bari i Moscow mu 2013 muri metingi yo kwiyamamaza kw'abakuru b'imijyi", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "rawImage", + "model": { + "width": 1536, + "height": 864, + "locator": "8654/live/6fd0abe0-8f8a-11ef-8e6d-e3e64e16c628.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "Umuryango wa Navalny", + "suitableForSyndication": false + } + } + ] + } + }, + "summary": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Yulia Navalnaya yavuze ibi mu kumurika igitabo umugabo we Alexei Navalny yandikaga ari muri gereza mbere y'uko apfa. ", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Yulia Navalnaya yavuze ibi mu kumurika igitabo umugabo we Alexei Navalny yandikaga ari muri gereza mbere y'uko apfa. ", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + }, + "byline": { + "blocks": [ + { + "type": "contributor", + "model": { + "blocks": [ + { + "type": "name", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Katie Razzall", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Katie Razzall", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "role", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "BBC News", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "BBC News", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + } + ] + } + } + ] + }, + "serviceIdentifier": "Gahuza", + "breakingNews": { "isBreaking": false }, + "consumableAsSFV": false + } + }, + "secondaryData": { + "topStories": [ + { + "locators": { + "optimoUrn": "urn:bbc:optimo:asset:cn03d60pp08o", + "canonicalUrl": "https://www.bbc.com/gahuza/articles/cn03d60pp08o" + }, + "timestamp": 1729493567979, + "suitableForSyndication": true, + "language": "rw", + "headlines": { + "seoHeadline": "DR Congo: M23 'yafashe agace ka Kalembe - Kalonge' muri Teritwari ya Walikale", + "promoHeadline": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "M23 'yinjiye muri Teritwari ya Walikale'", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "M23 'yinjiye muri Teritwari ya Walikale'", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + "images": { + "defaultPromoImage": { + "blocks": [ + { + "type": "caption", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Ifoto igaragaza bamwe mu barwanyi ba M23 ", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Ifoto igaragaza bamwe mu barwanyi ba M23 ", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "altText", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Ifoto y'abarwanyi ba M23 ", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Ifoto y'abarwanyi ba M23 ", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "rawImage", + "model": { + "width": 1074, + "height": 722, + "locator": "3017/live/e624ff10-8f73-11ef-8e6d-e3e64e16c628.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "M23", + "suitableForSyndication": false + } + } + ] + } + }, + "summary": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Ibinyamakuru muri DR Congo biravuga ko aka ari ko gace ka mbere ka teritwari ya Walikale gafashwe na M23 kuva imirwano yayo na leta yakubura mu mpera za 2021.", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Ibinyamakuru muri DR Congo biravuga ko aka ari ko gace ka mbere ka teritwari ya Walikale gafashwe na M23 kuva imirwano yayo na leta yakubura mu mpera za 2021.", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + }, + "passport": { + "language": "rw", + "home": "http://www.bbc.co.uk/ontologies/passport/home/Gahuza", + "locator": "urn:bbc:optimo:asset:cn03d60pp08o", + "availability": "AVAILABLE", + "taggings": [ + { + "predicate": "http://www.bbc.co.uk/ontologies/audience/motivation", + "value": "http://www.bbc.co.uk/things/bf928ac3-b3bd-4d47-924e-cca1bdc29174#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/3548f44f-46f5-4e6e-8628-3f668f161691#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/infoClass", + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/primaryMediaType", + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/assetType", + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/editorialSensitivity", + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/format", + "value": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id" + } + ], + "schemaVersion": "1.4.0", + "publishedState": "PUBLISHED", + "predicates": { + "assetType": [ + { + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id", + "type": "assetType" + } + ], + "primaryMediaType": [ + { + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id", + "type": "primaryMediaType" + } + ], + "motivation": [], + "infoClass": [ + { + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id", + "type": "infoClass" + } + ], + "formats": [ + { + "value": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id", + "thingLabel": "News report", + "thingUri": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id", + "thingId": "46c0517d-9927-4d1a-9954-8c63a3f7a888", + "thingType": ["tagging:TagConcept", "tagging:Format"], + "thingSameAs": [], + "thingEnglishLabel": "Report", + "thingPreferredLabel": "Report", + "thingLabelLanguage": "rw", + "type": "formats" + } + ], + "editorialSensitivity": [ + { + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id", + "type": "editorialSensitivity" + } + ], + "about": [ + { + "value": "http://www.bbc.co.uk/things/3548f44f-46f5-4e6e-8628-3f668f161691#id", + "thingLabel": "Republika Iharanira Demokrasi ya Kongo", + "thingUri": "http://www.bbc.co.uk/things/3548f44f-46f5-4e6e-8628-3f668f161691#id", + "thingId": "3548f44f-46f5-4e6e-8628-3f668f161691", + "thingType": [ + "core:Place", + "core:Thing", + "tagging:TagConcept" + ], + "thingSameAs": ["http://sws.geonames.org/203312/"], + "thingEnglishLabel": "Democratic Republic of Congo", + "type": "about" + } + ] + } + }, + "serviceIdentifier": "Gahuza", + "breakingNews": { "isBreaking": false }, + "consumableAsSFV": false, + "id": "urn:bbc:ares::article:cn03d60pp08o", + "type": "optimo" + }, + { + "locators": { + "optimoUrn": "urn:bbc:optimo:asset:c5y51yxeg53o", + "canonicalUrl": "https://www.bbc.com/gahuza/articles/c5y51yxeg53o" + }, + "timestamp": 1729502629476, + "suitableForSyndication": true, + "language": "rw", + "headlines": { + "seoHeadline": "Russia: Yulia Navalnaya yabwiye BBC ko afite intego yo kuziyamamariza kuba Perezida", + "promoHeadline": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "‘Nziyamamariza kuba perezida w’Uburusiya Putin navaho’ - Umupfakazi wa Navalny", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "‘Nziyamamariza kuba perezida w’Uburusiya Putin navaho’ - Umupfakazi wa Navalny", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + "images": { + "defaultPromoImage": { + "blocks": [ + { + "type": "caption", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Alexei Navalny na Yulia Navalnaya bari i Moscow mu 2013 muri metingi yo kwiyamamaza kw'abakuru b'imijyi", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Alexei Navalny na Yulia Navalnaya bari i Moscow mu 2013 muri metingi yo kwiyamamaza kw'abakuru b'imijyi", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "altText", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Alexei Navalny na Yulia Navalnaya bari i Moscow mu 2013 muri metingi yo kwiyamamaza kw'abakuru b'imijyi", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Alexei Navalny na Yulia Navalnaya bari i Moscow mu 2013 muri metingi yo kwiyamamaza kw'abakuru b'imijyi", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "rawImage", + "model": { + "width": 1536, + "height": 864, + "locator": "8654/live/6fd0abe0-8f8a-11ef-8e6d-e3e64e16c628.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "Umuryango wa Navalny", + "suitableForSyndication": false + } + } + ] + } + }, + "summary": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Yulia Navalnaya yavuze ibi mu kumurika igitabo umugabo we Alexei Navalny yandikaga ari muri gereza mbere y'uko apfa. ", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Yulia Navalnaya yavuze ibi mu kumurika igitabo umugabo we Alexei Navalny yandikaga ari muri gereza mbere y'uko apfa. ", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + }, + "passport": { + "language": "rw", + "home": "http://www.bbc.co.uk/ontologies/passport/home/Gahuza", + "locator": "urn:bbc:optimo:asset:c5y51yxeg53o", + "availability": "AVAILABLE", + "taggings": [ + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/39267b85-1784-4f4b-80ed-f8cb4a35f337#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/75612fa6-147c-4a43-97fa-fcf70d9cced3#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/audience/motivation", + "value": "http://www.bbc.co.uk/things/7047e74c-b9ae-4c02-a4a8-748df451ac58#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/infoClass", + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/primaryMediaType", + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/format", + "value": "http://www.bbc.co.uk/things/8d1509ef-08ef-42bd-b831-82504eed9b8e#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/assetType", + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/editorialSensitivity", + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id" + } + ], + "schemaVersion": "1.4.0", + "publishedState": "PUBLISHED", + "predicates": { + "assetType": [ + { + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id", + "type": "assetType" + } + ], + "primaryMediaType": [ + { + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id", + "type": "primaryMediaType" + } + ], + "motivation": [], + "infoClass": [ + { + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id", + "type": "infoClass" + } + ], + "formats": [ + { + "value": "http://www.bbc.co.uk/things/8d1509ef-08ef-42bd-b831-82504eed9b8e#id", + "thingLabel": "Feature", + "thingUri": "http://www.bbc.co.uk/things/8d1509ef-08ef-42bd-b831-82504eed9b8e#id", + "thingId": "8d1509ef-08ef-42bd-b831-82504eed9b8e", + "thingType": ["tagging:TagConcept", "tagging:Format"], + "thingSameAs": [ + "http://www.bbc.co.uk/ontologies/applicationlogic-news/Feature" + ], + "thingEnglishLabel": "Feature", + "thingPreferredLabel": "Feature", + "thingLabelLanguage": "rw", + "type": "formats" + } + ], + "editorialSensitivity": [ + { + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id", + "type": "editorialSensitivity" + } + ], + "about": [ + { + "value": "http://www.bbc.co.uk/things/39267b85-1784-4f4b-80ed-f8cb4a35f337#id", + "thingLabel": "Uburusiya", + "thingUri": "http://www.bbc.co.uk/things/39267b85-1784-4f4b-80ed-f8cb4a35f337#id", + "thingId": "39267b85-1784-4f4b-80ed-f8cb4a35f337", + "thingType": [ + "core:Place", + "tagging:TagConcept", + "core:Thing" + ], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q159", + "http://sws.geonames.org/2017370/" + ], + "thingEnglishLabel": "Russia", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/75612fa6-147c-4a43-97fa-fcf70d9cced3#id", + "thingLabel": "Politike", + "thingUri": "http://www.bbc.co.uk/things/75612fa6-147c-4a43-97fa-fcf70d9cced3#id", + "thingId": "75612fa6-147c-4a43-97fa-fcf70d9cced3", + "thingType": [ + "tagging:Genre", + "tagging:TagConcept", + "tagging:AmbiguousTerm", + "core:Theme", + "core:Thing" + ], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q7163", + "http://dbpedia.org/resource/Politics" + ], + "thingEnglishLabel": "Politics", + "type": "about" + } + ] + } + }, + "byline": { + "blocks": [ + { + "type": "contributor", + "model": { + "blocks": [ + { + "type": "name", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Katie Razzall", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Katie Razzall", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "role", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "BBC News", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "BBC News", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + } + ] + } + } + ] + }, + "serviceIdentifier": "Gahuza", + "breakingNews": { "isBreaking": false }, + "consumableAsSFV": false, + "id": "urn:bbc:ares::article:c5y51yxeg53o", + "type": "optimo" + }, + { + "locators": { + "optimoUrn": "urn:bbc:optimo:asset:cn4ze4382jzo", + "canonicalUrl": "https://www.bbc.com/gahuza/articles/cn4ze4382jzo" + }, + "timestamp": 1729503259698, + "suitableForSyndication": true, + "language": "rw", + "headlines": { + "seoHeadline": "OMS yatangaje ko nta malaria ikirangwa muri Egypt ", + "promoHeadline": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Misiri yatangajwe ko nta malaria ikiyirangwamo nyuma y'umuhate umaze imyaka 100 ", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Misiri yatangajwe ko nta malaria ikiyirangwamo nyuma y'umuhate umaze imyaka 100 ", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + "images": { + "defaultPromoImage": { + "blocks": [ + { + "type": "caption", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Malaria iterwa n'agakoko (parasite) k'urusobe gakwirakwizwa no kurumwa n'umubu", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Malaria iterwa n'agakoko (parasite) k'urusobe gakwirakwizwa no kurumwa n'umubu", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "altText", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Umubu uraboneka uri ku mubiri w'umuntu. Ifoto mbarankuru yo mu bubiko", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Umubu uraboneka uri ku mubiri w'umuntu. Ifoto mbarankuru yo mu bubiko", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "rawImage", + "model": { + "width": 647, + "height": 364, + "locator": "1042/live/9efb7dd0-8f8c-11ef-8093-674c3e767df6.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "PA", + "suitableForSyndication": false + } + } + ] + } + }, + "summary": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Ishami ry'Umuryango w'Abibumbye ryita ku buzima rivuga ko iyo ndwara \"yibasiye ba farawo\" ubu isigaye ari amateka mu Misiri. ", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Ishami ry'Umuryango w'Abibumbye ryita ku buzima rivuga ko iyo ndwara \"yibasiye ba farawo\" ubu isigaye ari amateka mu Misiri. ", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + }, + "passport": { + "language": "rw", + "home": "http://www.bbc.co.uk/ontologies/passport/home/Gahuza", + "locator": "urn:bbc:optimo:asset:cn4ze4382jzo", + "availability": "AVAILABLE", + "taggings": [ + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/infoClass", + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/9519c450-d886-406a-8fc3-aaa847a2cf88#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/e7f068e4-c41a-448c-9efc-769ef0ee1803#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/44c53579-9efa-445a-8d23-4212f28dc6c7#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/audience/motivation", + "value": "http://www.bbc.co.uk/things/e5edf40d-b1e6-48f5-be62-8fe6d7fe857a#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/primaryMediaType", + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/assetType", + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/editorialSensitivity", + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/d2c2ba68-f9ad-4185-a6d1-7f6437256735#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/format", + "value": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id" + } + ], + "schemaVersion": "1.4.0", + "publishedState": "PUBLISHED", + "predicates": { + "assetType": [ + { + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id", + "type": "assetType" + } + ], + "primaryMediaType": [ + { + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id", + "type": "primaryMediaType" + } + ], + "motivation": [], + "infoClass": [ + { + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id", + "type": "infoClass" + } + ], + "formats": [ + { + "value": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id", + "thingLabel": "News report", + "thingUri": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id", + "thingId": "46c0517d-9927-4d1a-9954-8c63a3f7a888", + "thingType": ["tagging:TagConcept", "tagging:Format"], + "thingSameAs": [], + "thingEnglishLabel": "Report", + "thingPreferredLabel": "Report", + "thingLabelLanguage": "rw", + "type": "formats" + } + ], + "editorialSensitivity": [ + { + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id", + "type": "editorialSensitivity" + } + ], + "about": [ + { + "value": "http://www.bbc.co.uk/things/44c53579-9efa-445a-8d23-4212f28dc6c7#id", + "thingLabel": "Malariya", + "thingUri": "http://www.bbc.co.uk/things/44c53579-9efa-445a-8d23-4212f28dc6c7#id", + "thingId": "44c53579-9efa-445a-8d23-4212f28dc6c7", + "thingType": [ + "tagging:TagConcept", + "core:Theme", + "core:Thing" + ], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q12156", + "http://dbpedia.org/resource/Malaria" + ], + "thingEnglishLabel": "Malaria", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/9519c450-d886-406a-8fc3-aaa847a2cf88#id", + "thingLabel": "Misiri", + "thingUri": "http://www.bbc.co.uk/things/9519c450-d886-406a-8fc3-aaa847a2cf88#id", + "thingId": "9519c450-d886-406a-8fc3-aaa847a2cf88", + "thingType": [ + "core:Thing", + "core:Place", + "tagging:TagConcept" + ], + "thingSameAs": ["http://sws.geonames.org/357994/"], + "thingEnglishLabel": "Egypt", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/d2c2ba68-f9ad-4185-a6d1-7f6437256735#id", + "thingLabel": "Afurika", + "thingUri": "http://www.bbc.co.uk/things/d2c2ba68-f9ad-4185-a6d1-7f6437256735#id", + "thingId": "d2c2ba68-f9ad-4185-a6d1-7f6437256735", + "thingType": [ + "core:Thing", + "core:Place", + "tagging:TagConcept" + ], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q15", + "http://dbpedia.org/resource/Africa", + "http://sws.geonames.org/6255146/" + ], + "thingEnglishLabel": "Africa", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/e7f068e4-c41a-448c-9efc-769ef0ee1803#id", + "thingLabel": "Umuryango Mpuzamahanga wita k'Ubuzima", + "thingUri": "http://www.bbc.co.uk/things/e7f068e4-c41a-448c-9efc-769ef0ee1803#id", + "thingId": "e7f068e4-c41a-448c-9efc-769ef0ee1803", + "thingType": [ + "core:Organisation", + "core:Thing", + "tagging:TagConcept", + "tagging:AmbiguousTerm", + "tagging:Agent" + ], + "thingSameAs": [ + "http://dbpedia.org/resource/World_Health_Organization" + ], + "thingEnglishLabel": "World Health Organization (WHO)", + "type": "about" + } + ] + } + }, + "byline": { + "blocks": [ + { + "type": "contributor", + "model": { + "blocks": [ + { + "type": "name", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Jaroslav Lukiv", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Jaroslav Lukiv", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "role", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "BBC News", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "BBC News", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + } + ] + } + } + ] + }, + "serviceIdentifier": "Gahuza", + "breakingNews": { "isBreaking": false }, + "consumableAsSFV": false, + "id": "urn:bbc:ares::article:cn4ze4382jzo", + "type": "optimo" + } + ], + "features": [ + { + "locators": { + "optimoUrn": "urn:bbc:optimo:asset:cn7y3v306ndo", + "canonicalUrl": "https://www.bbc.com/gahuza/articles/cn7y3v306ndo" + }, + "timestamp": 1729256870293, + "suitableForSyndication": true, + "language": "rw", + "headlines": { + "seoHeadline": "Gusinzira gake canke cane? Vyose bigira ingaruka mbi ku kwibuka. ", + "promoHeadline": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Gusinzira gake canke cane? Vyose bigira ingaruka mbi ku kwibuka. ", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Gusinzira gake canke cane? Vyose bigira ingaruka mbi ku kwibuka. ", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + "images": { + "defaultPromoImage": { + "blocks": [ + { + "type": "caption", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "", + "blocks": [ + { + "type": "fragment", + "model": { "text": "", "attributes": [] } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "altText", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Umugore aryamye", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Umugore aryamye", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "rawImage", + "model": { + "width": 2119, + "height": 1414, + "locator": "b9cf/live/d5f91a70-8c96-11ef-81f8-1f28bcc5be15.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "Getty Images", + "suitableForSyndication": true + } + } + ] + } + }, + "summary": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Umuvuduko wihuta w'ingene abantu babayeho kw'isi ushobora gutuma haba impinduka mu nyifato no mu mibano biteba bikagira ingaruka kw'itiro. ", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Umuvuduko wihuta w'ingene abantu babayeho kw'isi ushobora gutuma haba impinduka mu nyifato no mu mibano biteba bikagira ingaruka kw'itiro. ", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + }, + "passport": { + "language": "rw", + "home": "http://www.bbc.co.uk/ontologies/passport/home/Gahuza", + "locator": "urn:bbc:optimo:asset:cn7y3v306ndo", + "availability": "AVAILABLE", + "taggings": [ + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/0f469e6a-d4a6-46f2-b727-2bd039cb6b53#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/2e022fa4-504b-4da9-8ba4-06c93d0cd625#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/c4794229-7f87-43ce-ac0a-6cfcd6d3cef2#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/primaryMediaType", + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/814465c5-404b-4c88-889f-45907ba1f402#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/format", + "value": "http://www.bbc.co.uk/things/8d1509ef-08ef-42bd-b831-82504eed9b8e#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/audience/motivation", + "value": "http://www.bbc.co.uk/things/b1a660eb-ef14-4645-b4cd-d7bd939ce443#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/918e9487-dc88-44e2-8168-057149670ec3#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/infoClass", + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/assetType", + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/editorialSensitivity", + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id" + } + ], + "schemaVersion": "1.4.0", + "publishedState": "PUBLISHED", + "predicates": { + "assetType": [ + { + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id", + "type": "assetType" + } + ], + "primaryMediaType": [ + { + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id", + "type": "primaryMediaType" + } + ], + "motivation": [], + "infoClass": [ + { + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id", + "type": "infoClass" + } + ], + "formats": [ + { + "value": "http://www.bbc.co.uk/things/8d1509ef-08ef-42bd-b831-82504eed9b8e#id", + "thingLabel": "Feature", + "thingUri": "http://www.bbc.co.uk/things/8d1509ef-08ef-42bd-b831-82504eed9b8e#id", + "thingId": "8d1509ef-08ef-42bd-b831-82504eed9b8e", + "thingType": ["tagging:TagConcept", "tagging:Format"], + "thingSameAs": [ + "http://www.bbc.co.uk/ontologies/applicationlogic-news/Feature" + ], + "thingEnglishLabel": "Feature", + "thingPreferredLabel": "Feature", + "thingLabelLanguage": "rw", + "type": "formats" + } + ], + "editorialSensitivity": [ + { + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id", + "type": "editorialSensitivity" + } + ], + "about": [ + { + "value": "http://www.bbc.co.uk/things/0f469e6a-d4a6-46f2-b727-2bd039cb6b53#id", + "thingLabel": "Ubumenyi", + "thingUri": "http://www.bbc.co.uk/things/0f469e6a-d4a6-46f2-b727-2bd039cb6b53#id", + "thingId": "0f469e6a-d4a6-46f2-b727-2bd039cb6b53", + "thingType": [ + "core:Thing", + "tagging:TagConcept", + "core:Theme" + ], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q336", + "http://dbpedia.org/resource/Science" + ], + "thingEnglishLabel": "Science", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/2e022fa4-504b-4da9-8ba4-06c93d0cd625#id", + "thingLabel": "Gusinzira", + "thingUri": "http://www.bbc.co.uk/things/2e022fa4-504b-4da9-8ba4-06c93d0cd625#id", + "thingId": "2e022fa4-504b-4da9-8ba4-06c93d0cd625", + "thingType": [ + "tagging:TagConcept", + "core:Theme", + "core:Thing" + ], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q35831", + "http://dbpedia.org/resource/Sleep" + ], + "thingEnglishLabel": "Sleep", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/814465c5-404b-4c88-889f-45907ba1f402#id", + "thingLabel": "Amagara yo mu mutwe", + "thingUri": "http://www.bbc.co.uk/things/814465c5-404b-4c88-889f-45907ba1f402#id", + "thingId": "814465c5-404b-4c88-889f-45907ba1f402", + "thingType": [ + "tagging:AmbiguousTerm", + "core:Theme", + "tagging:TagConcept", + "core:Thing", + "tagging:Genre" + ], + "thingSameAs": [ + "http://dbpedia.org/resource/Mental_health", + "http://www.wikidata.org/entity/Q317309", + "http://www.bbc.com/bitesize/tags/z7qg6v4#id" + ], + "thingEnglishLabel": "Mental health", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/918e9487-dc88-44e2-8168-057149670ec3#id", + "thingLabel": "Imiti", + "thingUri": "http://www.bbc.co.uk/things/918e9487-dc88-44e2-8168-057149670ec3#id", + "thingId": "918e9487-dc88-44e2-8168-057149670ec3", + "thingType": [ + "tagging:TagConcept", + "core:Thing", + "core:Theme" + ], + "thingSameAs": [ + "http://dbpedia.org/resource/Medicine", + "http://www.wikidata.org/entity/Q11190" + ], + "thingEnglishLabel": "Medicine", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/c4794229-7f87-43ce-ac0a-6cfcd6d3cef2#id", + "thingLabel": "Ubuzima", + "thingUri": "http://www.bbc.co.uk/things/c4794229-7f87-43ce-ac0a-6cfcd6d3cef2#id", + "thingId": "c4794229-7f87-43ce-ac0a-6cfcd6d3cef2", + "thingType": [ + "core:Theme", + "tagging:Genre", + "tagging:TagConcept", + "core:Thing", + "tagging:AmbiguousTerm" + ], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q12147", + "http://dbpedia.org/resource/Health" + ], + "thingEnglishLabel": "Health", + "type": "about" + } + ] + } + }, + "byline": { + "blocks": [ + { + "type": "contributor", + "model": { + "blocks": [ + { + "type": "name", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Tamiris Rezende*", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Tamiris Rezende*", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "role", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "The Conversation Brasil**", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "The Conversation Brasil**", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + } + ] + } + } + ] + }, + "serviceIdentifier": "Gahuza", + "breakingNews": { "isBreaking": false }, + "consumableAsSFV": false, + "id": "urn:bbc:ares::article:cn7y3v306ndo", + "type": "optimo" + }, + { + "locators": { + "optimoUrn": "urn:bbc:optimo:asset:c80rz5pzyr7o", + "canonicalUrl": "https://www.bbc.com/gahuza/articles/c80rz5pzyr7o" + }, + "timestamp": 1729235451994, + "suitableForSyndication": true, + "language": "rw", + "headlines": { + "seoHeadline": "Ibyo wamenya kuri Yahya Sinwar wafunzwe imyaka 22 na Israel nyuma ikicuza kumurekura", + "promoHeadline": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Yahya Sinwar wamaze imyaka irenga 20 muri gereza zo muri Israel yari muntu ki?", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Yahya Sinwar wamaze imyaka irenga 20 muri gereza zo muri Israel yari muntu ki?", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + "images": { + "defaultPromoImage": { + "blocks": [ + { + "type": "caption", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Yahya Sinwar yari azwiho kuba umuntu utinyitse cyane kubera amateka ye muri Hamas no muri gereza za Israel", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Yahya Sinwar yari azwiho kuba umuntu utinyitse cyane kubera amateka ye muri Hamas no muri gereza za Israel", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "altText", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Yahya Sinwar yari azwiho kuba umuntu utinyitse cyane kubera amateka ye muri Hamas no muri gereza za Israel", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Yahya Sinwar yari azwiho kuba umuntu utinyitse cyane kubera amateka ye muri Hamas no muri gereza za Israel", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "rawImage", + "model": { + "width": 1536, + "height": 864, + "locator": "40ea/live/257fa680-8d1f-11ef-b6b0-c9af5f7f16e4.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "Getty Images", + "suitableForSyndication": true + } + } + ] + } + }, + "summary": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Israel ibona ko yakoze ikosa rikomeye mu kurekura Yahya Sinwar mu kugurana imfungwa agasubira muri Gaza aho yahindutse ikibazo gikomeye kuri Israel. ", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Israel ibona ko yakoze ikosa rikomeye mu kurekura Yahya Sinwar mu kugurana imfungwa agasubira muri Gaza aho yahindutse ikibazo gikomeye kuri Israel. ", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + }, + "passport": { + "language": "rw", + "home": "http://www.bbc.co.uk/ontologies/passport/home/Gahuza", + "locator": "urn:bbc:optimo:asset:c80rz5pzyr7o", + "availability": "AVAILABLE", + "taggings": [ + { + "predicate": "http://www.bbc.co.uk/ontologies/audience/motivation", + "value": "http://www.bbc.co.uk/things/7047e74c-b9ae-4c02-a4a8-748df451ac58#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/infoClass", + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/primaryMediaType", + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/a2ada86c-5450-4055-ad81-ef6bc0b922cc#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/format", + "value": "http://www.bbc.co.uk/things/8d1509ef-08ef-42bd-b831-82504eed9b8e#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/84b77b58-6acb-4074-8733-c237a0687641#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/assetType", + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/editorialSensitivity", + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id" + } + ], + "schemaVersion": "1.4.0", + "publishedState": "PUBLISHED", + "predicates": { + "assetType": [ + { + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id", + "type": "assetType" + } + ], + "primaryMediaType": [ + { + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id", + "type": "primaryMediaType" + } + ], + "motivation": [], + "infoClass": [ + { + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id", + "type": "infoClass" + } + ], + "formats": [ + { + "value": "http://www.bbc.co.uk/things/8d1509ef-08ef-42bd-b831-82504eed9b8e#id", + "thingLabel": "Feature", + "thingUri": "http://www.bbc.co.uk/things/8d1509ef-08ef-42bd-b831-82504eed9b8e#id", + "thingId": "8d1509ef-08ef-42bd-b831-82504eed9b8e", + "thingType": ["tagging:TagConcept", "tagging:Format"], + "thingSameAs": [ + "http://www.bbc.co.uk/ontologies/applicationlogic-news/Feature" + ], + "thingEnglishLabel": "Feature", + "thingPreferredLabel": "Feature", + "thingLabelLanguage": "rw", + "type": "formats" + } + ], + "editorialSensitivity": [ + { + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id", + "type": "editorialSensitivity" + } + ], + "about": [ + { + "value": "http://www.bbc.co.uk/things/84b77b58-6acb-4074-8733-c237a0687641#id", + "thingLabel": "Isiraheli", + "thingUri": "http://www.bbc.co.uk/things/84b77b58-6acb-4074-8733-c237a0687641#id", + "thingId": "84b77b58-6acb-4074-8733-c237a0687641", + "thingType": [ + "core:Thing", + "tagging:TagConcept", + "core:Place" + ], + "thingSameAs": [ + "http://sws.geonames.org/294640/", + "http://dbpedia.org/resource/Israel", + "http://www.wikidata.org/entity/Q801" + ], + "thingEnglishLabel": "Israel", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/a2ada86c-5450-4055-ad81-ef6bc0b922cc#id", + "thingLabel": "Isareli n'abanyapalestina", + "thingUri": "http://www.bbc.co.uk/things/a2ada86c-5450-4055-ad81-ef6bc0b922cc#id", + "thingId": "a2ada86c-5450-4055-ad81-ef6bc0b922cc", + "thingType": [ + "tagging:TagConcept", + "core:Theme", + "core:Thing" + ], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q16125891", + "http://dbpedia.org/resource/Israel–Palestine_relations" + ], + "thingEnglishLabel": "Israel & the Palestinians", + "type": "about" + } + ] + } + }, + "serviceIdentifier": "Gahuza", + "breakingNews": { "isBreaking": false }, + "consumableAsSFV": false, + "id": "urn:bbc:ares::article:c80rz5pzyr7o", + "type": "optimo" + }, + { + "locators": { + "optimoUrn": "urn:bbc:optimo:asset:cjr3xzqq31yo", + "canonicalUrl": "https://www.bbc.com/gahuza/articles/cjr3xzqq31yo" + }, + "timestamp": 1729148473707, + "suitableForSyndication": true, + "language": "rw", + "headlines": { + "seoHeadline": "Central African Republic: Abagore barashinja ingabo za UN, zirimo n'iz'u Rwanda, kubasambanya ku ngufu", + "promoHeadline": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Igisirikare cy'u Rwanda kirahakana ibirego byo gufata abagore ku ngufu muri Centrafrique", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Igisirikare cy'u Rwanda kirahakana ibirego byo gufata abagore ku ngufu muri Centrafrique", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + "images": { + "defaultPromoImage": { + "blocks": [ + { + "type": "caption", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Ifoto y'ingabo z'u Rwanda mu butumwa bwa MINUSCA bukuriwe n'Umunyarwandakazi Valentine Rugwabiza (uhagaze imbere y'abasirikare)", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Ifoto y'ingabo z'u Rwanda mu butumwa bwa MINUSCA bukuriwe n'Umunyarwandakazi Valentine Rugwabiza (uhagaze imbere y'abasirikare)", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "altText", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Ifoto y'ingabo z'u Rwanda mu butumwa bwa MINUSCA bukuriwe n'Umunyarwandakazi Valentine Rugwabiza (uhagaze imbere y'abasirikare)", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Ifoto y'ingabo z'u Rwanda mu butumwa bwa MINUSCA bukuriwe n'Umunyarwandakazi Valentine Rugwabiza (uhagaze imbere y'abasirikare)", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "rawImage", + "model": { + "width": 1757, + "height": 988, + "locator": "c77a/live/91f15af0-8c54-11ef-b49a-91a7b6c847dc.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "MINUSCA", + "suitableForSyndication": false + } + } + ] + } + }, + "summary": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Abagore batatu b'ahatandukanye muri Centrafrique bashinja abasirikare batandatu b’u Rwanda kubafata ku ngufu, harimo uvuga ko yabanje guhabwa ibituma ata ubwenge. ", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Abagore batatu b'ahatandukanye muri Centrafrique bashinja abasirikare batandatu b’u Rwanda kubafata ku ngufu, harimo uvuga ko yabanje guhabwa ibituma ata ubwenge. ", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + }, + "passport": { + "language": "rw", + "home": "http://www.bbc.co.uk/ontologies/passport/home/Gahuza", + "locator": "urn:bbc:optimo:asset:cjr3xzqq31yo", + "availability": "AVAILABLE", + "taggings": [ + { + "predicate": "http://www.bbc.co.uk/ontologies/audience/motivation", + "value": "http://www.bbc.co.uk/things/bf928ac3-b3bd-4d47-924e-cca1bdc29174#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/f1e8f073-fdeb-42e1-9480-4fe8a3fa5bfd#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/infoClass", + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/e45cb5f8-3c87-4ebd-ac1c-058e9be22862#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/8125f2a9-3259-4f35-ab75-d9a6577fdc88#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/46179660-2af3-49c7-a80b-b483412fbfb6#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/primaryMediaType", + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/assetType", + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/editorialSensitivity", + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/format", + "value": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id" + } + ], + "schemaVersion": "1.4.0", + "publishedState": "PUBLISHED", + "predicates": { + "assetType": [ + { + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id", + "type": "assetType" + } + ], + "primaryMediaType": [ + { + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id", + "type": "primaryMediaType" + } + ], + "motivation": [], + "infoClass": [ + { + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id", + "type": "infoClass" + } + ], + "formats": [ + { + "value": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id", + "thingLabel": "News report", + "thingUri": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id", + "thingId": "46c0517d-9927-4d1a-9954-8c63a3f7a888", + "thingType": ["tagging:TagConcept", "tagging:Format"], + "thingSameAs": [], + "thingEnglishLabel": "Report", + "thingPreferredLabel": "Report", + "thingLabelLanguage": "rw", + "type": "formats" + } + ], + "editorialSensitivity": [ + { + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id", + "type": "editorialSensitivity" + } + ], + "about": [ + { + "value": "http://www.bbc.co.uk/things/46179660-2af3-49c7-a80b-b483412fbfb6#id", + "thingLabel": "Ihohotera rishingiye ku gitsina", + "thingUri": "http://www.bbc.co.uk/things/46179660-2af3-49c7-a80b-b483412fbfb6#id", + "thingId": "46179660-2af3-49c7-a80b-b483412fbfb6", + "thingType": [ + "core:Thing", + "core:Theme", + "tagging:TagConcept" + ], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q558075", + "http://dbpedia.org/resource/Sexual_violence" + ], + "thingEnglishLabel": "Sexual violence", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/8125f2a9-3259-4f35-ab75-d9a6577fdc88#id", + "thingLabel": "Rwanda", + "thingUri": "http://www.bbc.co.uk/things/8125f2a9-3259-4f35-ab75-d9a6577fdc88#id", + "thingId": "8125f2a9-3259-4f35-ab75-d9a6577fdc88", + "thingType": [ + "core:Place", + "tagging:TagConcept", + "core:Thing" + ], + "thingSameAs": ["http://sws.geonames.org/49518/"], + "thingEnglishLabel": "Rwanda", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/e45cb5f8-3c87-4ebd-ac1c-058e9be22862#id", + "thingLabel": "Abagore", + "thingUri": "http://www.bbc.co.uk/things/e45cb5f8-3c87-4ebd-ac1c-058e9be22862#id", + "thingId": "e45cb5f8-3c87-4ebd-ac1c-058e9be22862", + "thingType": [ + "core:Thing", + "tagging:TagConcept", + "core:Theme" + ], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q467", + "http://dbpedia.org/resource/Woman" + ], + "thingEnglishLabel": "Women", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/f1e8f073-fdeb-42e1-9480-4fe8a3fa5bfd#id", + "thingLabel": "Republika ya Afrika yo hagati", + "thingUri": "http://www.bbc.co.uk/things/f1e8f073-fdeb-42e1-9480-4fe8a3fa5bfd#id", + "thingId": "f1e8f073-fdeb-42e1-9480-4fe8a3fa5bfd", + "thingType": [ + "tagging:TagConcept", + "core:Thing", + "core:Place" + ], + "thingSameAs": ["http://sws.geonames.org/239880/"], + "thingEnglishLabel": "Central African Republic", + "type": "about" + } + ] + } + }, + "serviceIdentifier": "Gahuza", + "breakingNews": { "isBreaking": false }, + "consumableAsSFV": false, + "id": "urn:bbc:ares::article:cjr3xzqq31yo", + "type": "optimo" + }, + { + "locators": { + "optimoUrn": "urn:bbc:optimo:asset:cd984ege482o", + "canonicalUrl": "https://www.bbc.com/gahuza/articles/cd984ege482o" + }, + "timestamp": 1729147830634, + "suitableForSyndication": true, + "language": "rw", + "headlines": { + "seoHeadline": "Niger yafuse amazina y'Ubufaransa mu guha icubahiro intwari za Africa n'izabo", + "promoHeadline": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Niger yafuse amazina y'Ubufaransa mu guha icubahiro intwari za Afrika n'izabo", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Niger yafuse amazina y'Ubufaransa mu guha icubahiro intwari za Afrika n'izabo", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + "images": { + "defaultPromoImage": { + "blocks": [ + { + "type": "caption", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Djibo Bakary, uwa mbere yabaye umukuru w'igisagara ca Niamey, yagize uruhara rudasanzwe mu kurwanira ukwikukira kw'igihugu ca Niger mu 1960 igihe Charles de Gaulle yari umukuru w'igihugu c'Ubufaransa.", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Djibo Bakary, uwa mbere yabaye umukuru w'igisagara ca Niamey, yagize uruhara rudasanzwe mu kurwanira ukwikukira kw'igihugu ca Niger mu 1960 igihe Charles de Gaulle yari umukuru w'igihugu c'Ubufaransa.", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "altText", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Djibo Bakary, uwa mbere yabaye umukuru w'igisagara ca Niamey, yagize uruhara rudasanzwe mu kurwanira ukwikukira kw'igihugu ca Niger mu 1960 igihe Charles de Gaulle yari umukuru w'igihugu c'Ubufaransa.", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Djibo Bakary, uwa mbere yabaye umukuru w'igisagara ca Niamey, yagize uruhara rudasanzwe mu kurwanira ukwikukira kw'igihugu ca Niger mu 1960 igihe Charles de Gaulle yari umukuru w'igihugu c'Ubufaransa.", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "rawImage", + "model": { + "width": 976, + "height": 549, + "locator": "9c16/live/6adcc350-8be1-11ef-8936-1185f9e7d044.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "AFP", + "suitableForSyndication": true + } + } + ] + } + }, + "summary": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Kimwe mu bibanza bikomeye cahinduwe izina i Niamey ni Place de La Francophonie, ubu kigiye kwitwa Place de l'Alliance des Etats du Sahel, ihuriro rishasha Niger isangiye na Burkina Faso na Mali.", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Kimwe mu bibanza bikomeye cahinduwe izina i Niamey ni Place de La Francophonie, ubu kigiye kwitwa Place de l'Alliance des Etats du Sahel, ihuriro rishasha Niger isangiye na Burkina Faso na Mali.", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + }, + "passport": { + "language": "rw", + "home": "http://www.bbc.co.uk/ontologies/passport/home/Gahuza", + "locator": "urn:bbc:optimo:asset:cd984ege482o", + "availability": "AVAILABLE", + "taggings": [ + { + "predicate": "http://www.bbc.co.uk/ontologies/audience/motivation", + "value": "http://www.bbc.co.uk/things/bf928ac3-b3bd-4d47-924e-cca1bdc29174#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/61ef4416-de68-49ff-9c97-e0779dafd9d2#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/f1c78bfc-bfbb-4e37-9ffc-945f95bfbc4b#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/infoClass", + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/primaryMediaType", + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/b712cf42-5a41-4263-879d-5ec4717d7798#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/03eb3674-6190-4cd7-8104-1a00991d67a3#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/assetType", + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/editorialSensitivity", + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/format", + "value": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id" + } + ], + "schemaVersion": "1.4.0", + "publishedState": "PUBLISHED", + "predicates": { + "assetType": [ + { + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id", + "type": "assetType" + } + ], + "primaryMediaType": [ + { + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id", + "type": "primaryMediaType" + } + ], + "motivation": [], + "infoClass": [ + { + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id", + "type": "infoClass" + } + ], + "formats": [ + { + "value": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id", + "thingLabel": "News report", + "thingUri": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id", + "thingId": "46c0517d-9927-4d1a-9954-8c63a3f7a888", + "thingType": ["tagging:TagConcept", "tagging:Format"], + "thingSameAs": [], + "thingEnglishLabel": "Report", + "thingPreferredLabel": "Report", + "thingLabelLanguage": "rw", + "type": "formats" + } + ], + "editorialSensitivity": [ + { + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id", + "type": "editorialSensitivity" + } + ], + "about": [ + { + "value": "http://www.bbc.co.uk/things/03eb3674-6190-4cd7-8104-1a00991d67a3#id", + "thingLabel": "Amateka", + "thingUri": "http://www.bbc.co.uk/things/03eb3674-6190-4cd7-8104-1a00991d67a3#id", + "thingId": "03eb3674-6190-4cd7-8104-1a00991d67a3", + "thingType": [ + "tagging:Genre", + "tagging:AmbiguousTerm", + "core:Theme", + "tagging:TagConcept", + "core:Thing" + ], + "thingSameAs": [ + "http://dbpedia.org/resource/History", + "http://www.wikidata.org/entity/Q309" + ], + "thingEnglishLabel": "History", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/61ef4416-de68-49ff-9c97-e0779dafd9d2#id", + "thingLabel": "Ubufaransa", + "thingUri": "http://www.bbc.co.uk/things/61ef4416-de68-49ff-9c97-e0779dafd9d2#id", + "thingId": "61ef4416-de68-49ff-9c97-e0779dafd9d2", + "thingType": [ + "tagging:TagConcept", + "core:Thing", + "core:Place" + ], + "thingSameAs": ["http://sws.geonames.org/3017382/"], + "thingEnglishLabel": "France", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/b712cf42-5a41-4263-879d-5ec4717d7798#id", + "thingLabel": "Afurika y'Uburengerazuba", + "thingUri": "http://www.bbc.co.uk/things/b712cf42-5a41-4263-879d-5ec4717d7798#id", + "thingId": "b712cf42-5a41-4263-879d-5ec4717d7798", + "thingType": [ + "tagging:TagConcept", + "core:Thing", + "core:Place" + ], + "thingSameAs": ["http://dbpedia.org/resource/West_Africa"], + "thingEnglishLabel": "West Africa", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/f1c78bfc-bfbb-4e37-9ffc-945f95bfbc4b#id", + "thingLabel": "Niger", + "thingUri": "http://www.bbc.co.uk/things/f1c78bfc-bfbb-4e37-9ffc-945f95bfbc4b#id", + "thingId": "f1c78bfc-bfbb-4e37-9ffc-945f95bfbc4b", + "thingType": [ + "tagging:TagConcept", + "core:Place", + "core:Thing" + ], + "thingSameAs": ["http://sws.geonames.org/2440476/"], + "thingEnglishLabel": "Niger", + "type": "about" + } + ] + } + }, + "byline": { + "blocks": [ + { + "type": "contributor", + "model": { + "blocks": [ + { + "type": "name", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Paul Njie & Lucy Fleming", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Paul Njie & Lucy Fleming", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "role", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "BBC News", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "BBC News", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + } + ] + } + } + ] + }, + "serviceIdentifier": "Gahuza", + "breakingNews": { "isBreaking": false }, + "consumableAsSFV": false, + "id": "urn:bbc:ares::article:cd984ege482o", + "type": "optimo" + }, + { + "locators": { + "optimoUrn": "urn:bbc:optimo:asset:cj4djq7y022o", + "canonicalUrl": "https://www.bbc.com/gahuza/articles/cj4djq7y022o" + }, + "timestamp": 1729142562314, + "suitableForSyndication": true, + "language": "rw", + "headlines": { + "seoHeadline": "Liam Payne yapfuye ku myaka 31 nyuma yo kugwa hasi ahanutse hejuru muri hoteli ", + "promoHeadline": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Liam Payne: Icyamamare mu itsinda One Direction yahanutse mu igorofa ya hoteli arapfa", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Liam Payne: Icyamamare mu itsinda One Direction yahanutse mu igorofa ya hoteli arapfa", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + "images": { + "defaultPromoImage": { + "blocks": [ + { + "type": "altText", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Liam Payne ", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Liam Payne ", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "rawImage", + "model": { + "width": 1248, + "height": 702, + "locator": "bd53/live/65c3c470-8c47-11ef-8936-1185f9e7d044.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "Getty Images", + "suitableForSyndication": true + } + } + ] + } + }, + "summary": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Kugeza ubu ntiharamenyekana neza uburyo Liam yahanutse hejuru muri hoteli akitura hasi, polisi y'i Buenos Aires ivuga ko yatangiye iperereza. ", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Kugeza ubu ntiharamenyekana neza uburyo Liam yahanutse hejuru muri hoteli akitura hasi, polisi y'i Buenos Aires ivuga ko yatangiye iperereza. ", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + }, + "passport": { + "language": "rw", + "home": "http://www.bbc.co.uk/ontologies/passport/home/Gahuza", + "locator": "urn:bbc:optimo:asset:cj4djq7y022o", + "availability": "AVAILABLE", + "taggings": [ + { + "predicate": "http://www.bbc.co.uk/ontologies/audience/motivation", + "value": "http://www.bbc.co.uk/things/bf928ac3-b3bd-4d47-924e-cca1bdc29174#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/infoClass", + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/primaryMediaType", + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/de648736-7268-454c-a7b1-dbff416f2865#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/2e91364c-5c77-4660-b76e-d76202785e64#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/f0e68d01-22ae-42a7-9e05-d299a29d4ce5#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/assetType", + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/editorialSensitivity", + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/format", + "value": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id" + } + ], + "schemaVersion": "1.4.0", + "publishedState": "PUBLISHED", + "predicates": { + "assetType": [ + { + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id", + "type": "assetType" + } + ], + "primaryMediaType": [ + { + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id", + "type": "primaryMediaType" + } + ], + "motivation": [], + "infoClass": [ + { + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id", + "type": "infoClass" + } + ], + "formats": [ + { + "value": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id", + "thingLabel": "News report", + "thingUri": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id", + "thingId": "46c0517d-9927-4d1a-9954-8c63a3f7a888", + "thingType": ["tagging:TagConcept", "tagging:Format"], + "thingSameAs": [], + "thingEnglishLabel": "Report", + "thingPreferredLabel": "Report", + "thingLabelLanguage": "rw", + "type": "formats" + } + ], + "editorialSensitivity": [ + { + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id", + "type": "editorialSensitivity" + } + ], + "about": [ + { + "value": "http://www.bbc.co.uk/things/2e91364c-5c77-4660-b76e-d76202785e64#id", + "thingLabel": "Ubwongereza", + "thingUri": "http://www.bbc.co.uk/things/2e91364c-5c77-4660-b76e-d76202785e64#id", + "thingId": "2e91364c-5c77-4660-b76e-d76202785e64", + "thingType": [ + "tagging:TagConcept", + "core:Place", + "core:Thing" + ], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q145", + "http://sws.geonames.org/2635167/" + ], + "thingEnglishLabel": "United Kingdom", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/de648736-7268-454c-a7b1-dbff416f2865#id", + "thingLabel": "Umuziki", + "thingUri": "http://www.bbc.co.uk/things/de648736-7268-454c-a7b1-dbff416f2865#id", + "thingId": "de648736-7268-454c-a7b1-dbff416f2865", + "thingType": [ + "core:Theme", + "tagging:Genre", + "tagging:AmbiguousTerm", + "tagging:TagConcept", + "core:Thing" + ], + "thingSameAs": [ + "http://dbpedia.org/resource/Music", + "http://www.wikidata.org/entity/Q638" + ], + "thingEnglishLabel": "Music", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/f0e68d01-22ae-42a7-9e05-d299a29d4ce5#id", + "thingLabel": "Argentina", + "thingUri": "http://www.bbc.co.uk/things/f0e68d01-22ae-42a7-9e05-d299a29d4ce5#id", + "thingId": "f0e68d01-22ae-42a7-9e05-d299a29d4ce5", + "thingType": [ + "core:Thing", + "core:Place", + "tagging:TagConcept" + ], + "thingSameAs": ["http://sws.geonames.org/3865483/"], + "thingEnglishLabel": "Argentina", + "type": "about" + } + ] + } + }, + "serviceIdentifier": "Gahuza", + "breakingNews": { "isBreaking": false }, + "consumableAsSFV": false, + "id": "urn:bbc:ares::article:cj4djq7y022o", + "type": "optimo" + }, + { + "locators": { + "optimoUrn": "urn:bbc:optimo:asset:c781g8jzpdyo", + "canonicalUrl": "https://www.bbc.com/gahuza/articles/c781g8jzpdyo" + }, + "timestamp": 1729061366091, + "suitableForSyndication": true, + "language": "rw", + "headlines": { + "seoHeadline": "Amatora ya US: Kamala Harris yatanguye 'nka rokete' muri Michigan... ubu ariko arakoroka", + "promoHeadline": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Amatora ya Amerika: Harris yatanguye 'nka rokete' muri Michigan... ubu ariko arakoroka", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Amatora ya Amerika: Harris yatanguye 'nka rokete' muri Michigan... ubu ariko arakoroka", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + "images": { + "defaultPromoImage": { + "blocks": [ + { + "type": "caption", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Marcie Paul yateguye isekeza ryo gukwirakwiza ivyapa bihamagarira abanyagihugu gutora Harris", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Marcie Paul yateguye isekeza ryo gukwirakwiza ivyapa bihamagarira abanyagihugu gutora Harris", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "altText", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Marcie Paul yateguye isekeza ryo gukwirakwiza ivyapa bihamagarira abanyagihugu gutora Harris", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Marcie Paul yateguye isekeza ryo gukwirakwiza ivyapa bihamagarira abanyagihugu gutora Harris", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "rawImage", + "model": { + "width": 2616, + "height": 1472, + "locator": "14d6/live/1b58bc40-8a7d-11ef-b668-fd184aedb9b1.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "BBC", + "suitableForSyndication": true + } + } + ] + } + }, + "summary": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Hari ababona ko igihe umu-Democrat Hillary Clinton yariko yiyamamariza ikibanza c'umukuru w'igihugu mu 2016 yatakaje ino ntara kubera yayifashe minenerwe kuko yibaza ko gutsinda vyari ngombwa. ", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Hari ababona ko igihe umu-Democrat Hillary Clinton yariko yiyamamariza ikibanza c'umukuru w'igihugu mu 2016 yatakaje ino ntara kubera yayifashe minenerwe kuko yibaza ko gutsinda vyari ngombwa. ", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + }, + "passport": { + "language": "rw", + "home": "http://www.bbc.co.uk/ontologies/passport/home/Gahuza", + "locator": "urn:bbc:optimo:asset:c781g8jzpdyo", + "availability": "AVAILABLE", + "taggings": [ + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/75612fa6-147c-4a43-97fa-fcf70d9cced3#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/infoClass", + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/primaryMediaType", + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/82857f8e-8134-462a-bb32-b7b14f4eab75#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/78080d81-2849-497e-bc3a-bf364626456b#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/audience/motivation", + "value": "http://www.bbc.co.uk/things/7047e74c-b9ae-4c02-a4a8-748df451ac58#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/647d5613-e0e2-4ef5-b0ce-b491de38bdbd#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/assetType", + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/editorialSensitivity", + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/format", + "value": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id" + } + ], + "schemaVersion": "1.4.0", + "publishedState": "PUBLISHED", + "predicates": { + "assetType": [ + { + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id", + "type": "assetType" + } + ], + "primaryMediaType": [ + { + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id", + "type": "primaryMediaType" + } + ], + "motivation": [], + "infoClass": [ + { + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id", + "type": "infoClass" + } + ], + "formats": [ + { + "value": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id", + "thingLabel": "News report", + "thingUri": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id", + "thingId": "46c0517d-9927-4d1a-9954-8c63a3f7a888", + "thingType": ["tagging:TagConcept", "tagging:Format"], + "thingSameAs": [], + "thingEnglishLabel": "Report", + "thingPreferredLabel": "Report", + "thingLabelLanguage": "rw", + "type": "formats" + } + ], + "editorialSensitivity": [ + { + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id", + "type": "editorialSensitivity" + } + ], + "about": [ + { + "value": "http://www.bbc.co.uk/things/647d5613-e0e2-4ef5-b0ce-b491de38bdbd#id", + "thingLabel": "Amatora ya Amerika 2024", + "thingUri": "http://www.bbc.co.uk/things/647d5613-e0e2-4ef5-b0ce-b491de38bdbd#id", + "thingId": "647d5613-e0e2-4ef5-b0ce-b491de38bdbd", + "thingType": [ + "tagging:TagConcept", + "core:Event", + "core:Thing" + ], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q101110072", + "http://dbpedia.org/resource/2024_United_States_presidential_election" + ], + "thingEnglishLabel": "US election 2024", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/75612fa6-147c-4a43-97fa-fcf70d9cced3#id", + "thingLabel": "Politike", + "thingUri": "http://www.bbc.co.uk/things/75612fa6-147c-4a43-97fa-fcf70d9cced3#id", + "thingId": "75612fa6-147c-4a43-97fa-fcf70d9cced3", + "thingType": [ + "tagging:Genre", + "tagging:TagConcept", + "tagging:AmbiguousTerm", + "core:Theme", + "core:Thing" + ], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q7163", + "http://dbpedia.org/resource/Politics" + ], + "thingEnglishLabel": "Politics", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/78080d81-2849-497e-bc3a-bf364626456b#id", + "thingLabel": "Donald Trump", + "thingUri": "http://www.bbc.co.uk/things/78080d81-2849-497e-bc3a-bf364626456b#id", + "thingId": "78080d81-2849-497e-bc3a-bf364626456b", + "thingType": [ + "tagging:AmbiguousTerm", + "core:Thing", + "tagging:TagConcept", + "core:Person", + "tagging:Agent" + ], + "thingSameAs": [ + "http://dbpedia.org/resource/Donald_Trump", + "http://www.wikidata.org/entity/Q22686" + ], + "thingEnglishLabel": "Donald Trump", + "type": "about" + }, + { + "value": "http://www.bbc.co.uk/things/82857f8e-8134-462a-bb32-b7b14f4eab75#id", + "thingLabel": "Leta Zunze Ubumwe za Amerika", + "thingUri": "http://www.bbc.co.uk/things/82857f8e-8134-462a-bb32-b7b14f4eab75#id", + "thingId": "82857f8e-8134-462a-bb32-b7b14f4eab75", + "thingType": [ + "tagging:TagConcept", + "core:Place", + "core:Thing" + ], + "thingSameAs": [ + "http://sws.geonames.org/6252001/", + "http://www.wikidata.org/entity/Q30" + ], + "thingEnglishLabel": "United States", + "type": "about" + } + ] + } + }, + "byline": { + "blocks": [ + { + "type": "contributor", + "model": { + "blocks": [ + { + "type": "name", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Madeline Halpert", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Madeline Halpert", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "role", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Umunyamakuru ari i Michigan", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Umunyamakuru ari i Michigan", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + } + ] + } + } + ] + }, + "serviceIdentifier": "Gahuza", + "breakingNews": { "isBreaking": false }, + "consumableAsSFV": false, + "id": "urn:bbc:ares::article:c781g8jzpdyo", + "type": "optimo" + }, + { + "locators": { + "optimoUrn": "urn:bbc:optimo:asset:c9dywy6lgj9o", + "canonicalUrl": "https://www.bbc.com/gahuza/articles/c9dywy6lgj9o" + }, + "timestamp": 1729069427445, + "suitableForSyndication": true, + "language": "rw", + "headlines": { + "seoHeadline": "Russia: Umugabo yatabawe nyuma y'iminsi 67 azenguruka mu nyanja", + "promoHeadline": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Umugabo yatabawe amaze iminsi 67 yaraburiye mu nyanja", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Umugabo yatabawe amaze iminsi 67 yaraburiye mu nyanja", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + "images": { + "defaultPromoImage": { + "blocks": [ + { + "type": "caption", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Uretse Mikhail Pichugin, imirambo y’umuvandimwe we Sergei w’imyaka 49, na mwishywa we Ilya, na yo yari ikiri mu bwato bwabo", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Uretse Mikhail Pichugin, imirambo y’umuvandimwe we Sergei w’imyaka 49, na mwishywa we Ilya, na yo yari ikiri mu bwato bwabo", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "altText", + "model": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Uretse Mikhail Pichugin, imirambo y’umuvandimwe we Sergei w’imyaka 49, na mwishywa we Ilya, na yo yari ikiri mu bwato bwabo", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Uretse Mikhail Pichugin, imirambo y’umuvandimwe we Sergei w’imyaka 49, na mwishywa we Ilya, na yo yari ikiri mu bwato bwabo", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "type": "rawImage", + "model": { + "width": 1536, + "height": 864, + "locator": "b706/live/77a887e0-8b9b-11ef-8936-1185f9e7d044.jpg", + "originCode": "cpsprodpb", + "copyrightHolder": "Reuters", + "suitableForSyndication": true + } + } + ] + } + }, + "summary": { + "blocks": [ + { + "type": "text", + "model": { + "blocks": [ + { + "type": "paragraph", + "model": { + "text": "Abategetsi bavuga ko, uyu mugabo w’imyaka 46, yabonywe n’ubwato bw’abarobyi ku ntera ya hafi 1,000km uvuye aho yahagurukiye muri Kanama(8).", + "blocks": [ + { + "type": "fragment", + "model": { + "text": "Abategetsi bavuga ko, uyu mugabo w’imyaka 46, yabonywe n’ubwato bw’abarobyi ku ntera ya hafi 1,000km uvuye aho yahagurukiye muri Kanama(8).", + "attributes": [] + } + } + ] + } + } + ] + } + } + ] + }, + "passport": { + "language": "rw", + "home": "http://www.bbc.co.uk/ontologies/passport/home/Gahuza", + "locator": "urn:bbc:optimo:asset:c9dywy6lgj9o", + "availability": "AVAILABLE", + "taggings": [ + { + "predicate": "http://www.bbc.co.uk/ontologies/audience/motivation", + "value": "http://www.bbc.co.uk/things/bf928ac3-b3bd-4d47-924e-cca1bdc29174#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/about", + "value": "http://www.bbc.co.uk/things/39267b85-1784-4f4b-80ed-f8cb4a35f337#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/infoClass", + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/primaryMediaType", + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/assetType", + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/bbc/editorialSensitivity", + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id" + }, + { + "predicate": "http://www.bbc.co.uk/ontologies/creativework/format", + "value": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id" + } + ], + "schemaVersion": "1.4.0", + "publishedState": "PUBLISHED", + "predicates": { + "assetType": [ + { + "value": "http://www.bbc.co.uk/things/22ea958e-2004-4f34-80a7-bf5acad52f6f#id", + "type": "assetType" + } + ], + "primaryMediaType": [ + { + "value": "http://www.bbc.co.uk/things/5566b81b-8509-44c1-8503-018a0eab317d#id", + "type": "primaryMediaType" + } + ], + "motivation": [], + "infoClass": [ + { + "value": "http://www.bbc.co.uk/things/0db2b959-cbf8-4661-965f-050974a69bb5#id", + "type": "infoClass" + } + ], + "formats": [ + { + "value": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id", + "thingLabel": "News report", + "thingUri": "http://www.bbc.co.uk/things/46c0517d-9927-4d1a-9954-8c63a3f7a888#id", + "thingId": "46c0517d-9927-4d1a-9954-8c63a3f7a888", + "thingType": ["tagging:TagConcept", "tagging:Format"], + "thingSameAs": [], + "thingEnglishLabel": "Report", + "thingPreferredLabel": "Report", + "thingLabelLanguage": "rw", + "type": "formats" + } + ], + "editorialSensitivity": [ + { + "value": "http://www.bbc.co.uk/things/c6979033-cb72-4d07-9897-adc348a4332e#id", + "type": "editorialSensitivity" + } + ], + "about": [ + { + "value": "http://www.bbc.co.uk/things/39267b85-1784-4f4b-80ed-f8cb4a35f337#id", + "thingLabel": "Uburusiya", + "thingUri": "http://www.bbc.co.uk/things/39267b85-1784-4f4b-80ed-f8cb4a35f337#id", + "thingId": "39267b85-1784-4f4b-80ed-f8cb4a35f337", + "thingType": [ + "core:Place", + "tagging:TagConcept", + "core:Thing" + ], + "thingSameAs": [ + "http://www.wikidata.org/entity/Q159", + "http://sws.geonames.org/2017370/" + ], + "thingEnglishLabel": "Russia", + "type": "about" + } + ] + } + }, + "serviceIdentifier": "Gahuza", + "breakingNews": { "isBreaking": false }, + "consumableAsSFV": false, + "id": "urn:bbc:ares::article:c9dywy6lgj9o", + "type": "optimo" + } + ], + "mostRead": { + "generated": "2024-10-21T13:08:21.89Z", + "lastRecordTimeStamp": "2024-10-21T13:05:00Z", + "firstRecordTimeStamp": "2024-10-21T11:05:00Z", + "items": [ + { + "id": "urn:bbc:optimo:asset:cn03d60pp08o", + "rank": 1, + "title": "M23 'yinjiye muri Teritwari ya Walikale'", + "href": "https://www.bbc.com/gahuza/articles/cn03d60pp08o", + "timestamp": "2024-10-21T06:52:47.979Z" + }, + { + "id": "urn:bbc:optimo:asset:c5y51yxeg53o", + "rank": 2, + "title": "‘Nziyamamariza kuba perezida w’Uburusiya Putin navaho’ - Umupfakazi wa Navalny", + "href": "https://www.bbc.com/gahuza/articles/c5y51yxeg53o", + "timestamp": "2024-10-21T09:23:49.476Z" + }, + { + "id": "urn:bbc:optimo:asset:c4gln7xlrdxo", + "rank": 3, + "title": "Amerika iri gukora iperereza ku itangazwa rya gahunda y'ibanga ya Israel yo gutera Iran ", + "href": "https://www.bbc.com/gahuza/articles/c4gln7xlrdxo", + "timestamp": "2024-10-21T05:48:23.180Z" + }, + { + "id": "urn:bbc:optimo:asset:cn4ze4382jzo", + "rank": 4, + "title": "Misiri yatangajwe ko nta malaria ikiyirangwamo nyuma y'umuhate umaze imyaka 100 ", + "href": "https://www.bbc.com/gahuza/articles/cn4ze4382jzo", + "timestamp": "2024-10-21T09:34:19.698Z" + }, + { + "id": "urn:bbc:optimo:asset:cgxqxnxylgzo", + "rank": 5, + "title": "Hamas: Ni ibiki byabaye ku bayobozi bakuru bayo?", + "href": "https://www.bbc.com/gahuza/articles/cgxqxnxylgzo", + "timestamp": "2024-10-20T07:00:09.612Z" + }, + { + "id": "urn:bbc:optimo:asset:c4g9n3gvx20o", + "rank": 6, + "title": "Intambara ya Israel na Hezbollah: Inzu ya Netanyahu yatewe na drone, avuga ko atarota acika intege", + "href": "https://www.bbc.com/gahuza/articles/c4g9n3gvx20o", + "timestamp": "2024-10-20T04:57:37.098Z" + }, + { + "id": "urn:bbc:optimo:asset:c80rz5pzyr7o", + "rank": 7, + "title": "Yahya Sinwar wamaze imyaka irenga 20 muri gereza zo muri Israel yari muntu ki?", + "href": "https://www.bbc.com/gahuza/articles/c80rz5pzyr7o", + "timestamp": "2024-10-18T07:10:51.994Z" + }, + { + "id": "urn:bbc:optimo:asset:cr54g8pnq78o", + "rank": 8, + "title": "Amatora ya Amerika 2024: Ubushinwa buranyubaha kuko Perezida Xi azi ko ndi 'umusazi' – Trump", + "href": "https://www.bbc.com/gahuza/articles/cr54g8pnq78o", + "timestamp": "2024-10-20T06:18:35.720Z" + }, + { + "id": "urn:bbc:optimo:asset:c1l4361q48jo", + "rank": 9, + "title": "Kenya: Menya uno mugabo yagenywe kuba icegera c'umukuru w'igihugu inyuma y'ibogozwa rya Gacagua", + "href": "https://www.bbc.com/gahuza/articles/c1l4361q48jo", + "timestamp": "2024-10-19T10:59:29.524Z" + }, + { + "id": "urn:bbc:optimo:asset:cwye01kz5pvo", + "rank": 10, + "title": "'Kirazira kwerekana intege nke' – kubera iki abategetsi ba Afrika banyegeza ibijanye n’amagara yabo?", + "href": "https://www.bbc.com/gahuza/articles/cwye01kz5pvo", + "timestamp": "2024-10-20T09:56:38.560Z" + } + ] + }, + "latestMedia": null + } + }, + "contentType": "application/json; charset=utf-8" +} diff --git a/src/app/components/LiteSiteCta/index.tsx b/src/app/components/LiteSiteCta/index.tsx index ad1a84531f2..6f78cb82d38 100644 --- a/src/app/components/LiteSiteCta/index.tsx +++ b/src/app/components/LiteSiteCta/index.tsx @@ -56,7 +56,12 @@ const LiteSiteCta = () => { const id = 'LiteSiteCta'; return ( -
+
{dataSaving} From 3a9e6e0b33f55c4525de2adef99eada0499d16f4 Mon Sep 17 00:00:00 2001 From: Shayne Marc Enzo Ahchoon Date: Tue, 22 Oct 2024 11:33:30 +0100 Subject: [PATCH 08/29] WSTEAM1-1349: Update --- cypress/e2e/pages/articles/testsForLiteOnly.js | 5 ++++- cypress/support/helpers/runTestsForPage.js | 4 +--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/cypress/e2e/pages/articles/testsForLiteOnly.js b/cypress/e2e/pages/articles/testsForLiteOnly.js index 213b8d03783..e355b866b29 100644 --- a/cypress/e2e/pages/articles/testsForLiteOnly.js +++ b/cypress/e2e/pages/articles/testsForLiteOnly.js @@ -3,7 +3,10 @@ export const testsForLiteOnly = ({ service, pageType }) => { describe(`Running testsForLiteOnly for ${service} ${pageType}`, () => { describe('CTA: Lite', () => { it('should render a call to action component', () => { - cy.get('[data-e2e="lite-cta"]').should('be.visible'); + const liteSiteEnabledList = ['gahuza']; + if (liteSiteEnabledList.includes(service)) { + cy.get('[data-e2e="lite-cta"]').should('be.visible'); + } }); }); }); diff --git a/cypress/support/helpers/runTestsForPage.js b/cypress/support/helpers/runTestsForPage.js index f20c7bffa3d..e24c4f7d273 100644 --- a/cypress/support/helpers/runTestsForPage.js +++ b/cypress/support/helpers/runTestsForPage.js @@ -158,9 +158,7 @@ const runTestsForPage = ({ isAmp: true, }; - if (service === 'gahuza') { - testsForLiteOnly(testArgs); - } + testsForLiteOnly(testArgs); } }); }); From d788f46a95df3be7b44f688c8b0bc2846038afb2 Mon Sep 17 00:00:00 2001 From: Shayne Marc Enzo Ahchoon Date: Tue, 22 Oct 2024 11:37:04 +0100 Subject: [PATCH 09/29] WSTEAM1-1349: Update --- src/app/components/LiteSiteCta/index.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/app/components/LiteSiteCta/index.tsx b/src/app/components/LiteSiteCta/index.tsx index 6f78cb82d38..c70fd55aa4b 100644 --- a/src/app/components/LiteSiteCta/index.tsx +++ b/src/app/components/LiteSiteCta/index.tsx @@ -47,10 +47,8 @@ const defaultTranslations = { const LiteSiteCta = () => { const { dir, translations } = useContext(ServiceContext); - // TO DO - this is still taking to lite. const { canonicalLink } = useContext(RequestContext); const isRtl = dir === 'rtl'; - // TO DO - Add real translations const { liteSite = defaultTranslations } = translations; const { disclaimer, backToCanonical, findOutMore, dataSaving } = liteSite; const id = 'LiteSiteCta'; From 01898581406f1c1598c0ecc0d9ce88571206c4b5 Mon Sep 17 00:00:00 2001 From: Shayne Marc Enzo Ahchoon Date: Tue, 22 Oct 2024 13:32:09 +0100 Subject: [PATCH 10/29] WSTEAM1-1349: Update translations --- src/app/components/LiteSiteCta/index.tsx | 15 ++++++++------- src/app/lib/config/services/gahuza.ts | 9 +++++---- src/app/models/types/translations.ts | 6 +++--- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/app/components/LiteSiteCta/index.tsx b/src/app/components/LiteSiteCta/index.tsx index c70fd55aa4b..b12bb99b33a 100644 --- a/src/app/components/LiteSiteCta/index.tsx +++ b/src/app/components/LiteSiteCta/index.tsx @@ -39,9 +39,9 @@ const CtaLink = ({ }; const defaultTranslations = { - disclaimer: `You’re viewing a text-only version of this website that uses less data. View the main version of the website including all images and videos.`, - backToCanonical: 'Take me to the main website', - findOutMore: 'Find out more about this data-saving version', + onboardingMessage: `You’re viewing a text-only version of this website that uses less data. View the main version of the website including all images and videos.`, + toMainSite: 'Take me to the main website', + informationPage: 'Find out more about this data-saving version', dataSaving: 'Data saving version', }; @@ -50,7 +50,8 @@ const LiteSiteCta = () => { const { canonicalLink } = useContext(RequestContext); const isRtl = dir === 'rtl'; const { liteSite = defaultTranslations } = translations; - const { disclaimer, backToCanonical, findOutMore, dataSaving } = liteSite; + const { onboardingMessage, toMainSite, informationPage, dataSaving } = + liteSite; const id = 'LiteSiteCta'; return ( @@ -65,14 +66,14 @@ const LiteSiteCta = () => {
- {disclaimer} + {onboardingMessage} @@ -80,7 +81,7 @@ const LiteSiteCta = () => { diff --git a/src/app/lib/config/services/gahuza.ts b/src/app/lib/config/services/gahuza.ts index 88e876a80ae..5d2e34e1d1c 100644 --- a/src/app/lib/config/services/gahuza.ts +++ b/src/app/lib/config/services/gahuza.ts @@ -74,10 +74,11 @@ export const service: DefaultServiceConfig = { relatedTopics: 'Ibindi bisa n’ibi', navMenuText: 'Imice', liteSite: { - disclaimer: `You’re viewing a text-only version of this website that uses less data. View the main version of the website including all images and videos.`, - backToCanonical: 'Take me to the main website', - findOutMore: 'Find out more about this data-saving version', - dataSaving: 'Data saving', + onboardingMessage: `Uriko ubona ku rubuga aherekana amakuru mu nyandiko gusa, hakoresha uburyo buke. Ja ku rubuga nyamukuru ubone amakuru mu nyandiko iherekejwe n'amasanamu.`, + toMainSite: 'Njana ku rubuga nyamukuru canke aho gusoma gusa', + informationPage: + 'Ibindi vyerekeye ingene urwo rubuga rugutwara uburyo (ama mega) buke', + dataSaving: 'Ahagusaba uburyo(ama mega) buke', }, mediaAssetPage: { mediaPlayer: 'Ibikinwa', diff --git a/src/app/models/types/translations.ts b/src/app/models/types/translations.ts index f2960954f33..bba0e8e764a 100644 --- a/src/app/models/types/translations.ts +++ b/src/app/models/types/translations.ts @@ -20,9 +20,9 @@ export interface Translations { relatedTopics?: string; navMenuText: string; liteSite?: { - disclaimer: string; - backToCanonical: string; - findOutMore: string; + onboardingMessage: string; + toMainSite: string; + informationPage: string; dataSaving: string; }; mediaAssetPage: { From 7b1ac14247408972d27398ad29db753c16c90a7e Mon Sep 17 00:00:00 2001 From: Shayne Marc Enzo Ahchoon Date: Tue, 22 Oct 2024 14:09:06 +0100 Subject: [PATCH 11/29] WSTEAM1-1349: Add meta tags --- src/app/components/LiteSiteCta/index.tsx | 23 +++++++++---------- .../components/LiteSiteCta/liteSiteConfig.tsx | 10 ++++++++ src/app/components/Metadata/index.test.tsx | 17 ++++++++++++++ src/app/components/Metadata/index.tsx | 13 ++++++++++- 4 files changed, 50 insertions(+), 13 deletions(-) create mode 100644 src/app/components/LiteSiteCta/liteSiteConfig.tsx diff --git a/src/app/components/LiteSiteCta/index.tsx b/src/app/components/LiteSiteCta/index.tsx index b12bb99b33a..e919f08cb08 100644 --- a/src/app/components/LiteSiteCta/index.tsx +++ b/src/app/components/LiteSiteCta/index.tsx @@ -8,12 +8,14 @@ import { ServiceContext } from '../../contexts/ServiceContext'; import { RequestContext } from '../../contexts/RequestContext'; import VisuallyHiddenText from '../VisuallyHiddenText'; import styles from './index.styles'; +import { defaultTranslations } from './liteSiteConfig'; type CtaLinkProps = { isRtl: boolean; href: string; text: string; fontVariant?: string; + showChevron?: boolean; className?: string; }; @@ -22,29 +24,25 @@ const CtaLink = ({ href, text, fontVariant = 'sansRegular', + showChevron = false, className, }: CtaLinkProps) => { + const chevron = isRtl ? ( + + ) : ( + + ); + return ( {text} - {isRtl ? ( - - ) : ( - - )} + {showChevron && chevron} ); }; -const defaultTranslations = { - onboardingMessage: `You’re viewing a text-only version of this website that uses less data. View the main version of the website including all images and videos.`, - toMainSite: 'Take me to the main website', - informationPage: 'Find out more about this data-saving version', - dataSaving: 'Data saving version', -}; - const LiteSiteCta = () => { const { dir, translations } = useContext(ServiceContext); const { canonicalLink } = useContext(RequestContext); @@ -75,6 +73,7 @@ const LiteSiteCta = () => { href={canonicalLink} text={toMainSite} css={styles.topLinkSpacing} + showChevron /> diff --git a/src/app/components/LiteSiteCta/liteSiteConfig.tsx b/src/app/components/LiteSiteCta/liteSiteConfig.tsx new file mode 100644 index 00000000000..2d659244a97 --- /dev/null +++ b/src/app/components/LiteSiteCta/liteSiteConfig.tsx @@ -0,0 +1,10 @@ +import { Services } from '#app/models/types/global'; + +export const defaultTranslations = { + onboardingMessage: `You’re viewing a text-only version of this website that uses less data. View the main version of the website including all images and videos.`, + toMainSite: 'Take me to the main website', + informationPage: 'Find out more about this data-saving version', + dataSaving: 'Data saving version', +}; + +export const allowedServices: Services[] = ['gahuza']; diff --git a/src/app/components/Metadata/index.test.tsx b/src/app/components/Metadata/index.test.tsx index f6c99dadcca..7d19e3001f8 100644 --- a/src/app/components/Metadata/index.test.tsx +++ b/src/app/components/Metadata/index.test.tsx @@ -58,6 +58,7 @@ interface MetadataWithContextProps extends MetadataProps { id?: string | null; pathname: string; isUK?: boolean; + isLite?: boolean; } const MetadataWithContext = ({ @@ -81,6 +82,7 @@ const MetadataWithContext = ({ hasAppleItunesAppBanner, hasAmpPage, isUK = false, + isLite = false, }: MetadataWithContextProps) => ( { }); }); +it('should render the lite page title', async () => { + render(); + + await waitFor(() => { + const actual = document.querySelector('head > title')?.innerHTML; + + expect(actual).toEqual( + 'Article Headline for SEO - Ahagusaba uburyo(ama mega) buke: BBC News Gahuza', + ); + }); +}); + it('should render the canonical link', async () => { render(); diff --git a/src/app/components/Metadata/index.tsx b/src/app/components/Metadata/index.tsx index 9f664c73419..c7c6358cc7b 100644 --- a/src/app/components/Metadata/index.tsx +++ b/src/app/components/Metadata/index.tsx @@ -12,6 +12,10 @@ import { renderAppleItunesApp, } from './utils'; import { IconSizes, MetadataProps, Tag } from './types'; +import { + defaultTranslations, + allowedServices, +} from '../LiteSiteCta/liteSiteConfig'; const ENGLISH_SERVICES = ['news', 'sport', 'ws']; const FACEBOOK_APP_ID = '1609039196070050'; @@ -62,6 +66,7 @@ const MetadataContainer = ({ ampNonUkLink, pathname, isUK, + isLite, } = useContext(RequestContext); const { @@ -76,6 +81,7 @@ const MetadataContainer = ({ twitterSite, iTunesAppId, googleSiteVerification, + translations, } = useContext(ServiceContext); const { palette: { BRAND_BACKGROUND }, @@ -122,6 +128,11 @@ const MetadataContainer = ({ ...(isAmp && { amp: '' }), // empty value as this makes Helmet render 'amp' as per https://www.ampproject.org/docs/fundamentals/spec#ampd }; + const { liteSite = defaultTranslations } = translations; + const { dataSaving } = liteSite; + + const showLiteTitle = isLite && allowedServices.includes(service); + const litePageTitle = `${title} - ${dataSaving}: ${brandName}`; const pageTitle = `${title} - ${brandName}`; const socialTitle = `${socialHeadline || title} - ${brandName}`; @@ -147,7 +158,7 @@ const MetadataContainer = ({ name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" /> - {pageTitle} + {showLiteTitle ? litePageTitle : pageTitle} {isEnglishService && alternateLinksEnglishSites.map(renderAlternateLinks)} {isoLang && From fbbdefd1dabda5edc4b3148ca209e9cb41740952 Mon Sep 17 00:00:00 2001 From: Shayne Marc Enzo Ahchoon Date: Tue, 22 Oct 2024 14:13:18 +0100 Subject: [PATCH 12/29] WSTEAM1-1349: Update --- src/app/components/LiteSiteCta/liteSiteConfig.tsx | 2 +- src/app/components/Metadata/index.tsx | 4 ++-- src/app/legacy/containers/Header/index.jsx | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/app/components/LiteSiteCta/liteSiteConfig.tsx b/src/app/components/LiteSiteCta/liteSiteConfig.tsx index 2d659244a97..a87f5025449 100644 --- a/src/app/components/LiteSiteCta/liteSiteConfig.tsx +++ b/src/app/components/LiteSiteCta/liteSiteConfig.tsx @@ -7,4 +7,4 @@ export const defaultTranslations = { dataSaving: 'Data saving version', }; -export const allowedServices: Services[] = ['gahuza']; +export const liteEnabledServices: Services[] = ['gahuza']; diff --git a/src/app/components/Metadata/index.tsx b/src/app/components/Metadata/index.tsx index c7c6358cc7b..cff2c56aceb 100644 --- a/src/app/components/Metadata/index.tsx +++ b/src/app/components/Metadata/index.tsx @@ -14,7 +14,7 @@ import { import { IconSizes, MetadataProps, Tag } from './types'; import { defaultTranslations, - allowedServices, + liteEnabledServices, } from '../LiteSiteCta/liteSiteConfig'; const ENGLISH_SERVICES = ['news', 'sport', 'ws']; @@ -131,7 +131,7 @@ const MetadataContainer = ({ const { liteSite = defaultTranslations } = translations; const { dataSaving } = liteSite; - const showLiteTitle = isLite && allowedServices.includes(service); + const showLiteTitle = isLite && liteEnabledServices.includes(service); const litePageTitle = `${title} - ${dataSaving}: ${brandName}`; const pageTitle = `${title} - ${brandName}`; const socialTitle = `${socialHeadline || title} - ${brandName}`; diff --git a/src/app/legacy/containers/Header/index.jsx b/src/app/legacy/containers/Header/index.jsx index a1731d5e26a..8c8aa16a3ca 100644 --- a/src/app/legacy/containers/Header/index.jsx +++ b/src/app/legacy/containers/Header/index.jsx @@ -5,6 +5,7 @@ import useOperaMiniDetection from '#hooks/useOperaMiniDetection'; import ScriptLink from '#app/components/Header/ScriptLink'; import { ARTICLE_PAGE } from '#app/routes/utils/pageTypes'; import LiteSiteCta from '#app/components/LiteSiteCta'; +import { liteEnabledServices } from '#app/components/LiteSiteCta/liteSiteConfig'; import { ServiceContext } from '../../../contexts/ServiceContext'; import ConsentBanner from '../ConsentBanner'; import NavigationContainer from '../Navigation'; @@ -80,8 +81,7 @@ const HeaderContainer = ({ } } - const liteSiteServices = ['gahuza']; - const renderLiteSiteCTA = isLite && liteSiteServices.includes(service); + const renderLiteSiteCTA = isLite && liteEnabledServices.includes(service); if (isApp) return null; From df8bf7198dd247b5d05eda1c58fa184553fdfbda Mon Sep 17 00:00:00 2001 From: Shayne Marc Enzo Ahchoon Date: Tue, 22 Oct 2024 14:48:54 +0100 Subject: [PATCH 13/29] WSTEAM1-1349: Update --- cypress/e2e/pages/articles/testsForLiteOnly.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cypress/e2e/pages/articles/testsForLiteOnly.js b/cypress/e2e/pages/articles/testsForLiteOnly.js index e355b866b29..255cfe60cb6 100644 --- a/cypress/e2e/pages/articles/testsForLiteOnly.js +++ b/cypress/e2e/pages/articles/testsForLiteOnly.js @@ -1,10 +1,11 @@ /* eslint-disable import/prefer-default-export */ +import { liteEnabledServices } from '#app/components/LiteSiteCta/liteSiteConfig'; + export const testsForLiteOnly = ({ service, pageType }) => { describe(`Running testsForLiteOnly for ${service} ${pageType}`, () => { describe('CTA: Lite', () => { it('should render a call to action component', () => { - const liteSiteEnabledList = ['gahuza']; - if (liteSiteEnabledList.includes(service)) { + if (liteEnabledServices.includes(service)) { cy.get('[data-e2e="lite-cta"]').should('be.visible'); } }); From 72c199b2e45437e1da490518c659505626633fa0 Mon Sep 17 00:00:00 2001 From: Shayne Marc Enzo Ahchoon Date: Tue, 22 Oct 2024 15:22:27 +0100 Subject: [PATCH 14/29] WSTEAM1-1349: Add changes --- src/app/components/LiteSiteCta/index.tsx | 10 +++++++++- .../Renderers/litePageTransforms/index.test.ts | 14 ++++++++++++++ .../litePageTransforms/transformAnchorTags.ts | 4 +++- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/app/components/LiteSiteCta/index.tsx b/src/app/components/LiteSiteCta/index.tsx index e919f08cb08..a48d7cb42fa 100644 --- a/src/app/components/LiteSiteCta/index.tsx +++ b/src/app/components/LiteSiteCta/index.tsx @@ -16,6 +16,7 @@ type CtaLinkProps = { text: string; fontVariant?: string; showChevron?: boolean; + ignoreLiteExtension?: boolean; className?: string; }; @@ -25,6 +26,7 @@ const CtaLink = ({ text, fontVariant = 'sansRegular', showChevron = false, + ignoreLiteExtension = false, className, }: CtaLinkProps) => { const chevron = isRtl ? ( @@ -34,7 +36,12 @@ const CtaLink = ({ ); return ( - + {text} @@ -73,6 +80,7 @@ const LiteSiteCta = () => { href={canonicalLink} text={toMainSite} css={styles.topLinkSpacing} + ignoreLiteExtension showChevron /> diff --git a/src/server/Document/Renderers/litePageTransforms/index.test.ts b/src/server/Document/Renderers/litePageTransforms/index.test.ts index b97cc83fc3e..7fa1612ef4c 100644 --- a/src/server/Document/Renderers/litePageTransforms/index.test.ts +++ b/src/server/Document/Renderers/litePageTransforms/index.test.ts @@ -48,6 +48,20 @@ describe('litePageTransforms', () => { expect(modifiedHtml).toEqual(originalHtml); }); + it('should not append .lite suffix when the attribute "data-ignore-lite" is present', () => { + const originalHtml = ` + News + News + News + News + News + `; + + const modifiedHtml = litePageTransforms(originalHtml); + + expect(modifiedHtml).toEqual(originalHtml); + }); + it('should not append .lite suffix when no anchor tags are present', () => { const originalHtml = '

I am a paragraph

'; diff --git a/src/server/Document/Renderers/litePageTransforms/transformAnchorTags.ts b/src/server/Document/Renderers/litePageTransforms/transformAnchorTags.ts index f168a818d07..d4aa9649494 100644 --- a/src/server/Document/Renderers/litePageTransforms/transformAnchorTags.ts +++ b/src/server/Document/Renderers/litePageTransforms/transformAnchorTags.ts @@ -44,7 +44,9 @@ export default (html: string) => { anchorTags.forEach(tag => { const href = tag?.match(/href="([^"]*)"/)?.[1]; - if (href && isValidHref(href)) { + const ignoreFlag = tag?.includes('data-ignore-lite="true"'); + + if (href && isValidHref(href) && !ignoreFlag) { modifiedHtml = modifiedHtml.replace( tag, tag.replace(href, `${href}.lite`), From 3f9c05d5289ca6768f3932ab9c107b2d30acfa2a Mon Sep 17 00:00:00 2001 From: Isabella Mitchell Date: Wed, 23 Oct 2024 12:35:14 +0100 Subject: [PATCH 15/29] WSTEAM1-1349: Adds Gahuza lite site information link --- src/app/components/LiteSiteCta/index.tsx | 11 ++++++++--- src/app/components/LiteSiteCta/liteSiteConfig.tsx | 1 + src/app/components/Metadata/index.test.tsx | 2 +- src/app/lib/config/services/gahuza.ts | 3 ++- src/app/models/types/translations.ts | 1 + 5 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/app/components/LiteSiteCta/index.tsx b/src/app/components/LiteSiteCta/index.tsx index a48d7cb42fa..5ba69a437de 100644 --- a/src/app/components/LiteSiteCta/index.tsx +++ b/src/app/components/LiteSiteCta/index.tsx @@ -55,8 +55,13 @@ const LiteSiteCta = () => { const { canonicalLink } = useContext(RequestContext); const isRtl = dir === 'rtl'; const { liteSite = defaultTranslations } = translations; - const { onboardingMessage, toMainSite, informationPage, dataSaving } = - liteSite; + const { + onboardingMessage, + toMainSite, + informationPage, + informationPageLink, + dataSaving, + } = liteSite; const id = 'LiteSiteCta'; return ( @@ -87,7 +92,7 @@ const LiteSiteCta = () => { diff --git a/src/app/components/LiteSiteCta/liteSiteConfig.tsx b/src/app/components/LiteSiteCta/liteSiteConfig.tsx index a87f5025449..5176d756e95 100644 --- a/src/app/components/LiteSiteCta/liteSiteConfig.tsx +++ b/src/app/components/LiteSiteCta/liteSiteConfig.tsx @@ -4,6 +4,7 @@ export const defaultTranslations = { onboardingMessage: `You’re viewing a text-only version of this website that uses less data. View the main version of the website including all images and videos.`, toMainSite: 'Take me to the main website', informationPage: 'Find out more about this data-saving version', + informationPageLink: '#', dataSaving: 'Data saving version', }; diff --git a/src/app/components/Metadata/index.test.tsx b/src/app/components/Metadata/index.test.tsx index 7d19e3001f8..e2bf14d4cc2 100644 --- a/src/app/components/Metadata/index.test.tsx +++ b/src/app/components/Metadata/index.test.tsx @@ -181,7 +181,7 @@ it('should render the lite page title', async () => { const actual = document.querySelector('head > title')?.innerHTML; expect(actual).toEqual( - 'Article Headline for SEO - Ahagusaba uburyo(ama mega) buke: BBC News Gahuza', + 'Article Headline for SEO - Ahagusaba uburyo (ama mega) buke: BBC News Gahuza', ); }); }); diff --git a/src/app/lib/config/services/gahuza.ts b/src/app/lib/config/services/gahuza.ts index 5d2e34e1d1c..d509573ebdd 100644 --- a/src/app/lib/config/services/gahuza.ts +++ b/src/app/lib/config/services/gahuza.ts @@ -78,7 +78,8 @@ export const service: DefaultServiceConfig = { toMainSite: 'Njana ku rubuga nyamukuru canke aho gusoma gusa', informationPage: 'Ibindi vyerekeye ingene urwo rubuga rugutwara uburyo (ama mega) buke', - dataSaving: 'Ahagusaba uburyo(ama mega) buke', + informationPageLink: 'https://www.bbc.com/gahuza/articles/cn7y7pvem0vo', + dataSaving: 'Ahagusaba uburyo (ama mega) buke', }, mediaAssetPage: { mediaPlayer: 'Ibikinwa', diff --git a/src/app/models/types/translations.ts b/src/app/models/types/translations.ts index bba0e8e764a..570f05c47f5 100644 --- a/src/app/models/types/translations.ts +++ b/src/app/models/types/translations.ts @@ -23,6 +23,7 @@ export interface Translations { onboardingMessage: string; toMainSite: string; informationPage: string; + informationPageLink: string; dataSaving: string; }; mediaAssetPage: { From 5b41330fb13a2fb33c3d26a4514aca816f181bfe Mon Sep 17 00:00:00 2001 From: Isabella Mitchell Date: Wed, 23 Oct 2024 12:35:45 +0100 Subject: [PATCH 16/29] WSTEAM1-1349: Adds width height to svg to ensure increase with browser font settings --- src/app/components/LiteSiteCta/index.styles.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/app/components/LiteSiteCta/index.styles.tsx b/src/app/components/LiteSiteCta/index.styles.tsx index d51a6a5b1e4..5d27368e6bd 100644 --- a/src/app/components/LiteSiteCta/index.styles.tsx +++ b/src/app/components/LiteSiteCta/index.styles.tsx @@ -26,6 +26,8 @@ export default { fill: 'currentColor', marginInlineStart: `${spacings.HALF}rem`, verticalAlign: 'middle', + width: `${pixelsToRem(14)}rem`, + height: `${pixelsToRem(14)}rem`, 'a:visited &': { color: palette.METAL, }, From cd2dad45687a93ce4d6e2880ba1070ceecf4e724 Mon Sep 17 00:00:00 2001 From: Isabella Mitchell Date: Wed, 23 Oct 2024 12:36:04 +0100 Subject: [PATCH 17/29] WSTEAM1-1349: Rewords tests --- src/app/components/LiteSiteCta/index.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/components/LiteSiteCta/index.test.tsx b/src/app/components/LiteSiteCta/index.test.tsx index 7ffdde8ddc2..53d3879aaec 100644 --- a/src/app/components/LiteSiteCta/index.test.tsx +++ b/src/app/components/LiteSiteCta/index.test.tsx @@ -3,7 +3,7 @@ import { render } from '../react-testing-library-with-providers'; import LiteSiteCta from '.'; describe('LiteSiteCTA', () => { - it('Should have a strong element with page identifier.', () => { + it('Should have a strong element with lite site identifier.', () => { const { container } = render(); const strongText = container.querySelector('strong'); expect(strongText?.innerHTML).toBe('Data saving version'); From f142a6ac1ff53ad85b96781041cf42ddb8267231 Mon Sep 17 00:00:00 2001 From: Isabella Mitchell Date: Wed, 23 Oct 2024 12:48:34 +0100 Subject: [PATCH 18/29] WSTEAM1-1349: Removes unnecessary span --- src/app/components/LiteSiteCta/index.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/app/components/LiteSiteCta/index.tsx b/src/app/components/LiteSiteCta/index.tsx index 5ba69a437de..0b6d4a79b12 100644 --- a/src/app/components/LiteSiteCta/index.tsx +++ b/src/app/components/LiteSiteCta/index.tsx @@ -75,9 +75,7 @@ const LiteSiteCta = () => { {dataSaving}
- - {onboardingMessage} - + {onboardingMessage} Date: Wed, 23 Oct 2024 13:01:20 +0100 Subject: [PATCH 19/29] WSTEAM1-1349: Adds small margin under message to permit focus indicator --- src/app/components/LiteSiteCta/index.styles.tsx | 4 ++++ src/app/components/LiteSiteCta/index.tsx | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/app/components/LiteSiteCta/index.styles.tsx b/src/app/components/LiteSiteCta/index.styles.tsx index 5d27368e6bd..be7c36f0807 100644 --- a/src/app/components/LiteSiteCta/index.styles.tsx +++ b/src/app/components/LiteSiteCta/index.styles.tsx @@ -20,6 +20,10 @@ export default { margin: `0 auto`, }, }), + message: ({ spacings }: Theme) => + css({ + marginBottom: `${spacings.HALF}rem`, + }), chevron: ({ palette, spacings }: Theme) => css({ color: palette.GREY_10, diff --git a/src/app/components/LiteSiteCta/index.tsx b/src/app/components/LiteSiteCta/index.tsx index 0b6d4a79b12..e56f744534d 100644 --- a/src/app/components/LiteSiteCta/index.tsx +++ b/src/app/components/LiteSiteCta/index.tsx @@ -75,7 +75,9 @@ const LiteSiteCta = () => { {dataSaving}
- {onboardingMessage} + + {onboardingMessage} + Date: Thu, 24 Oct 2024 12:03:36 +0100 Subject: [PATCH 20/29] WSTEAM1-1349: Set up .lite Integration tests --- jest.config.js | 24 ++++++- src/integration/common/index.js | 2 + src/integration/common/liteSite.lite.js | 13 ++++ src/integration/integrationTestEnvironment.js | 6 +- .../__snapshots__/lite.test.js.snap | 68 +++++++++++++++++++ .../articles/gahuzaLiteSite/lite.test.js | 12 ++++ .../utils/getPageTypeFromTestPath.test.js | 9 +++ 7 files changed, 128 insertions(+), 6 deletions(-) create mode 100644 src/integration/common/liteSite.lite.js create mode 100644 src/integration/pages/articles/gahuzaLiteSite/__snapshots__/lite.test.js.snap create mode 100644 src/integration/pages/articles/gahuzaLiteSite/lite.test.js diff --git a/jest.config.js b/jest.config.js index 91f53c1d196..c891fe5a098 100644 --- a/jest.config.js +++ b/jest.config.js @@ -32,7 +32,8 @@ const ampIntegrationTests = { platform: 'amp', }, setupFilesAfterEnv: ['./src/testHelpers/setupTests.js'], - testMatch: ['**/src/integration/!(utils)/**/*[^.canonical].test.js'], + testMatch: ['**/src/integration/!(utils)/**/*.test.js'], + testPathIgnorePatterns: ['.*lite\\.test\\.js$', '.*canonical\\.test\\.js$'], }; const canonicalIntegrationTests = { @@ -42,11 +43,28 @@ const canonicalIntegrationTests = { platform: 'canonical', }, setupFilesAfterEnv: ['./src/testHelpers/setupTests.js'], - testMatch: ['**/src/integration/!(utils)/**/*[^.amp].test.js'], + testMatch: ['**/src/integration/!(utils)/**/*.test.js'], + testPathIgnorePatterns: ['.*lite\\.test\\.js$', '.*amp\\.test\\.js$'], +}; + +const liteIntegrationTests = { + displayName: 'Integration Tests - Lite', + testEnvironment: './src/integration/integrationTestEnvironment.js', + testEnvironmentOptions: { + platform: 'lite', + }, + setupFilesAfterEnv: ['./src/testHelpers/setupTests.js'], + testMatch: ['**/src/integration/!(utils)/**/*.test.js'], + testPathIgnorePatterns: ['.*canonical\\.test\\.js$', '.*amp\\.test\\.js$'], }; module.exports = { - projects: [unitTests, ampIntegrationTests, canonicalIntegrationTests], + projects: [ + unitTests, + ampIntegrationTests, + canonicalIntegrationTests, + liteIntegrationTests, + ], reporters: [ 'default', [ diff --git a/src/integration/common/index.js b/src/integration/common/index.js index bf779c49beb..dfd949e9fe3 100644 --- a/src/integration/common/index.js +++ b/src/integration/common/index.js @@ -27,6 +27,7 @@ import runCanonicalEmbedHtmlTests from './embedHtml.canonical'; import runAmpEmbedHtmlTests from './embedHtml.amp'; import runEmbedImagesTests from './embedImages'; import runAmpIframeTests from './ampIframe.amp'; +import runLiteSiteTests from './liteSite.lite'; const runCommonCrossPlatformTests = service => { runA11yTests(); @@ -67,4 +68,5 @@ export { runAmpEmbedHtmlTests, runEmbedImagesTests, runAmpIframeTests, + runLiteSiteTests, }; diff --git a/src/integration/common/liteSite.lite.js b/src/integration/common/liteSite.lite.js new file mode 100644 index 00000000000..0345c53cfa1 --- /dev/null +++ b/src/integration/common/liteSite.lite.js @@ -0,0 +1,13 @@ +export default () => { + describe('Lite Site Cta', () => { + const liteSiteCta = document.querySelector("section[data-e2e='lite-cta']"); + + it('should be in the document', () => { + expect(liteSiteCta).toBeInTheDocument(); + }); + + it('should match snapshot', () => { + expect(liteSiteCta).toMatchSnapshot(); + }); + }); +}; diff --git a/src/integration/integrationTestEnvironment.js b/src/integration/integrationTestEnvironment.js index 20bb0134447..9cf33fa4cde 100644 --- a/src/integration/integrationTestEnvironment.js +++ b/src/integration/integrationTestEnvironment.js @@ -18,14 +18,14 @@ class IntegrationTestEnvironment extends JsdomEnvironment { } = context.docblockPragmas; const pageType = getPageTypeFromTestPath(context.testPath); + const platformForPath = platform === 'canonical' ? '' : `.${platform}`; + this.pageType = camelCaseToText(pageType); this.service = service; this.runScripts = runScripts === 'true'; this.displayAds = displayAds === 'true'; this.isInUK = isInUK; - this.url = `http://localhost:7080${pathname}${ - platform === 'amp' ? '.amp' : '' - }`; + this.url = `http://localhost:7080${pathname}${platformForPath}`; } async setup() { diff --git a/src/integration/pages/articles/gahuzaLiteSite/__snapshots__/lite.test.js.snap b/src/integration/pages/articles/gahuzaLiteSite/__snapshots__/lite.test.js.snap new file mode 100644 index 00000000000..7ba50775b78 --- /dev/null +++ b/src/integration/pages/articles/gahuzaLiteSite/__snapshots__/lite.test.js.snap @@ -0,0 +1,68 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Lite Site Articles Lite Site Cta should match snapshot 1`] = ` +
+ +
+

+ Uriko ubona ku rubuga aherekana amakuru mu nyandiko gusa, hakoresha uburyo buke. Ja ku rubuga nyamukuru ubone amakuru mu nyandiko iherekejwe n'amasanamu. +

+

+ + + Njana ku rubuga nyamukuru canke aho gusoma gusa + + + +

+

+ + + Ibindi vyerekeye ingene urwo rubuga rugutwara uburyo (ama mega) buke + + +

+
+
+`; diff --git a/src/integration/pages/articles/gahuzaLiteSite/lite.test.js b/src/integration/pages/articles/gahuzaLiteSite/lite.test.js new file mode 100644 index 00000000000..bf2f38080cd --- /dev/null +++ b/src/integration/pages/articles/gahuzaLiteSite/lite.test.js @@ -0,0 +1,12 @@ +/** + * @service gahuza + * @pathname /gahuza/articles/cey23zx8wx8o + */ + +import { runLiteSiteTests } from '../../../common'; + +describe('Lite Site', () => { + describe(pageType, () => { + runLiteSiteTests(); + }); +}); diff --git a/src/integration/utils/getPageTypeFromTestPath.test.js b/src/integration/utils/getPageTypeFromTestPath.test.js index ad7047d46fa..9021b384697 100644 --- a/src/integration/utils/getPageTypeFromTestPath.test.js +++ b/src/integration/utils/getPageTypeFromTestPath.test.js @@ -17,3 +17,12 @@ it('should get the page type from integration test paths for canonical', () => { expect(actual).toEqual(expected); }); + +it('should get the page type from integration test paths for lite', () => { + const actual = getPageTypeFromTestPath( + 'src/integration/pages/articles/pidgin/canonical.test.js', + ); + const expected = 'articles'; + + expect(actual).toEqual(expected); +}); From 49bc1d6d8a07bc19626e4b3724611c702c0d1db6 Mon Sep 17 00:00:00 2001 From: Isabella Mitchell Date: Thu, 24 Oct 2024 13:48:18 +0100 Subject: [PATCH 21/29] WSTEAM1-1349: Replace visuallyHiddenText with Hidden Text element --- src/app/components/LiteSiteCta/index.test.tsx | 3 ++- src/app/components/LiteSiteCta/index.tsx | 5 ++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app/components/LiteSiteCta/index.test.tsx b/src/app/components/LiteSiteCta/index.test.tsx index 53d3879aaec..3bbe358e63a 100644 --- a/src/app/components/LiteSiteCta/index.test.tsx +++ b/src/app/components/LiteSiteCta/index.test.tsx @@ -3,10 +3,11 @@ import { render } from '../react-testing-library-with-providers'; import LiteSiteCta from '.'; describe('LiteSiteCTA', () => { - it('Should have a strong element with lite site identifier.', () => { + it('Should have a hidden strong element with lite site identifier.', () => { const { container } = render(); const strongText = container.querySelector('strong'); expect(strongText?.innerHTML).toBe('Data saving version'); + expect(strongText).toHaveAttribute('hidden'); }); it('Should have a CTA link to the main site.', () => { const { container } = render(); diff --git a/src/app/components/LiteSiteCta/index.tsx b/src/app/components/LiteSiteCta/index.tsx index e56f744534d..c626519e865 100644 --- a/src/app/components/LiteSiteCta/index.tsx +++ b/src/app/components/LiteSiteCta/index.tsx @@ -6,7 +6,6 @@ import Text from '../Text'; import { LeftChevron, RightChevron } from '../icons'; import { ServiceContext } from '../../contexts/ServiceContext'; import { RequestContext } from '../../contexts/RequestContext'; -import VisuallyHiddenText from '../VisuallyHiddenText'; import styles from './index.styles'; import { defaultTranslations } from './liteSiteConfig'; @@ -71,9 +70,9 @@ const LiteSiteCta = () => { aria-labelledby={id} css={styles.outerContainer} > - + +
{onboardingMessage} From 026b6ebcbee923820bac3f880ec6ba07f78a526d Mon Sep 17 00:00:00 2001 From: Isabella Mitchell Date: Thu, 24 Oct 2024 15:08:03 +0100 Subject: [PATCH 22/29] WSTEAM1-1349: Adds e2e coverage for link journeys --- .../e2e/pages/articles/testsForLiteOnly.js | 25 +++++++++++++++++++ src/app/components/LiteSiteCta/index.tsx | 4 +-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/cypress/e2e/pages/articles/testsForLiteOnly.js b/cypress/e2e/pages/articles/testsForLiteOnly.js index 255cfe60cb6..911fc0dbe69 100644 --- a/cypress/e2e/pages/articles/testsForLiteOnly.js +++ b/cypress/e2e/pages/articles/testsForLiteOnly.js @@ -9,6 +9,31 @@ export const testsForLiteOnly = ({ service, pageType }) => { cy.get('[data-e2e="lite-cta"]').should('be.visible'); } }); + + it('Clicking the link to the main site should navigate to canonical site', () => { + cy.get('[data-e2e="to-main-site"]').within(() => { + cy.get('a') + .should('have.attr', 'href') + .then($href => { + cy.get('a').click(); + cy.url().should('eq', $href).should('not.contain', '.lite'); + }); + }); + cy.go('back'); + }); + + it('Clicking the link to the Information page should navigate to lite site', () => { + cy.get('[data-e2e="information-page"]').within(() => { + cy.get('a') + .should('have.attr', 'href') + .then($href => { + cy.get('a').click(); + cy.url().should('eq', $href); + }) + .and('contain', '.lite'); + }); + cy.go('back'); + }); }); }); }; diff --git a/src/app/components/LiteSiteCta/index.tsx b/src/app/components/LiteSiteCta/index.tsx index c626519e865..8a06d3207e9 100644 --- a/src/app/components/LiteSiteCta/index.tsx +++ b/src/app/components/LiteSiteCta/index.tsx @@ -77,7 +77,7 @@ const LiteSiteCta = () => { {onboardingMessage} - + { showChevron /> - + Date: Thu, 24 Oct 2024 15:14:16 +0100 Subject: [PATCH 23/29] WSTEAM1-1349: Update snapshot --- .../articles/gahuzaLiteSite/__snapshots__/lite.test.js.snap | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/integration/pages/articles/gahuzaLiteSite/__snapshots__/lite.test.js.snap b/src/integration/pages/articles/gahuzaLiteSite/__snapshots__/lite.test.js.snap index 7ba50775b78..023bc7a06aa 100644 --- a/src/integration/pages/articles/gahuzaLiteSite/__snapshots__/lite.test.js.snap +++ b/src/integration/pages/articles/gahuzaLiteSite/__snapshots__/lite.test.js.snap @@ -8,8 +8,8 @@ exports[`Lite Site Articles Lite Site Cta should match snapshot 1`] = ` role="region" >

Uriko ubona ku rubuga aherekana amakuru mu nyandiko gusa, hakoresha uburyo buke. Ja ku rubuga nyamukuru ubone amakuru mu nyandiko iherekejwe n'amasanamu.

@@ -27,7 +27,7 @@ exports[`Lite Site Articles Lite Site Cta should match snapshot 1`] = ` data-e2e="to-main-site" >
@@ -38,7 +38,7 @@ exports[`Lite Site Articles Lite Site Cta should match snapshot 1`] = ` Date: Wed, 30 Oct 2024 10:17:03 +0000 Subject: [PATCH 28/29] adds metadata.json for litesitecta --- src/app/components/LiteSiteCta/metadata.json | 28 ++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/app/components/LiteSiteCta/metadata.json diff --git a/src/app/components/LiteSiteCta/metadata.json b/src/app/components/LiteSiteCta/metadata.json new file mode 100644 index 00000000000..7ab7de02076 --- /dev/null +++ b/src/app/components/LiteSiteCta/metadata.json @@ -0,0 +1,28 @@ +{ + "lastUpdated": { + "day": 30, + "month": "October", + "year": 2024 + }, + "uxAccessibilityDoc": { + "done": true, + "reference": { + "url": "https://paper.dropbox.com/doc/WS-litecanonical-site-CTA-component-Screenreader-UX--CZmjhKa9j7EO3OuW2MDiev66Ag-iUblmHKieJBH6YMemel3M", + "label": "Documented screen reader UX" + } + }, + "acceptanceCriteria": { + "done": true, + "reference": { + "url": "https://paper.dropbox.com/doc/Lite-site-Accessibility-acceptance-criteria--CYt13VQbmyR63Z5ZHFt6uQXBAg-xyTULgByamiYbQSOrzd9h", + "label": "Accessibility acceptance criteria" + } + }, + "swarm": { + "done": true, + "reference": { + "url": "https://docs.google.com/spreadsheets/d/1Czod6SFI4utFaSoG5twfaiLkLgieMSTD8ohvJafQe1k/edit?usp=sharing", + "label": "Accessibility swarm results" + } + } +} From f751cab3bd42939941584ace16d62e1a8dda911d Mon Sep 17 00:00:00 2001 From: HarveyPeachey Date: Wed, 30 Oct 2024 11:06:25 +0000 Subject: [PATCH 29/29] adds readme and metadata to story for litecta --- src/app/components/LiteSiteCta/README.md | 3 +++ src/app/components/LiteSiteCta/index.stories.tsx | 6 ++++++ 2 files changed, 9 insertions(+) create mode 100644 src/app/components/LiteSiteCta/README.md diff --git a/src/app/components/LiteSiteCta/README.md b/src/app/components/LiteSiteCta/README.md new file mode 100644 index 00000000000..d931cfd53a3 --- /dev/null +++ b/src/app/components/LiteSiteCta/README.md @@ -0,0 +1,3 @@ +## Description + +This component renders a call to action for the Lite version of Simorgh, which will direct users back to the canonical page and give an explanatory page for more information about the Lite version. \ No newline at end of file diff --git a/src/app/components/LiteSiteCta/index.stories.tsx b/src/app/components/LiteSiteCta/index.stories.tsx index f9283c57891..fc1f9a957b1 100644 --- a/src/app/components/LiteSiteCta/index.stories.tsx +++ b/src/app/components/LiteSiteCta/index.stories.tsx @@ -1,9 +1,15 @@ import React from 'react'; import LiteSiteCTA from '.'; +import metadata from './metadata.json'; +import readme from './README.md'; export const Component = () => ; export default { title: 'Components/LiteSiteCTA', Component, + parameters: { + metadata, + docs: { readme }, + }, };