getsentry / getsentry/XcodeBuildMCP

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

Đã đóng
#514 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
bug stale
Ngôn ngữ chính
TypeScript
Star
6.4k
Fork
319
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

### 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.
```

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

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.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
ios, typescript
Lĩnh vực
cli, mobile-dev, testing-qa
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Sôi nổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
64/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.