Skip to content

Check packaged macOS startup in PR CI - #324

Open
JuergenFleiss wants to merge 3 commits into
developfrom
feature_macos_startup_readiness
Open

JuergenFleiss wants to merge 3 commits into
developfrom
feature_macos_startup_readiness

Conversation

@JuergenFleiss

Copy link
Copy Markdown
Collaborator

Summary

Check packaged macOS startup on pull requests, so a broken bundle fails before merge instead of at release time.

  • CI builds the app with PyInstaller on macOS 15 (no signing secrets) and starts that same build on macOS 15 and on macOS 27.
  • A running process is no longer enough. The check needs aTrain startup ready, which the main page prints after the deferred engine imports and the page construction are complete. It fails on aTrain startup failed or a traceback.
  • The splash screen retries the deferred import on the next visit when torch loaded but aTrain_core.transcribe failed. Before, the presence of torch skipped the import.

The release workflow keeps its own startup checks: they run on the Developer ID build with the hardened runtime, which this ad-hoc build does not have.

References

Split out of #323.

Screenshots / Examples

  • A failed initialization (e.g. an import error in the main page) fails CI even if the GUI process stays alive.

Verification Steps

  • uv run --no-sync pytest tests/unit/test_macos_startup.py runs the CI step bodies against stubbed script/sleep (12 cases).
  • uv run --no-sync pytest tests/ui/test_startup_readiness.py (needs the GUI stack).
  • The macOS startup (macOS 15) and macOS startup (macOS 27) jobs on this PR.

Once merged, add both job names to the required checks for develop.

CI builds the app with PyInstaller on macOS 15 (no signing secrets) and
starts the same build on macOS 15 and 27. A process that stays alive is
no longer enough: the check needs "aTrain startup ready", printed after
the deferred engine imports and the main page are complete, and fails
on "aTrain startup failed" or a traceback.

The splash screen retries the deferred import when torch loaded but
aTrain_core.transcribe failed, instead of skipping it on the next visit.
On macOS 27 the first launch was still building matplotlib's font cache
after 60 s, so the check failed although the app was starting. Poll
once a second for up to 5 minutes, stop at the ready or failure line or
when the app exits, then wait 5 s so a crash right after "ready" still
fails.
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.

1 participant