feat(ui-automation): Add rs/1 runtime automation parity #416
4 issues
xcodebuildmcp-test-boundary-review: Found 4 issues (1 high, 1 medium, 2 low)
High
Test expects all 3 testCases returned but normalizeTestCases still filters to failures-only - `src/snapshot-tests/__tests__/json-normalize.test.ts:29-36`
The updated test expects the normalized envelope to include all 3 test cases (1 failed + 2 passed), but normalizeTestCases in json-normalize.ts returns failed.length > 0 ? failed : sorted, so only the 1 failed item is returned — the test will fail as written.
Also found at:
src/snapshot-tests/__tests__/json-normalize.test.ts:156
Medium
swipe--success snapshot contract removed and replaced with error-only fixture - `src/snapshot-tests/suites/ui-automation-suite.ts:124-136`
The swipe success test case was replaced by error - target not actionable, permanently removing the swipe--success snapshot fixture from the live contract; swipe success behaviour is no longer covered by any snapshot test.
Also found at:
src/snapshot-tests/suites/ui-automation-suite.ts:228-242
Low
long_press, swipe, tap, touch drop text-output contract checks — any non-empty string passes - `src/mcp/tools/ui-automation/__tests__/non_streaming_progress.test.ts:163-167`
The four tool cases have no expectedText, so the loop falls through to expect(result.text().trim().length).toBeGreaterThan(0), which accepts any output and won't catch regressions in the rendered success message for those tools.
Bespoke `createBootedScreenshotMockExecutor` duplicates `createCommandMatchingMockExecutor` - `src/mcp/tools/ui-automation/__tests__/screenshot.test.ts:36-50`
Replace the inline createBootedScreenshotMockExecutor with createCommandMatchingMockExecutor, which was purpose-built for multi-command tools and whose JSDoc even cites screenshot: simctl + sips as the canonical example.
Also found at:
src/mcp/tools/ui-automation/__tests__/ui-action-test-helpers.ts:58-60
⏱ 26m 15s · 4.0M in / 197.3k out · $7.92
Annotations
Check failure on line 36 in src/snapshot-tests/__tests__/json-normalize.test.ts
github-actions / warden: xcodebuildmcp-test-boundary-review
Test expects all 3 testCases returned but normalizeTestCases still filters to failures-only
The updated test expects the normalized envelope to include all 3 test cases (1 failed + 2 passed), but `normalizeTestCases` in `json-normalize.ts` returns `failed.length > 0 ? failed : sorted`, so only the 1 failed item is returned — the test will fail as written.
Check failure on line 156 in src/snapshot-tests/__tests__/json-normalize.test.ts
github-actions / warden: xcodebuildmcp-test-boundary-review
[A8W-VQF] Test expects all 3 testCases returned but normalizeTestCases still filters to failures-only (additional location)
The updated test expects the normalized envelope to include all 3 test cases (1 failed + 2 passed), but `normalizeTestCases` in `json-normalize.ts` returns `failed.length > 0 ? failed : sorted`, so only the 1 failed item is returned — the test will fail as written.
Check warning on line 136 in src/snapshot-tests/suites/ui-automation-suite.ts
github-actions / warden: xcodebuildmcp-test-boundary-review
swipe--success snapshot contract removed and replaced with error-only fixture
The swipe `success` test case was replaced by `error - target not actionable`, permanently removing the `swipe--success` snapshot fixture from the live contract; swipe success behaviour is no longer covered by any snapshot test.
Check warning on line 242 in src/snapshot-tests/suites/ui-automation-suite.ts
github-actions / warden: xcodebuildmcp-test-boundary-review
[8SG-QPS] swipe--success snapshot contract removed and replaced with error-only fixture (additional location)
The swipe `success` test case was replaced by `error - target not actionable`, permanently removing the `swipe--success` snapshot fixture from the live contract; swipe success behaviour is no longer covered by any snapshot test.