getsentry / getsentry/XcodeBuildMCP

[Bug]: Simulator test fails on mixed iOS and watchOS test plans in 2.7.0

クローズ
#514 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
bug stale
主要言語
TypeScript
スター
6.4k
フォーク
319
PR マージ指標
30日以内にマージされた PR はありません

説明

### Bug Description

`simulator test` fails on XcodeBuildMCP 2.7.0 when the scheme's test plan contains both iOS and watchOS unit test targets. The same command, project and simulator pass on 2.6.2.

2.7.0 builds the project and discovers both tests, then the prepared test phase fails to resolve the requested iOS Simulator. Removing only the watchOS test target from the test plan makes 2.7.0 pass.

I have attached a standalone repro with three targets and no dependencies, package manager or code signing.

### Debug Output

```
⚙️ XcodeBuildMCP Doctor

Generated: 2026-08-11T00:51:34.307Z
Server Version: 2.7.0
Output Mode: Redacted (default)

System Information
platform: darwin
release: 25.6.0
arch: arm64
cpus: 15 x Apple M5 Pro
memory: 48 GB
hostname:
username:
homedir: /Users/
tmpdir: /var/folders/ql/lrbqh2nx1615gy6k6tptrdjc0000gn/T

Node.js Information
version: v26.7.0
execPath: /opt/homebrew/Cellar/node/26.7.0/bin/node
pid: 93030
ppid: 89346
platform: darwin
arch: arm64
cwd: /Users//Documents/Work/
argv: /opt/homebrew/Cellar/node/26.7.0/bin/node /opt/homebrew/Cellar/xcodebuildmcp/2.7.0/libexec/build/doctor-cli.js

Process Tree
Running under Xcode: No
93030 (ppid 89346): node -- node /opt/homebrew/Cellar/xcodebuildmcp/2.7.0/libexec/build/doctor-cli.js
89346 (ppid 89339): /opt/homebrew/li -- /opt/homebrew/lib/node_modules/@openai/codex/node_modules/@openai/codex-darwin-arm64/vendor/aarch64-apple-darwin/bin/codex --yolo
89339 (ppid 88662): node -- node /opt/homebrew/bin/codex --yolo
88662 (ppid 9938): -zsh -- -zsh
9938 (ppid 1): /opt/homebrew/bi -- /opt/homebrew/bin/herdr server
1 (ppid 0): /sbin/launchd -- /sbin/launchd

Xcode Information
version: Xcode 26.6 - Build version 17F113
path: /Applications/Xcode-26.6.0.app/Contents/Developer
selectedXcode: /Applications/Xcode-26.6.0.app/Contents/Developer/usr/bin/xcodebuild
xcrunVersion: xcrun version 72.

Dependencies
axe: 1.8.0
mise: 2026.8.3 macos-arm64 (2026-08-07)

Environment Variables
INCREMENTAL_BUILDS_ENABLED: (not set)
DEVELOPER_DIR: (not set)
HOME: /Users/
USER:
TMPDIR: /var/folders/ql/lrbqh2nx1615gy6k6tptrdjc0000gn/T/
NODE_ENV: (not set)
SENTRY_DISABLED: (not set)
AXE_PATH: (not set)
XBMCP_LAUNCH_JSON_WAIT_MS: (not set)
XCODEBUILDMCP_DEBUGGER_BACKEND: (not set)
XCODEBUILDMCP_UI_DEBUGGER_GUARD_MODE: (not set)
XCODEBUILDMCP_RUNTIME: cli
XCODEBUILDMCP_SILENCE_LOGS: true

PATH
/opt/homebrew/lib/node_modules/@openai/codex/node_modules/@openai/codex-darwin-arm64/vendor/aarch64-apple-darwin/codex-path
/opt/homebrew/opt/openjdk@17/bin
/Users//.rbenv/shims
/Users//.local/bin
/opt/homebrew/bin
/opt/homebrew/sbin
/usr/local/bin
/System/Cryptexes/App/usr/bin
/usr/bin
/bin
/usr/sbin
/sbin
/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin
/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin
/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin
/pkg/env/global/bin
/Library/Apple/usr/bin
/Users//.codex/tmp/arg0/codex-arg0rHEufG
/opt/homebrew/lib/node_modules/@openai/codex/node_modules/@openai/codex-darwin-arm64/vendor/aarch64-apple-darwin/codex-path
/opt/homebrew/opt/openjdk@17/bin
/Users//.rbenv/shims
/Users//.local/bin
/Applications/Ghostty.app/Contents/MacOS
/Users//.orbstack/bin
/Users//.orbstack/bin

UI Automation (axe)
Available: Yes
UI Automation Supported: Yes
Simulator Video Capture Supported (AXe >= 1.1.0): Yes
UI-Debugger Guard Mode: error

Incremental Builds
Enabled: No
xcodemake Binary Available: No
Makefile exists (cwd): (not checked: incremental builds disabled)

Mise Integration
Running under mise: No
Mise available: Yes

Debugger Backend (DAP)
lldb-dap available: Yes
Selected backend: dap

Manifest Tool Inventory
Total Unique Tools: 82
Workflow Count: 15
coverage: 2 tools
debugging: 8 tools
device: 15 tools
doctor: 1 tools
macos: 13 tools
project-discovery: 5 tools
project-scaffolding: 2 tools
session-management: 5 tools
simulator-management: 10 tools
simulator: 20 tools
swift-package: 8 tools
ui-automation: 14 tools
utilities: 1 tools
workflow-discovery: 1 tools
xcode-ide: 5 tools

Runtime Tool Registration
Enabled Workflows: 0
Registered Tools: 0
Note: Runtime registry unavailable.

Xcode IDE Bridge (mcpbridge)
Workflow enabled: No
mcpbridge path: /Applications/Xcode-26.6.0.app/Contents/Developer/usr/bin/mcpbridge
Xcode running: true
Connected: No
Bridge PID: (none)
Proxied tools: 0
Last error: (none)
Note: Bridge debug tools (status/sync/disconnect) are only registered when debug: true

Tool Availability Summary
Build Tools: Available
UI Automation Tools: Available
Incremental Build Support: Not available

Sentry
Sentry enabled: Yes

Troubleshooting Tips
If UI automation tools are not available, install axe: brew tap cameroncooke/axe && brew install axe
If incremental build support is not available, install xcodemake (https://github.com/cameroncooke/xcodemake) and ensure it is executable and available in your PATH
To enable xcodemake, set environment variable: export INCREMENTAL_BUILDS_ENABLED=1
For mise integration, follow instructions in the README.md file

✅ Doctor diagnostics complete
```

