Skip to content

Conversation

@LukasFrm
Copy link
Contributor

@LukasFrm LukasFrm commented Jan 7, 2026

Resolves JIRA: https://bbc.atlassian.net/browse/WS-1377

Summary

Adds support for the SpeakableSpecification schema to the LinkedData component fo Hindi:

  • On-Demand TV
  • On-Demand Audio
  • Most Read pages.

This enables tools like Google Assistant or AI Overviews to identify which parts of the page are appropriate for text-to-speech, improving accessibility and discoverability.

Speakable support is temporarily limited to Hindi service only - other services to be added in the future.

Code changes

  • Added SpeakableSpecification schema support to the LinkedData component for the Hindi service.
  • Updated and refactored related tests to match new logic.

Developer Checklist

  • UX
    • UX Criteria met (visual UX & screenreader UX)
  • Accessibility
    • Accessibility Acceptance Criteria met
    • Accessibility swarm completed
    • Component Health updated
    • P1 accessibility bugs resolved
    • P2/P3 accessibility bugs planned (if not resolved)
  • Security
    • Security issues addressed
    • Threat Model updated
  • Documentation
    • Docs updated (runbook, READMEs)
  • Testing
    • Feature tested on relevant environments
  • Comms
    • Relevant parties notified of changes

Testing

  • Manual Testing required?
    • Local (Ready-For-Test, Local)
    • Test (Ready-For-Test, Test)
    • Preview (Ready-For-Test, Preview)
    • Live (Ready-For-Test, Live)
  • Manual Testing complete?
    • Local
    • Test
    • Preview
    • Live

Additional Testing Steps

======

  1. Visit a Hindi Most Read page and inspect the page source.
  2. Confirm that the SpeakableSpecification schema is present in the linked data and only includes the title.
  3. Confirm that no speakable schema is present for non-Hindi services.
  4. Run the test suite and ensure all LinkedData tests pass.

Useful Links

seoTitle,
type,
}: {
service: string;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could use the Services type here.

if (!SPEAKABLE_ENABLED_SERVICES.includes(service)) return null;

const speakableXpaths: SpeakableSpecification[] = [];
if (seoTitle) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of checking if seoTitle exists and then checking the length and returning null if 0, could we bail out earlier with just if (!seoTitle) return null and then remove any of the length checks?

@LukasFrm LukasFrm changed the title [WS-1377]: Add speakable Schema Markup for Select World Service Most Read Pages [WS-1377]: Add speakable Schema Markup for Select World Service Pages Jan 8, 2026
Copy link
Contributor

@amoore108 amoore108 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for addressing the comments, looks good!

@LukasFrm LukasFrm merged commit 6b1a9f0 into latest Jan 8, 2026
13 checks passed
@LukasFrm LukasFrm deleted the WS-1377-add-speakable-schema-for-select-ws-most-read-pages branch January 8, 2026 16:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants