Skip to content

Conversation

@loic-peron-inetum-public
Copy link
Contributor

Expose flutter Semantics.identifier as AXPlatformNodeDelegate::AuthorUniqueId.
To be used for UI test automation through Windows AutomationId.

see #148763

followup to #161955

Pre-launch Checklist

  • I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
  • I read the [Tree Hygiene] wiki page, which explains my responsibilities.
  • I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement].
  • I signed the [CLA].
  • I listed at least one issue that this PR fixes in the description above.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or this PR is [test-exempt].
  • I followed the [breaking change policy] and added [Data Driven Fixes] where supported.
  • All existing and new tests are passing.

@github-actions github-actions bot added engine flutter/engine related. See also e: labels. a: accessibility Accessibility, e.g. VoiceOver or TalkBack. (aka a11y) platform-linux Building on or for Linux specifically a: desktop Running on desktop platform-macos labels Sep 16, 2025
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request correctly propagates the SemanticsNode.identifier from the Flutter framework to the native accessibility tree, exposing it as AuthorUniqueId for UI test automation. The implementation adds the identifier field to the necessary data structures and uses it to set the kHtmlId accessibility attribute, which is appropriate. The associated tests have been updated accordingly. My review includes a couple of suggestions to improve code clarity and maintainability: one to rename a new function for better cross-platform understanding, and another to refactor test code to reduce boilerplate.

@loic-peron-inetum-public loic-peron-inetum-public changed the title Propagate SemanticsNode::identifier to AXPlatformNodeDelegate::AuthorUniqueId [Desktop] Propagate SemanticsNode::identifier to AXPlatformNodeDelegate::AuthorUniqueId Sep 26, 2025
@loic-peron-inetum-public
Copy link
Contributor Author

@loic-sharma could you review this updated PR ?

@robert-ancell robert-ancell added the triaged-linux Triaged by the Linux platform team label Oct 8, 2025
@loic-sharma loic-sharma requested a review from chunhtai October 8, 2025 22:33
@loic-sharma
Copy link
Member

@loic-peron-inetum-public Thanks for the contribution! This is looking good. I left some comments, but otherwise this is looking good!

cc @chunhtai as I'm less familiar with the //third_party/accessibility/ax/ codebase.

@chunhtai
Copy link
Contributor

agree with @loic-sharma , we should not use the htmlId since the data doesn't come from a web dom but flutter app

@loic-peron-inetum-public loic-peron-inetum-public force-pushed the semanticsnode.identifier-to-axplatformnodedelegate.authoruniqueid branch from fd3f374 to e11faa6 Compare October 17, 2025 09:24
@loic-peron-inetum-public
Copy link
Contributor Author

Rebased on master and replaced kHtmlId with kIdentifier.

Copy link
Contributor

@chunhtai chunhtai left a comment

Choose a reason for hiding this comment

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

LGTM

Copy link
Member

@loic-sharma loic-sharma left a comment

Choose a reason for hiding this comment

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

LGTM! Thanks for the contribution :)

@chunhtai
Copy link
Contributor

Hi @loic-peron-inetum-public can you rebase this pr again to see if it passes ci

@loic-peron-inetum-public loic-peron-inetum-public force-pushed the semanticsnode.identifier-to-axplatformnodedelegate.authoruniqueid branch from e11faa6 to 78b33e8 Compare October 23, 2025 06:51
@loic-peron-inetum-public
Copy link
Contributor Author

Rebased on master.

@loic-sharma loic-sharma added the autosubmit Merge PR when tree becomes green via auto submit App label Oct 23, 2025
@auto-submit auto-submit bot added this pull request to the merge queue Oct 23, 2025
Merged via the queue into flutter:master with commit f01fa59 Oct 24, 2025
184 of 185 checks passed
@flutter-dashboard flutter-dashboard bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Oct 24, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 24, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 24, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 24, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 24, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 24, 2025
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Oct 24, 2025
Roll Flutter from 75004a639ae4 to cb18290fa45e (48 revisions)

