Purpose: clipboard.py manages the iOS simulator's clipboard to enable automated testing of paste flows. It allows copying text to the simulator clipboard programmatically, eliminating the need for manual text entry when testing input validation or clipboard-dependent features. ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py1-9
Scope: This script is part of the Advanced Testing Scripts category. It specifically handles the transfer of string data into the simulator's system pasteboard using the simctl pbcopy utility. ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py18-19 ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py39
The ClipboardManager class provides a programmatic interface to the simulator's clipboard. This is optimized for minimal token output when used with Claude Code, providing concise confirmation of the action and suggested next steps for interaction. ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py3-6 ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py91-95
The script is primarily used to:
navigator.py and keyboard.py. ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py92-95Sources: ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py1-9 ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py18-19 ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py91-95
The core logic resides in the ClipboardManager class, which wraps the xcrun simctl pbcopy command. ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py18-52
| Method | Description |
|---|---|
__init__(udid) | Initializes the manager with a specific device UDID or defaults to None. ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py21-27 |
copy(text) | Executes the subprocess command to push text into the simulator's pasteboard. If no UDID is provided to the manager, it defaults the command target to "booted". ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py29-52 |
The following diagram illustrates how a user's intent to copy text is translated through the script's internal entities to the system level.
Diagram: Command Translation Flow
Sources: ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py21-52 ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py55-78 ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py15
| Argument | Requirement | Description |
|---|---|---|
--copy | Required | The string content to be placed on the clipboard. ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py58 |
--udid | Optional | Specific simulator UDID. If omitted, resolve_udid attempts to find the active booted simulator. ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py59-62 |
--test-name | Optional | Label for the current test scenario, included in the output for logging. ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py63 |
--expected | Optional | Documentation of the expected behavior after a subsequent paste. ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py64 |
Sources: ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py57-66
clipboard.py serves as a bridge between the host machine's environment and the virtualized iOS environment.
Diagram: Toolchain Integration
Because pbcopy only places text in the buffer, it must be paired with interaction scripts to complete a test case. The script explicitly suggests these next steps in its standard output. ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py91-95
python scripts/clipboard.py --copy "test@example.com" ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py8-9python scripts/navigator.py --find-type TextField --tap ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py93python scripts/keyboard.py --key return or python scripts/keyboard.py --key cmd+v ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py94-95Sources: ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py39-46 ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py92-95
The script generates a concise string to save context window space:
Copied: "text" (test: scenario_name) ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py80-85
If --expected is provided, it adds:
Expected: behavior_description ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py88-89
resolve_udid (imported from common) cannot find a target or fails, the script prints the error and exits with code 1. ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py69-73simctl pbcopy fails (e.g., simulator is not booted or unresponsive), the copy method catches the subprocess.CalledProcessError, returns False, and the script exits with code 1. ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py51-52 ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py98-99Sources: ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py48-52 ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py69-73 ios-simulator-skill/skills/ios-simulator-skill/scripts/clipboard.py78-99
Refresh this wiki