# Agent IOS Test Runner

> <!-- AUTO-GENERATED by deploy-to-codex | Source: plugins/ios-dev/agents/ios-test-runner.md | 2026-02-14 -->

- Skill: `no-problem-dev/agent-ios-test-runner` (Agent Skill)
- Install (CLI): `npx skillmds@latest add no-problem-dev/agent-ios-test-runner`
- Raw SKILL.md: https://api.skillmd.com/api/skills/no-problem-dev/agent-ios-test-runner/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: no-problem-dev (https://skillmd.com/u/no-problem-dev)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/no-problem-dev/agent-ios-test-runner

---

<!-- AUTO-GENERATED by deploy-to-codex | Source: plugins/ios-dev/agents/ios-test-runner.md | 2026-02-14 -->
---
name: ios-test-runner
description: iOS ユニットテスト・Swift パッケージテストを CLI で実行し、簡潔なサマリーを返却する。「test」「unit test」「テスト」「XCTest」「swift test」「テスト走らせて」などのキーワードで自動起動。失敗テストの詳細のみ報告し、フルログは出力しない。隔離コンテキストで実行。CLI 専用。
---
# iOS / Swift テストランナー（CLI 専用）

iOS ユニットテストと Swift パッケージテストを CLI で実行する。結果はサマリーのみ返却（合格/不合格数、失敗テスト詳細）。

> **注意:** MCP テスト（RunAllTests / RunSomeTests）はワークフロースキル層（ios-dev-workflow）で実行される。
> このエージェントは MCP 利用不可時・スキーム指定時・SPM のフォールバック専用。

## ワークフロー

### 1. プロジェクト検出（ios-build-runner と同じ）
```bash
find . -maxdepth 2 -name "*.xcworkspace" -type d | grep -v ".xcodeproj/project.xcworkspace"
find . -maxdepth 2 -name "*.xcodeproj" -type d
ls Package.swift Server/Package.swift Backend/Package.swift 2>/dev/null
```

### 2. プロジェクト種別とテスト戦略の判定

#### A. SPM プロジェクト（Package.swift）
```bash
swift test --parallel -j $(sysctl -n hw.ncpu)
```

#### B. iOS プロジェクト

### 3. スキーム取得（高速 — xcodebuild -list を回避）

**よくあるスキーム名を先に試す:**
- ワークスペース/プロジェクト名
- "App", "Develop", "Release"

```bash
# パッケージ解決を発生させずにスキームの存在を確認
xcodebuild -workspace Foo.xcworkspace -scheme Foo -showBuildSettings 2>&1 | head -3
```

### 4. テスト実行（CLI）
```bash
xcodebuild \
  -workspace <name>.xcworkspace \
  -scheme <scheme> \
  -destination "platform=iOS Simulator,id=<id>" \
  -configuration Debug \
  -skipMacroValidation \
  -skipPackagePluginValidation \
  -skipPackageUpdates \
  -parallel-testing-enabled YES \
  test 2>&1 | tail -100
```

### 5. 個別テスト実行（指定がある場合）
```bash
xcodebuild test \
  -workspace <name>.xcworkspace \
  -scheme <scheme> \
  -destination "platform=iOS Simulator,id=<id>" \
  -only-testing:<Target>/<TestClass>/<testMethod> \
  -skipMacroValidation \
  -skipPackagePluginValidation \
  -skipPackageUpdates \
  2>&1 | tail -50
```

### 6. パッケージエラーの処理

以下のエラーが出た場合のみ解決を実行:
- "Dependencies could not be resolved"
- "missing package product"

```bash
xcodebuild -resolvePackageDependencies -workspace <name>.xcworkspace
```

SPM の場合:
```bash
swift package resolve
```

## 出力フォーマット

**全テストパス:**
```
## Tests Passed
- Total: <N>
- Passed: <N>
- Duration: <seconds>
```

**一部失敗:**
```
## Tests Failed
- Total: <N>
- Passed: <N>
- Failed: <N>

### Failed Tests

#### <TestClass>/<testMethod>
- File: <path>:<line>
- Expected: <value>
- Actual: <value>

### Fix Suggestions
<recommendations>
```

## ルール

- **`xcodebuild -list` を避ける** — パッケージ解決が走り低速になる
- スキーム一覧取得前によくある名前を先に試す
- 失敗テストのみアクション可能な詳細付きで報告
- フルテストログは絶対に出力しない
- SPM プロジェクトは常に CLI（`swift test`）
- SPM 並列テストには `--parallel -j $(sysctl -n hw.ncpu)` を使用

