Skip to content

ci: macos-26 / Xcode 26.6, run UI tests for real; fit Settings window to screen - #6

Merged
dionmcm merged 4 commits into
mainfrom
chore/ci-macos-26
Oct 7, 2026
Merged

dionmcm merged 4 commits into
mainfrom
chore/ci-macos-26

Conversation

@dionmcm

@dionmcm dionmcm commented Oct 4, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Runner: macos-14 → macos-26. The macos-14 images are deprecated ([macOS] The macOS 14 Sonoma based runner images will begin deprecation on July 6th and will be fully unsupported by November 2nd for GitHub Actions and Azure DevOps actions/runner-images#13518).
  • Xcode: 16.2 → 26.6, the default on the macos-26 image.
  • Actions: actions/checkout v4 → v7, actions/upload-artifact v4 → v7, softprops/action-gh-release v2 → v3. These are mainly moves to the Node 24 runtime; none of the changes affect how these workflows use them. checkout v6+ stores credentials in a separate file, but the tag and branch push step in release.yml still works.
  • Log formatter: xcpretty → xcbeautify. xcbeautify ships on the macos-26 image; xcpretty does not.
  • Fix: test failures were being hidden. ci.yml now sets defaults.run.shell: bash, so steps run with -eo pipefail. Previously steps ran as plain bash -e, so xcodebuild test | xcpretty reported success whenever the formatter exited 0, even if the build or tests failed.
  • Fix: UI tests never actually ran. The UI Tests step used -only-testing:CodeagogoUITests against the scheme's default test plan (Codeagogo-Unit), which doesn't contain that target. xcodebuild failed with exit 70 on every run ("CodeagogoUITests isn't a member of the specified test plan or scheme"), and the formatter pipe hid it. The step now uses -testPlan "Codeagogo-UI", which keeps the existing SearchPanelUITests skip, and has a 20-minute timeout in case XCUITest hangs. The unit step now names -testPlan "Codeagogo-Unit" explicitly; behaviour is unchanged.
  • The UI tests cover the menu bar item and the Settings window, launching the app with --ui-testing. None of them need Accessibility permission. GitHub's macOS runners provide the logged-in desktop session XCUITest needs, with no display.
  • Fix (app): Settings window on smaller screens. Running the UI tests exposed that SettingsView fixed the window at 520×1060pt. On screens with less visible height (the CI runner, or a 13" MacBook Air), the bottom of the window ran off-screen and the debug-logging toggle and diagnostics button couldn't be reached. The window now opens at the full 1060pt where it fits and otherwise at the screen's visible height, the existing scroll view handles overflow, and it can be resized between 480pt and 1060pt (.windowResizability(.contentSize)). CHANGELOG [Unreleased] updated. The UI test base class gains a scrollIntoView helper, used before clicking those bottom controls.

Result

  • All 20 UI tests pass on macos-26 (SearchPanelUITests is skipped by the test plan, as before). The unit test plan passes too.

Heads-up

  • This PR and chore: update to ecl-lsp 1.6.2 and Monaco 0.57.0 #5 both add a ### Fixed section under [Unreleased] in CHANGELOG.md, so whichever merges second needs that conflict resolved by keeping both entries.
  • release.yml only runs when triggered manually, so it has only had a YAML syntax check. I didn't add pipefail there, because its cat CHANGELOG.md | head -50 line could then fail spuriously.
  • actionlint wasn't available; both workflows only had a YAML syntax check.

🤖 Generated with Claude Code

dionmcm and others added 4 commits October 4, 2026 16:25
- runs-on macos-14 -> macos-26 (macos-14 images are deprecated:
  actions/runner-images#13518); Xcode 16.2 -> 26.6, the image default.
- actions/checkout v4 -> v7, actions/upload-artifact v4 -> v7,
  softprops/action-gh-release v2 -> v3 (Node 24 runtimes; no input
  changes affect these workflows).
- Pipe xcodebuild through xcbeautify, which ships on the macos-26 image,
  instead of xcpretty, which does not.
- Run ci.yml steps with `shell: bash` so they get `-eo pipefail`.
  Previously the default `bash -e` meant a failing xcodebuild build or
  test step piped into the formatter still reported success.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The UI Tests step used -only-testing:CodeagogoUITests against the scheme's
default (Unit) test plan, which doesn't contain that target, so xcodebuild
has failed with exit 70 on every run; the formatter pipe hid it until
pipefail was enabled. Select the Codeagogo-UI plan (which also keeps the
SearchPanelUITests skip), bound the step at 20 minutes in case XCUITest
hangs, and select the Unit plan explicitly for the unit step.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Settings window is 1060pt tall, taller than the CI runner's screen,
so the debug-logging toggle and diagnostics button at the bottom of its
scroll view were off-screen and XCUITest failed them as not hittable.
Add a scrollIntoView helper to the UI test base class and use it before
clicking those controls.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SettingsView fixed its frame at 520x1060, so on screens with less visible
height (13" laptops, the CI runner) the window ran off the bottom and its
last controls were unreachable. Give it a min/ideal/max height instead:
ideal is the full 1060pt capped to the main screen's visible height, the
scroll view handles overflow, and .windowResizability(.contentSize) lets
the user resize between 480pt and 1060pt. Also makes the UI tests'
scrollIntoView helper effective for the bottom controls.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@dionmcm dionmcm changed the title ci: move to macos-26 / Xcode 26.6 and current action majors ci: macos-26 / Xcode 26.6, run UI tests for real; fit Settings window to screen Oct 6, 2026
@dionmcm
dionmcm merged commit e062018 into main Oct 7, 2026
6 checks passed
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