### Editor/Client

Codex CLI 0.147.0

### MCP Server Version

2.7.0

### LLM

OpenAI GPT-5.6 Sol

### MCP Configuration

```json

```

### Steps to Reproduce

1. Download and unzip `Repro.zip`.
2. Run the following command with an available iOS Simulator UDID:

```shell
xcodebuildmcp simulator test --project-path Repro.xcodeproj --scheme App --simulator-id
```

3. On 2.7.0, both tests are discovered but the test run fails while resolving the destination.
4. Run the same command with 2.6.2. Both tests pass.
5. Remove `WatchTests` from `testTargets` in `Repro.xctestplan` and run 2.7.0 again. The remaining iOS test passes.

[Repro.zip](https://github.com/user-attachments/files/30918811/Repro.zip)
[xcodebuild-invocations.txt](https://github.com/user-attachments/files/30918836/xcodebuild-invocations.txt)

### Expected Behavior

The iOS and watchOS tests should run using the selected paired simulators, as they do on 2.6.2.

### Actual Behavior

2.7.0 completes `build-for-testing`, discovers both tests, then fails during `test-without-building` because it cannot resolve the requested iOS Simulator.

### Error Messages

```shell
Discovered 2 test(s):
AppTests/AppTests/testPasses
WatchTests/WatchTests/testPasses

Errors (1):

✗ Unable to find a device matching the provided destination specifier:
{ platform:iOS Simulator, id: }

❌ Test failed.
```

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

Start by reproducing the failure with Repro.xcodeproj and Repro.xctestplan using the simulator test command, then compare the 2.7.0 and 2.6.2 invocations in xcodebuild-invocations.txt. Trace the test-without-building destination handling after both iOS and watchOS tests are discovered. Done when the mixed test plan runs on paired simulators without breaking the iOS-only case.

索引モデルが issue の本文から書いたものです。

評価

技術スタック
ios, typescript
領域
cli, mobile-dev, testing-qa
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
活発
明瞭さ
おおむね明確
初心者へのやさしさ
64/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。