# AI use cases for DSH iOS (ZSeven-W/dsh-ios)

Repo: [ZSeven-W/dsh-ios](https://github.com/ZSeven-W/dsh-ios) | Use cases: 4 | Page: https://dedupedai.com/use-cases/zseven-w-dsh-ios/

DSH iOS Simulator is a DeepSeek Harness plugin that gives an agent a live iOS Simulator, and a USB-connected iPhone, inside the conversation, with 22 tools to boot, build, and drive the device.

This file holds every use case of this repo. Each one starts with a "## " heading and ends with its URL.

- Build an Xcode app in the simulator and check the result: https://dedupedai.com/use-cases/zseven-w-dsh-ios/build-run-check-xcode-app-in-simulator/
- Tap app controls by label and confirm the result: https://dedupedai.com/use-cases/zseven-w-dsh-ios/drive-app-ui-by-accessibility-label/
- Check that a list row counter moves after a tap: https://dedupedai.com/use-cases/zseven-w-dsh-ios/verify-list-row-counter-changes/
- Drive a real iPhone over USB from the conversation: https://dedupedai.com/use-cases/zseven-w-dsh-ios/test-app-on-real-iphone-over-usb/

## How to build an Xcode app in the simulator and check the result with DSH iOS

Repo: [ZSeven-W/dsh-ios](https://github.com/ZSeven-W/dsh-ios) | Difficulty: Intermediate | Time: 1 hour | Basis: From the README

Have the agent build your project, launch it on a simulator, and report what the screen shows.

**Who it is for:** An iOS developer who wants an agent to verify a code change in the running app without switching to Xcode.

**The problem:** Checking each change means building, launching, and looking at the simulator by hand, which breaks focus during a coding session.

**The outcome:** The agent builds the project, installs and launches it, and returns a screenshot and the visible UI tree for review.

### Steps

1. Install the npm package @zseven-w/dsh-ios into DeepSeek Harness. (inferred, check the README)
2. Call ios_sim_devices to list simulators and find the udid of the device you want.
3. Call ios_sim_boot with the udid to boot the device and start the live panel.
4. Call ios_sim_build_run with the projectPath of your .xcodeproj, .xcworkspace, or Swift package, and the scheme if needed.
5. Call ios_sim_screenshot and ios_sim_ui_tree to confirm the expected screen is showing.

### Prompt to paste into your agent

```text
Use the dsh-ios plugin from the ZSeven-W/dsh-ios repo to boot the simulator <udid>, build and run the project at <projectPath> with ios_sim_build_run, then call ios_sim_screenshot. Report the build result and the screenshot path. Verify that the build returned success before you report the screen.
```

### Caveat

A full build takes minutes, and the README says the tools only work on a macOS host with serve-sim resolvable.

Dual-use notice: only use this on software, sites and systems you own or are authorized to test.

Disclaimer: Third-party repos we don't own or vouch for. AI-generated use cases can be wrong: review everything and run at your own risk. Full text: https://dedupedai.com/disclaimer/

URL: https://dedupedai.com/use-cases/zseven-w-dsh-ios/build-run-check-xcode-app-in-simulator/

## How to tap app controls by label and confirm the result with DSH iOS

Repo: [ZSeven-W/dsh-ios](https://github.com/ZSeven-W/dsh-ios) | Difficulty: Intermediate | Time: 1 hour | Basis: From the README

Drive a simulator app by accessibility identity and check the expected text appears after each tap.

**Who it is for:** A QA engineer testing a flow in an app who wants stable taps that do not depend on screen coordinates.

**The problem:** Coordinate-based taps break when layouts shift, and manual testing is slow to repeat.

**The outcome:** The agent taps elements by label or identifier and reports whether the expected text or state appeared.

### Steps

1. Call ios_sim_ui_tree on the booted simulator to list labels and identifiers on the frontmost screen.
2. Call ios_sim_tap_element with the identifier or label of the control you want.
3. Add expect_text or expect_gone to the same call so the tap and its check run in one round trip.
4. If the tap is ambiguous, read the listed candidates and call ios_sim_tap_element again with a more specific identifier.

### Prompt to paste into your agent

```text
Using the dsh-ios plugin in the ZSeven-W/dsh-ios repo, call ios_sim_tap_element on the simulator <udid> for the element labeled <label>, with expect_text set to <expectedText>. Report the expected.matched result and the screenshot path. Verify that expected.matched is true before you confirm the step passed.
```

### Caveat

Taps match on label or identifier text, so apps with duplicate or unlabeled controls may return ambiguous matches that need a narrower identifier.

Dual-use notice: only use this on software, sites and systems you own or are authorized to test.

Disclaimer: Third-party repos we don't own or vouch for. AI-generated use cases can be wrong: review everything and run at your own risk. Full text: https://dedupedai.com/disclaimer/

URL: https://dedupedai.com/use-cases/zseven-w-dsh-ios/drive-app-ui-by-accessibility-label/

## How to check that a list row counter moves after a tap with DSH iOS

Repo: [ZSeven-W/dsh-ios](https://github.com/ZSeven-W/dsh-ios) | Difficulty: Advanced | Time: 1.5 hours | Basis: From the README

Tap a like or reply action inside a feed row and confirm the counter changed by exactly one.

**Who it is for:** A mobile tester checking a feed or list app, where each row's summary is one accessibility label with counters.

**The problem:** List apps put all counters into one cell label, so a plain tap gives no proof that the action worked.

**The outcome:** The agent reads the rows, taps inside the chosen row, and reports whether the counter moved by the expected amount.

### Steps

1. Call ios_sim_ui_rows to read the visible rows and their parsed counters.
2. Note the row index and the exact counter key you want to check.
3. Call ios_sim_tap_row with that index, the x and y fractions, and expect_count set to the key and a delta of 1 or -1.
4. Read countCheck.verified in the result before you accept the action.

### Prompt to paste into your agent

```text
Use the dsh-ios plugin in the ZSeven-W/dsh-ios repo to call ios_sim_ui_rows on the simulator <udid>, then ios_sim_tap_row at index <index> with expect_count set to <key> and delta <delta>. Report countCheck.verified and the counter values. Verify that countCheck.verified is true before you report success.
```

### Caveat

Counters are parsed heuristically, so the key must match exactly as ios_sim_ui_rows lists it, and rows only appear at a deep snapshot.

Dual-use notice: only use this on software, sites and systems you own or are authorized to test.

Disclaimer: Third-party repos we don't own or vouch for. AI-generated use cases can be wrong: review everything and run at your own risk. Full text: https://dedupedai.com/disclaimer/

URL: https://dedupedai.com/use-cases/zseven-w-dsh-ios/verify-list-row-counter-changes/

## How to drive a real iPhone over USB from the conversation with DSH iOS

Repo: [ZSeven-W/dsh-ios](https://github.com/ZSeven-W/dsh-ios) | Difficulty: Advanced | Time: 2 hours | Basis: From the README

Start WebDriverAgent on a connected iPhone and use the same tools and live panel as the simulator.

**Who it is for:** A developer testing on physical hardware who needs a screen view and taps on a phone without setting up the tunnels by hand.

**The problem:** Setting up WebDriverAgent and its ports on a real device takes many manual steps before any testing can start.

**The outcome:** The agent starts WebDriverAgent on the phone and returns a screenshot and UI tree from the device.

### Steps

1. Call ios_sim_devices and copy the udid of your iPhone from realDevices.
2. Unlock the iPhone and confirm developer mode is on, as shown in the realDevices state.
3. Call ios_real_start_wda with that udid and wait, since a cold build takes minutes.
4. Call ios_sim_screenshot and ios_sim_ui_tree with the same udid to read the phone screen.

### Prompt to paste into your agent

```text
Using the dsh-ios plugin in the ZSeven-W/dsh-ios repo, call ios_real_start_wda with the physical-device udid <udid>, then ios_sim_screenshot for that udid. Report the control and MJPEG ports and the screenshot path. Verify that WebDriverAgent reports ready before you take any tap action on the phone.
```

### Caveat

The README says the device must be unlocked and device builds need Apple Development signing, so setup can stall without both.

Risk, credentials: The phone may be signed into personal accounts, so taps and typing on it act on real accounts, which the plugin gates with identify-before-tap rules.

Dual-use notice: only use this on software, sites and systems you own or are authorized to test.

Disclaimer: Third-party repos we don't own or vouch for. AI-generated use cases can be wrong: review everything and run at your own risk. Full text: https://dedupedai.com/disclaimer/

URL: https://dedupedai.com/use-cases/zseven-w-dsh-ios/test-app-on-real-iphone-over-usb/