flutter/flutter@75004a6...cb18290

2025-10-24 [email protected] Remove unnecessary `deprecated` withOpacity in `text_button.0.dart‎` in examples (flutter/flutter#177374)
2025-10-24 [email protected] Roll Packages from 9ec29b6 to 53d6138 (3 revisions) (flutter/flutter#177502)
2025-10-24 [email protected] Roll Dart SDK from d3248b00f545 to a0480f399f8f (1 revision) (flutter/flutter#177498)
2025-10-24 [email protected] Roll Skia from a47931d09585 to 3ed332b77bec (3 revisions) (flutter/flutter#177487)
2025-10-24 [email protected] Roll Abseil to Chromium's 5b92b04a2e (based on Abseil commit fc4481e968) (flutter/flutter#177059)
2025-10-24 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Reverts "Enhance PR template with changelog and impact details (#177333)" (#177468)" (flutter/flutter#177499)
2025-10-24 [email protected] Document DropdownMenu showTrailingIcon and decorationBuilder interaction (flutter/flutter#177488)
2025-10-24 [email protected] Roll Dart SDK from 4a65fb890852 to d3248b00f545 (1 revision) (flutter/flutter#177486)
2025-10-24 [email protected] Fix bottom sheet Semantics route label for mismatched platforms (flutter/flutter#177094)
2025-10-24 [email protected] Roll Skia from eba11de00d5b to a47931d09585 (5 revisions) (flutter/flutter#177481)
2025-10-24 [email protected] Fix Dialog Semantics label and flags for mismatched platforms (flutter/flutter#176781)
2025-10-24 [email protected] Fix drawer Semantics for mismatched platforms (flutter/flutter#177095)
2025-10-24 [email protected] Roll Dart SDK from f7751ccea102 to 4a65fb890852 (2 revisions) (flutter/flutter#177480)
2025-10-23 [email protected] Change the root path of the license crawl to engine/src (flutter/flutter#177352)
2025-10-23 [email protected] [Material] Change default mouse cursor of buttons to basic arrow instead of click (except on web) (flutter/flutter#171796)
2025-10-23 [email protected] [Desktop] Propagate SemanticsNode::identifier to AXPlatformNodeDelegate::AuthorUniqueId (flutter/flutter#175405)
2025-10-23 [email protected] Roll Skia from 59ef57f4104e to eba11de00d5b (5 revisions) (flutter/flutter#177461)
2025-10-23 [email protected] Roll customer tests (flutter/flutter#177409)
2025-10-23 [email protected] Update CHANGELOG 3.35.7 notes (flutter/flutter#177463)
2025-10-23 [email protected] Marks Mac module_uiscene_test_ios to be unflaky (flutter/flutter#177378)
2025-10-23 [email protected] Allow empty dart defines in `flutter assemble` (flutter/flutter#177198)
2025-10-23 [email protected] Roll Packages from d113bbc to 9ec29b6 (12 revisions) (flutter/flutter#177455)
2025-10-23 [email protected] Implements engine-side declarative pointer event handling for semantics. (flutter/flutter#176974)
2025-10-23 [email protected] Fix the platform name of the windowing_test target for macOS in ci.yaml (flutter/flutter#177472)
2025-10-23 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Enhance PR template with changelog and impact details (#177333)" (flutter/flutter#177468)
2025-10-23 [email protected] Change Flutter APIs to use spans (flutter/flutter#177272)
2025-10-23 [email protected] Roll Dart SDK from 020988602772 to f7751ccea102 (4 revisions) (flutter/flutter#177449)
2025-10-23 [email protected] [macOS] Implement regular window (flutter/flutter#176361)
2025-10-23 [email protected] Enhance PR template with changelog and impact details (flutter/flutter#177333)
2025-10-23 [email protected] Roll Skia from 6e6acf6644ef to 59ef57f4104e (2 revisions) (flutter/flutter#177436)
2025-10-23 [email protected] Add directional static members to AlignmentGeometry. (flutter/flutter#176571)
2025-10-23 [email protected] Roll ICU from 1b2e3e8a421e to ff35c4f9df23 (5 revisions) (flutter/flutter#177434)
2025-10-23 [email protected] Adds a new CI build for Linux host DDM-enabled artifacts (flutter/flutter#177252)
2025-10-23 [email protected] Roll Skia from 920cdcadd74c to 6e6acf6644ef (1 revision) (flutter/flutter#177432)
2025-10-23 [email protected] Roll Skia from 8cd449e4953b to 920cdcadd74c (6 revisions) (flutter/flutter#177426)
2025-10-23 [email protected] Added ahem license (flutter/flutter#177423)
2025-10-23 [email protected] Roll Dart SDK from 75f6ccb9bdc5 to 020988602772 (1 revision) (flutter/flutter#177421)
2025-10-23 [email protected] [web] Set `pointer-events: none` for img-element-backed images (flutter/flutter#177418)
2025-10-22 [email protected] Remove the x64 version of build_ios_framework_module_test (flutter/flutter#177136)
2025-10-22 [email protected] Fix accessibility events not being correctly translated to ATK (flutter/flutter#176991)
2025-10-22 [email protected] Roll Skia from b55bd60ed95b to 8cd449e4953b (8 revisions) (flutter/flutter#177405)
2025-10-22 [email protected] Roll Dart SDK from c23010c4f9e6 to 75f6ccb9bdc5 (4 revisions) (flutter/flutter#177399)
2025-10-22 [email protected] Fixes crash when adding and removing mulitple page-based route (flutter/flutter#177338)
2025-10-22 [email protected] Move child parameter to end of RefreshIndicator constructor (flutter/flutter#177019)
2025-10-22 [email protected] refactor: migrate OpenUpwardsPageTransitionsBuilder to widgets (flutter/flutter#177080)
2025-10-22 [email protected] Delete stray 'text' file (flutter/flutter#177355)
...
@justgitstuff
Copy link

Hi these changes are not working for macos and linux flutter apps, can you please suggest a workaround?

@loic-peron-inetum-public
Copy link
Contributor Author

Hi these changes are not working for macos and linux flutter apps, can you please suggest a workaround?

What is not working ? Has something been broken on these platforms ?

@justgitstuff
Copy link

justgitstuff commented Nov 4, 2025

What is not working ? Has something been broken on these platforms ?

accessibility inspector still shows the main window only when inspected in mac, even after adding the semantics

@loic-peron-inetum-public
Copy link
Contributor Author

accessibility inspector still shows the main window only when inspected in mac, even after adding the semantics

This is expected. This PR only propagates the semantics identifier to the cross-platform AXPlatformNodeDelegate. Native work needs to be done to expose the value through each native accessibility framework. See #175406 for Windows. Additional contributions are needed for Linux and macOS, but are not in my scope.

@justgitstuff
Copy link

This is expected. This PR only propagates the semantics identifier to the cross-platform AXPlatformNodeDelegate. Native work needs to be done to expose the value through each native accessibility framework. See #175406 for Windows. Additional contributions are needed for Linux and macOS, but are not in my scope.

Thanks alot for the details, any ETA for [#175406] to be merged to master?

reidbaker pushed a commit to AbdeMohlbi/flutter that referenced this pull request Dec 10, 2025
…te::AuthorUniqueId (flutter#175405)

Expose flutter Semantics.identifier as
AXPlatformNodeDelegate::AuthorUniqueId.
To be used for UI test automation through Windows AutomationId.

see flutter#148763

followup to flutter#161955

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

a: accessibility Accessibility, e.g. VoiceOver or TalkBack. (aka a11y) a: desktop Running on desktop engine flutter/engine related. See also e: labels. platform-linux Building on or for Linux specifically platform-macos triaged-linux Triaged by the Linux platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants