Skip to content

Read Adaptive Card text in the live region when the card has no speak - #5922

Open
Eugene (OEvgeny) wants to merge 3 commits into
mainfrom
OEvgeny/fix-liveregion-card-text
Open

Eugene (OEvgeny) wants to merge 3 commits into
mainfrom
OEvgeny/fix-liveregion-card-text

Conversation

@OEvgeny

@OEvgeny Eugene (OEvgeny) commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

Adaptive Cards without speak are announced as just "A card:" when they arrive.

Changelog Entry

Fixed

  • Fixed screen readers announcing Adaptive Cards without speak as just "A card", they now read the card text, in PR #5922, by @OEvgeny

Description

The live region copy of an Adaptive Card only used speak, so cards without it (most bots) were announced as "A card:" with none of their text. Without speak, it now reads the visible card text in document order (hidden elements, including hidden inputs, and collapsed Action.ShowCard cards are skipped); speak still wins when present.

Design

Specific Changes

  • AdaptiveCardAttachment.js: card label falls back to the card text when speak is missing; walkAllItems skips hidden elements

  • adaptiveCard.text.html: snapshot 1, the live region reads "A card: Seattle Sunny, 21°C Bot avatar Humidity: 40% Wind: 8 km/h Updated 5 minutes ago"

  • adaptiveCard.hiddenText.html: snapshot 1, hidden text, a hidden input and the collapsed show-card text are not read ("A card: Seattle")

  • adaptiveCard.speakOverText.html: snapshot 1, a card with speak is still read by speak only

  • CHANGELOG.md: entry

  • I have added tests and executed them locally

  • I have updated CHANGELOG.md

  • I have updated documentation

Review Checklist

This section is for contributors to review your work.

  • Accessibility reviewed (tab order, content readability, alt text, color contrast)
  • Browser and platform compatibilities reviewed
  • CSS styles reviewed (minimal rules, no z-index)
  • Documents reviewed (docs, samples, live demo)
  • Internationalization reviewed (strings, unit formatting)
  • package.json and package-lock.json reviewed
  • Security reviewed (no data URIs, check for nonce leak)
  • Tests reviewed (coverage, legitimacy)

Eugene Olonov added 3 commits October 19, 2026 13:37
Without `speak`, the live region copy of an Adaptive Card was just "A card:".
It now reads the card's TextBlock, RichTextBlock, and FactSet text in document order.
`speak` still takes precedence when present.
…egion

Skip elements with isVisible: false (and their subtrees) when collecting the card text, and do not descend into actions.
@OEvgeny
Eugene (OEvgeny) marked this pull request as ready for review October 20, 2026 00:30
Copilot AI balanced review requested due to automatic review settings October 20, 2026 00:30

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@OEvgeny

Copy link
Copy Markdown
Collaborator Author

Might be too naive, but maybe worth it as a start, William Wong (@compulim) ?

This branch has not been deployed

No deployments
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.

2 participants