-
Notifications
You must be signed in to change notification settings - Fork 3.3k
MacOS Sequoia support for VoiceOver AppleScript automation #11257
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
Comments
Hi @jlp-craigmorten, Thank You. |
Hi @pravinade @sureshe456, is there an ETA on this fix landing? Can we expect to it be in place for GA of the macOS 15 images (#11486)? This issue makes it impossible to automate testing of VoiceOver and related accessibility features on macOS 15 with GitHub actions. Thank you! |
@outofambit , we're checking into this and will keep you posted. |
Hi @jlp-craigmorten , Thank you for your patience.
|
I'll try find some time to create a public repo that reproduces the issue - I'll ping here when done! The workflow I'm using atm is quite involved and doesn't demonstrate the exact issue very well. That is unless @outofambit has something that would make it easy to replicate and test? |
I'm actually seeing slightly different behavior, where the steps in our GitHub action that attempt to use |
Hi all, I've tried to create a minimal reproduction at https://github.com/guidepup/macos-15-automation-error-demo. Locally (without enabling AppleScript support via VoiceOver Utitlity or the suggested fix above) I get the error described in the issue when running the workflow on Sequoia: [1] 35860
******** Launching VoiceOver from starter application ********
2025-02-01 21:13:14.061 VoiceOverStarter[35860:15759807] VoiceOverDebug: _ScreenReaderStartWithTarget with option 0
2025-02-01 21:13:14.068 VoiceOverStarter[35860:15759807] VoiceOverDebug: after boostrap_look_up succeeded
2025-02-01 21:13:14.068 VoiceOverStarter[35860:15759807] VoiceOverDebug: calling _SCRStartup returned 0
craig.morten 35860 0.1 0.0 410060000 32 s001 S 9:13PM 0:00.00 (VoiceOverStarter)
[1]+ Done /System/Library/CoreServices/VoiceOver.app/Contents/MacOS/VoiceOverStarter
true
VO ready.
voiceOverPerform.applescript:304:318: execution error: VoiceOver got an error: vo cursor doesn’t understand the “perform action” message. (-1708)
Failed to perform AppleScript, retrying...
voiceOverPerform.applescript:304:318: execution error: VoiceOver got an error: vo cursor doesn’t understand the “perform action” message. (-1708)
Failed to perform AppleScript, retrying...
voiceOverPerform.applescript:304:318: execution error: VoiceOver got an error: vo cursor doesn’t understand the “perform action” message. (-1708)
Failed to perform AppleScript, retrying...
voiceOverPerform.applescript:304:318: execution error: VoiceOver got an error: vo cursor doesn’t understand the “perform action” message. (-1708)
Failed to perform AppleScript, retrying...
voiceOverPerform.applescript:304:318: execution error: VoiceOver got an error: vo cursor doesn’t understand the “perform action” message. (-1708)
Failed to perform AppleScript, retrying...
^C If I enable AppleScript support then it succeeds as expected. Interestingly the same attempt to use AppleScript on the macos-15 runner seems to just hang rather than error - apologies a poor assumption on my steps to repro in the original description, see https://github.com/guidepup/macos-15-automation-error-demo/actions/runs/13091391299 for an example workflow which has the passing job for macos-13 and macos-14, but macos-15 just hangs...? |
Hi All, I’ve used the You can add this line to your code and test: os: [macos-13, macos-14, macos-15, macos-15-xlarge]. Feel free to reach out if you have any questions or need further assistance. |
Thanks for taking a look - will have to hold off until you resolve the |
We are also in the same boat as an open source project on a free plan. Hope a fix can be found soon for |
Hi All, After rolling out the images, we observed that the issue still persists. Due to performance degradation, we had to roll back the macOS-15 images to the previous version. |
Hi @jlp-craigmorten, As per the workflow provided, I encountered the following error when checking:
Here’s the workflow run for reference: start-voiceover-and-move-right (macos-15-xlarge). From the error message, it looks like something in the workflow is either: Overloading the runner (e.g., high CPU/memory usage). Thanks! |
Hi @prasanjitsahoo 👋 I'm getting a 404 Not Found on the link you've shared, perhaps because it is a private repo? Happy to take a look but beyond my reproduction workflow shared previously I'm not sure how much more I can help... Given https://github.com/actions/runner-images/blob/main/images/macos/scripts/build/configure-machine.sh#L22-L28 remains unchanged (the required change is mentioned in the issue description) it may be that the consequence of attempting to interact with VoiceOver when AppleScript support is disabled is for the process to hang - if this happens to be "blocking" then could explain it, but is contrary to what I've seen locally (posted above). Without access to your images/sandboxes I'm not sure I can do much more support 😅 |
@jlp-craigmorten, Thanks for looking into this! Yes, the repo is private, which might be causing the 404 error. PFS is passing for the macOS 15 Intel image but failing for macOS 15 ARM. I'll also verify if there's any difference in behavior between our environment and your local setup. If I find anything relevant, I'll share an update. ![]() |
@prasanjitsahoo @erik-bershel Unfortunately, even after the GA release of MacOS 15 this past week, support for VoiceOver Applescript automation appears to remain broken on arm-based images. Here's a another run of my fork of the repo demonstrating the issue running multiple versions of MacOS 15 and testing for basic Applescript/VO automation capabilities. Note that the intel-based |
Description
In MacOS Sequoia (15) Apple have changed where configuration is stored for enabling AppleScript control of VoiceOver.
Specifically
~/Library/Preferences/com.apple.VoiceOver4/default.plist
has been replaced by the sandboxed~/Library/Group Containers/group.com.apple.VoiceOver/Library/Preferences/com.apple.VoiceOver4/default.plist
.This means the current code at https://github.com/actions/runner-images/blob/main/images/macos/scripts/build/configure-machine.sh#L22-L28 is no longer sufficient to allow the automation of VoiceOver on macos-15 agents.
This should be updated to something similar to:
where the pertinent addition is:
Note: care needed to make sure that this new command is only executed for MacOS 15 (Darwin 24) agents (as presumably the file does not exist for earlier versions of the OS!)
Platforms affected
Runner images affected
Image version and build link
REF: https://github.com/guidepup/setup/actions/runs/12561961803/job/35021706292?pr=39
Is it regression?
No
Expected behavior
VoiceOver can be automated through AppleScript.
Actual behavior
VoiceOver cannot be automated through AppleScript.
Repro steps
Run
macos-15
agentStart VoiceOver, e.g. execute
/System/Library/CoreServices/VoiceOver.app/Contents/MacOS/VoiceOverStarter
Attempt to control VoiceOver using AppleScript, e.g. execute
Observe that the script errors with
example.applescript:60:74: execution error: VoiceOver got an error: vo cursor doesn’t understand the “perform action” message. (-1708)
when it would normally succeed (because the dictionary isn't loaded when AppleScript control is disabled).The text was updated successfully, but these errors were encountered: