Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update UIAutomationClient comInterfaces #15522

Merged
merged 2 commits into from
Oct 9, 2023
Merged

Conversation

seanbudd
Copy link
Member

@seanbudd seanbudd commented Sep 26, 2023

Summary of the issue:

We plan to update all dependencies where possible in 2024.1.
The comInterfaces for UIAutomationClient are manually maintained compared to other comInterfaces.
This is due to the regression risk of this being automatically updated on appveyor, which uses an older version of Windows.
In preparation for python 3.11, an update to UIAutomationClient is ideal.
Performing this early allows for maximal alpha testing

Description of user facing changes

None, ideally just performance enhancements

Description of development approach

Built with Windows 11 22H2 22621.2283.
Follow steps in source/comInterfaces/readme.md to build with Windows 11 and updated Visual Studio 2022.

Testing strategy:

Significant alpha testing is required

Known issues with pull request:

It might be worth adding manually regenerating UIAutomationClient to the release process like updating eSpeak.

Code Review Checklist:

  • Documentation:
    • Change log entry
    • User Documentation
    • Developer / Technical Documentation
    • Context sensitive help for GUI changes
  • Testing:
    • Unit tests
    • System (end to end) tests
    • Manual testing
  • UX of all users considered:
    • Speech
    • Braille
    • Low Vision
    • Different web browsers
    • Localization in other languages / culture than English
  • API is compatible with existing add-ons.
  • Security precautions taken.

@seanbudd seanbudd requested a review from a team as a code owner September 26, 2023 05:23
@AppVeyorBot
Copy link

See test results for failed build of commit 18e367216f

@seanbudd
Copy link
Member Author

Instead, we are going to let AppVeyor build these files rather than manually updating, as regression risk is much lower now

@seanbudd seanbudd marked this pull request as draft September 27, 2023 23:42
@seanbudd seanbudd force-pushed the updateUIAComInterfaces branch from c3c1924 to 3737ce8 Compare September 28, 2023 00:40
@seanbudd seanbudd marked this pull request as ready for review September 28, 2023 00:42
Copy link
Contributor

@lukaszgo1 lukaszgo1 left a comment

Choose a reason for hiding this comment

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

I disagree with the approach here. The main reason not to generate UIA com interface on AppVeyor is not the fact that it can be updated out of our control, but the fact that it is generated from the version of Windows used in AppVeyor image, which is severely outdated. They are still running Windows Server 2019, so their UIA interface is almost 5 years old at this point. NVDA is using much newer interface for a long time, so this would be functionally a downgrade. This also creates a huge difference between automatic builds, and developer's environment, forcing contributors to either build on a vm, or testing with a try builds created on AppVeyor. While I certainly see an appeal in not having to update these interfaces by hand, the only way which seems reasonable for me would be to generate them with a known version of UIA Interface from Windows SDK, which guarantees that interface is recent enough, and also that builds can be reproducible.

@dpy013
Copy link
Contributor

dpy013 commented Oct 2, 2023

I disagree with the approach here. The main reason not to generate UIA com interface on AppVeyor is not the fact that it can be updated out of our control, but the fact that it is generated from the version of Windows used in AppVeyor image, which is severely outdated. They are still running Windows Server 2019, so their UIA interface is almost 5 years old at this point. NVDA is using much newer interface for a long time, so this would be functionally a downgrade. This also creates a huge difference between automatic builds, and developer's environment, forcing contributors to either build on a vm, or testing with a try builds created on AppVeyor. While I certainly see an appeal in not having to update these interfaces by hand, the only way which seems reasonable for me would be to generate them with a known version of UIA Interface from Windows SDK, which guarantees that interface is recent enough, and also that builds can be reproducible.

Maybe we can use github actions to build the UIA?
The windows version of github actions is new enough

@seanbudd seanbudd force-pushed the updateUIAComInterfaces branch from 3737ce8 to 9df6551 Compare October 2, 2023 03:03
@seanbudd seanbudd marked this pull request as draft October 2, 2023 03:03
@seanbudd seanbudd marked this pull request as ready for review October 2, 2023 23:12
@seanbudd seanbudd merged commit 8ff2716 into master Oct 9, 2023
@seanbudd seanbudd deleted the updateUIAComInterfaces branch October 9, 2023 04:51
@nvaccessAuto nvaccessAuto added this to the 2024.1 milestone Oct 9, 2023
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.

6 participants