@houwert/conductor 0.12.3 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,182 +0,0 @@
1
- # Conductor Flow Syntax Reference
2
-
3
- Conductor flows are YAML files that describe sequences of mobile UI actions.
4
-
5
- ## Basic Structure
6
-
7
- ```yaml
8
- appId: com.example.myapp
9
- ---
10
- - launchApp
11
- - tapOn: "Sign In"
12
- - inputText: "user@example.com"
13
- - takeScreenshot: /tmp/after-login
14
- ```
15
-
16
- ## Common Commands
17
-
18
- ### App Control
19
-
20
- ```yaml
21
- - launchApp
22
- - launchApp:
23
- appId: com.other.app # launch a different app
24
- - stopApp
25
- - stopApp:
26
- appId: com.other.app
27
- - clearState # clear app data
28
- - clearKeychain # clear keychain (iOS: full keychain; Android: account credentials)
29
- - uninstallApp # uninstall app from device
30
- - uninstallApp: com.other.app # uninstall a specific app
31
- ```
32
-
33
- ### Tapping
34
-
35
- ```yaml
36
- - tapOn: "Button Text" # by text
37
- - tapOn:
38
- id: "button_id" # by accessibility ID
39
- - tapOn:
40
- text: "Submit"
41
- index: 1 # second match
42
- - longPressOn: "Element"
43
- - doubleTapOn: "Element"
44
- ```
45
-
46
- ### Text Input
47
-
48
- ```yaml
49
- - inputText: "hello world"
50
- - eraseText # erase 50 characters from focused field
51
- - eraseText:
52
- charactersToErase: 10 # erase specific number of characters
53
- - pressKey: Enter
54
- - pressKey: Backspace
55
- - pressKey: Home
56
- - pressKey: Remote Dpad Down # Android TV only; also Up, Left, Right, Center, Remote Media Play Pause, Remote Media Stop, Remote Media Next, Remote Media Previous, Remote Media Rewind, Remote Media Fast Forward, Remote System Navigation Up, Remote System Navigation Down, Remote Button A, Remote Button B, Remote Menu, TV Input, TV Input HDMI 1/2/3
57
- - pasteText: "pasted content" # paste text into focused field
58
- - copyTextFrom: "Element" # copy element's text to output.textContent
59
- ```
60
-
61
- ### Scrolling & Swiping
62
-
63
- ```yaml
64
- - scroll # scroll down
65
- - scrollUntilVisible:
66
- element:
67
- text: "Target"
68
- - swipe:
69
- direction: UP # UP | DOWN | LEFT | RIGHT
70
- - swipe:
71
- start: { x: 50%, y: 80% }
72
- end: { x: 50%, y: 20% }
73
- ```
74
-
75
- ### Navigation
76
-
77
- ```yaml
78
- - back # Android back button
79
- - hideKeyboard
80
- - openLink: "myapp://screen" # deep link
81
- ```
82
-
83
- ### Assertions
84
-
85
- ```yaml
86
- - assertVisible: "Welcome"
87
- - assertVisible:
88
- text: "Welcome"
89
- enabled: true
90
- - assertNotVisible: "Error"
91
- - assertTrue:
92
- condition: "${count} > 0"
93
- - assertFalse:
94
- condition: "${error} == true"
95
- ```
96
-
97
- ### Waiting
98
-
99
- ```yaml
100
- - waitForAnimationToEnd
101
- - extendedWaitUntil:
102
- visible:
103
- text: "Loading complete"
104
- timeout: 5000
105
- ```
106
-
107
- ### Screenshots & Recording
108
-
109
- ```yaml
110
- - takeScreenshot: /tmp/my-screenshot # saves as /tmp/my-screenshot.png
111
- - startRecording: /tmp/recording.mp4 # start screen recording
112
- - stopRecording # stop screen recording
113
- ```
114
-
115
- ### Variables & Conditions
116
-
117
- ```yaml
118
- - evalScript: ${MY_VAR = "hello"}
119
- - runScript:
120
- file: ./setup.js # run a JS file; output object is merged into flow env
121
- - runFlow:
122
- file: ./other-flow.yaml
123
- env:
124
- USERNAME: "testuser"
125
- - runFlow:
126
- when:
127
- visible: "Login"
128
- file: ./login.yaml
129
- ```
130
-
131
- ### Repeat & Retry
132
-
133
- ```yaml
134
- - repeat:
135
- times: 3
136
- commands:
137
- - tapOn: "Retry"
138
- - repeat:
139
- while:
140
- notVisible: "Done"
141
- commands:
142
- - scroll
143
- - retry:
144
- maxRetries: 2
145
- commands:
146
- - tapOn: "Submit"
147
- - assertVisible: "Success"
148
- ```
149
-
150
- ### Device & Permissions
151
-
152
- ```yaml
153
- - setPermissions:
154
- com.example.myapp:
155
- notifications: allow
156
- camera: deny
157
- all: allow # grant all permissions at once
158
- - setLocation:
159
- latitude: 52.3676
160
- longitude: 4.9041
161
- - setOrientation: landscape # portrait | landscape
162
- ```
163
-
164
- ## Environment Variables
165
-
166
- Pass values from the environment:
167
-
168
- ```yaml
169
- appId: ${APP_ID}
170
- ---
171
- - inputText: ${USERNAME}
172
- ```
173
-
174
- Run with: `conductor run-flow flow.yaml -e APP_ID=com.example -e USERNAME=test`
175
-
176
- ## Tips for AI Agents
177
-
178
- - Use `conductor inspect` to find element text/IDs before tapping
179
- - Use `assertVisible` to confirm navigation succeeded
180
- - Use `takeScreenshot` after key actions for verification
181
- - Use `scrollUntilVisible` to reach off-screen elements
182
- - IDs are more stable than text labels for long-lived tests
@@ -1,8 +0,0 @@
1
- skills:
2
- - name: conductor
3
- path: conductor/SKILL.md
4
- description: "Token-efficient CLI for mobile UI testing, designed for AI agents"
5
- category: service
6
- version: 0.12.3
7
- requires:
8
- bins: [conductor]