Repository navigation
test: run App Intents through the system with AppIntentsTesting - #191
Merged
Merged
Conversation
Adds AppIntentsSystemTests (Open and Start Container via IntentDefinitions), compiled only with Xcode 27. The system answers only a runner signed by the app's team, so the UI test target now sets DEVELOPMENT_TEAM; CI builds ad-hoc and the tests skip there on the code 800 permission error.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #189
What
BerthlyUITests/AppIntentsSystemTests.swift: two tests that drive Berthly's intents through the system, the path Shortcuts and Spotlight use.workercontainer through Berthly's entity query, runs the intent, and checks the detail pane shows "worker".worker, then checks the detail pane shows the Stop button.#if canImport(AppIntentsTesting), because the framework ships only with Xcode 27, plus@available(macOS 27, *).project.pbxproj: setsDEVELOPMENT_TEAMon theBerthlyUITeststarget only.Why the signing change (spike result)
AppIntentsTestinganswers only a test runner signed by the same development team as the app. Apple's WWDC26 session "Validate your App Intents adoption with AppIntentsTesting" states this, and I verified it locally:AppIntentsServicesSecurityErrorDomaincode 800, "Your app does not have permission to perform this"ci.ymlbuildsCI behavior
XCTSkip. The run stays green.So like
BerthlyE2ETests, these run only on a developer's Mac, with no extra arguments: a normal ⌘U orxcodebuild teston Xcode 27 / macOS 27 includes them. Running them on CI would need a development certificate in CI secrets, which is not part of this PR.They stay in
BerthlyUITests, notBerthlyE2ETests. They use mock data, andscripts/e2e.shre-signs its runner ad-hoc, which would make them skip.Verification
BerthlyUITestswith the team-signed runner: 84 tests, 0 failures.swiftlint lint --strictclean.Local gotcha
If stale copies of
app.berthly.Berthlyare registered with LaunchServices (old DerivedData builds, an installed release), macOS may not see the intents, and the tests fail on "exactly one container named worker". Unregister the stale copies withlsregister -u(see the PR #188 description).🤖 Generated with Claude Code