agent-browser 0.8.10 → 0.9.0
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.
- package/README.md +92 -0
- package/bin/agent-browser-darwin-arm64 +0 -0
- package/bin/agent-browser-darwin-x64 +0 -0
- package/bin/agent-browser-linux-arm64 +0 -0
- package/bin/agent-browser-linux-x64 +0 -0
- package/bin/agent-browser-win32-x64.exe +0 -0
- package/dist/daemon.d.ts +2 -0
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +89 -45
- package/dist/daemon.js.map +1 -1
- package/dist/ios-actions.d.ts +11 -0
- package/dist/ios-actions.d.ts.map +1 -0
- package/dist/ios-actions.js +228 -0
- package/dist/ios-actions.js.map +1 -0
- package/dist/ios-manager.d.ts +266 -0
- package/dist/ios-manager.d.ts.map +1 -0
- package/dist/ios-manager.js +1073 -0
- package/dist/ios-manager.js.map +1 -0
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +11 -0
- package/dist/protocol.js.map +1 -1
- package/dist/types.d.ts +9 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -1
- package/skills/agent-browser/SKILL.md +26 -0
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* iOS Simulator Manager - Manages iOS Simulator and Safari automation via Appium.
|
|
3
|
+
*
|
|
4
|
+
* This provides 1:1 command parity with BrowserManager for iOS Safari.
|
|
5
|
+
*/
|
|
6
|
+
export interface IOSRefMap {
|
|
7
|
+
[ref: string]: {
|
|
8
|
+
selector: string;
|
|
9
|
+
role?: string;
|
|
10
|
+
name?: string;
|
|
11
|
+
xpath?: string;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export interface IOSEnhancedSnapshot {
|
|
15
|
+
tree: string;
|
|
16
|
+
refs: IOSRefMap;
|
|
17
|
+
}
|
|
18
|
+
interface IOSDeviceInfo {
|
|
19
|
+
name: string;
|
|
20
|
+
udid: string;
|
|
21
|
+
state: string;
|
|
22
|
+
runtime: string;
|
|
23
|
+
isAvailable: boolean;
|
|
24
|
+
isRealDevice?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Manages iOS Simulator and Safari automation via Appium
|
|
28
|
+
*/
|
|
29
|
+
export declare class IOSManager {
|
|
30
|
+
private simctl;
|
|
31
|
+
private browser;
|
|
32
|
+
private appiumProcess;
|
|
33
|
+
private deviceUdid;
|
|
34
|
+
private deviceName;
|
|
35
|
+
private consoleMessages;
|
|
36
|
+
private refMap;
|
|
37
|
+
private lastSnapshot;
|
|
38
|
+
private refCounter;
|
|
39
|
+
private static readonly APPIUM_PORT;
|
|
40
|
+
private static readonly APPIUM_HOST;
|
|
41
|
+
constructor();
|
|
42
|
+
/**
|
|
43
|
+
* Check if browser is launched
|
|
44
|
+
*/
|
|
45
|
+
isLaunched(): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* List connected real iOS devices
|
|
48
|
+
*/
|
|
49
|
+
private listRealDevices;
|
|
50
|
+
/**
|
|
51
|
+
* List available iOS simulators
|
|
52
|
+
*/
|
|
53
|
+
listDevices(): Promise<IOSDeviceInfo[]>;
|
|
54
|
+
/**
|
|
55
|
+
* List all devices (simulators + real devices)
|
|
56
|
+
*/
|
|
57
|
+
listAllDevices(): Promise<IOSDeviceInfo[]>;
|
|
58
|
+
/**
|
|
59
|
+
* Find the best default device (most recent iPhone)
|
|
60
|
+
*/
|
|
61
|
+
private findDefaultDevice;
|
|
62
|
+
/**
|
|
63
|
+
* Find device by name or UDID (searches both simulators and real devices)
|
|
64
|
+
*/
|
|
65
|
+
private findDevice;
|
|
66
|
+
/**
|
|
67
|
+
* Check if Appium is installed
|
|
68
|
+
*/
|
|
69
|
+
private checkAppiumInstalled;
|
|
70
|
+
/**
|
|
71
|
+
* Check if Appium server is already running
|
|
72
|
+
*/
|
|
73
|
+
private isAppiumRunning;
|
|
74
|
+
/**
|
|
75
|
+
* Start Appium server if not already running
|
|
76
|
+
*/
|
|
77
|
+
private startAppiumServer;
|
|
78
|
+
/**
|
|
79
|
+
* Boot the iOS simulator
|
|
80
|
+
*/
|
|
81
|
+
private bootSimulator;
|
|
82
|
+
/**
|
|
83
|
+
* Launch iOS Safari via Appium
|
|
84
|
+
*/
|
|
85
|
+
launch(options?: {
|
|
86
|
+
device?: string;
|
|
87
|
+
udid?: string;
|
|
88
|
+
headless?: boolean;
|
|
89
|
+
}): Promise<void>;
|
|
90
|
+
/**
|
|
91
|
+
* Navigate to URL
|
|
92
|
+
*/
|
|
93
|
+
navigate(url: string): Promise<{
|
|
94
|
+
url: string;
|
|
95
|
+
title: string;
|
|
96
|
+
}>;
|
|
97
|
+
/**
|
|
98
|
+
* Get current URL
|
|
99
|
+
*/
|
|
100
|
+
getUrl(): Promise<string>;
|
|
101
|
+
/**
|
|
102
|
+
* Get page title
|
|
103
|
+
*/
|
|
104
|
+
getTitle(): Promise<string>;
|
|
105
|
+
/**
|
|
106
|
+
* Click/tap an element
|
|
107
|
+
*/
|
|
108
|
+
click(selector: string): Promise<void>;
|
|
109
|
+
/**
|
|
110
|
+
* Alias for click (semantic clarity for touch)
|
|
111
|
+
*/
|
|
112
|
+
tap(selector: string): Promise<void>;
|
|
113
|
+
/**
|
|
114
|
+
* Type text into an element
|
|
115
|
+
*/
|
|
116
|
+
type(selector: string, text: string, options?: {
|
|
117
|
+
delay?: number;
|
|
118
|
+
clear?: boolean;
|
|
119
|
+
}): Promise<void>;
|
|
120
|
+
/**
|
|
121
|
+
* Fill an element (clear first, then type)
|
|
122
|
+
*/
|
|
123
|
+
fill(selector: string, value: string): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Get element by selector or ref
|
|
126
|
+
*/
|
|
127
|
+
private getElement;
|
|
128
|
+
/**
|
|
129
|
+
* Get ref data from ref string
|
|
130
|
+
*/
|
|
131
|
+
private getRefData;
|
|
132
|
+
/**
|
|
133
|
+
* Take a screenshot
|
|
134
|
+
*/
|
|
135
|
+
screenshot(options?: {
|
|
136
|
+
path?: string;
|
|
137
|
+
fullPage?: boolean;
|
|
138
|
+
}): Promise<{
|
|
139
|
+
path?: string;
|
|
140
|
+
base64?: string;
|
|
141
|
+
}>;
|
|
142
|
+
/**
|
|
143
|
+
* Get page snapshot with refs
|
|
144
|
+
*/
|
|
145
|
+
getSnapshot(options?: {
|
|
146
|
+
interactive?: boolean;
|
|
147
|
+
}): Promise<IOSEnhancedSnapshot>;
|
|
148
|
+
/**
|
|
149
|
+
* Get cached ref map
|
|
150
|
+
*/
|
|
151
|
+
getRefMap(): IOSRefMap;
|
|
152
|
+
/**
|
|
153
|
+
* Scroll the page
|
|
154
|
+
*/
|
|
155
|
+
scroll(options?: {
|
|
156
|
+
selector?: string;
|
|
157
|
+
x?: number;
|
|
158
|
+
y?: number;
|
|
159
|
+
direction?: 'up' | 'down' | 'left' | 'right';
|
|
160
|
+
amount?: number;
|
|
161
|
+
}): Promise<void>;
|
|
162
|
+
/**
|
|
163
|
+
* Swipe gesture (iOS-specific)
|
|
164
|
+
*/
|
|
165
|
+
swipe(direction: 'up' | 'down' | 'left' | 'right', options?: {
|
|
166
|
+
distance?: number;
|
|
167
|
+
}): Promise<void>;
|
|
168
|
+
/**
|
|
169
|
+
* Execute JavaScript
|
|
170
|
+
*/
|
|
171
|
+
evaluate<T = unknown>(script: string, ...args: unknown[]): Promise<T>;
|
|
172
|
+
/**
|
|
173
|
+
* Wait for element
|
|
174
|
+
*/
|
|
175
|
+
wait(options: {
|
|
176
|
+
selector?: string;
|
|
177
|
+
timeout?: number;
|
|
178
|
+
state?: 'attached' | 'detached' | 'visible' | 'hidden';
|
|
179
|
+
}): Promise<void>;
|
|
180
|
+
/**
|
|
181
|
+
* Press a key
|
|
182
|
+
*/
|
|
183
|
+
press(key: string): Promise<void>;
|
|
184
|
+
/**
|
|
185
|
+
* Hover over element (limited on touch - just scrolls into view)
|
|
186
|
+
*/
|
|
187
|
+
hover(selector: string): Promise<void>;
|
|
188
|
+
/**
|
|
189
|
+
* Get page content (HTML)
|
|
190
|
+
*/
|
|
191
|
+
getContent(selector?: string): Promise<string>;
|
|
192
|
+
/**
|
|
193
|
+
* Get text content of element
|
|
194
|
+
*/
|
|
195
|
+
getText(selector: string): Promise<string>;
|
|
196
|
+
/**
|
|
197
|
+
* Get attribute value
|
|
198
|
+
*/
|
|
199
|
+
getAttribute(selector: string, attribute: string): Promise<string | null>;
|
|
200
|
+
/**
|
|
201
|
+
* Check if element is visible
|
|
202
|
+
*/
|
|
203
|
+
isVisible(selector: string): Promise<boolean>;
|
|
204
|
+
/**
|
|
205
|
+
* Check if element is enabled
|
|
206
|
+
*/
|
|
207
|
+
isEnabled(selector: string): Promise<boolean>;
|
|
208
|
+
/**
|
|
209
|
+
* Navigate back
|
|
210
|
+
*/
|
|
211
|
+
goBack(): Promise<void>;
|
|
212
|
+
/**
|
|
213
|
+
* Navigate forward
|
|
214
|
+
*/
|
|
215
|
+
goForward(): Promise<void>;
|
|
216
|
+
/**
|
|
217
|
+
* Reload page
|
|
218
|
+
*/
|
|
219
|
+
reload(): Promise<void>;
|
|
220
|
+
/**
|
|
221
|
+
* Select option(s) from dropdown
|
|
222
|
+
*/
|
|
223
|
+
select(selector: string, values: string | string[]): Promise<void>;
|
|
224
|
+
/**
|
|
225
|
+
* Check a checkbox
|
|
226
|
+
*/
|
|
227
|
+
check(selector: string): Promise<void>;
|
|
228
|
+
/**
|
|
229
|
+
* Uncheck a checkbox
|
|
230
|
+
*/
|
|
231
|
+
uncheck(selector: string): Promise<void>;
|
|
232
|
+
/**
|
|
233
|
+
* Focus an element
|
|
234
|
+
*/
|
|
235
|
+
focus(selector: string): Promise<void>;
|
|
236
|
+
/**
|
|
237
|
+
* Clear input field
|
|
238
|
+
*/
|
|
239
|
+
clear(selector: string): Promise<void>;
|
|
240
|
+
/**
|
|
241
|
+
* Get element count
|
|
242
|
+
*/
|
|
243
|
+
count(selector: string): Promise<number>;
|
|
244
|
+
/**
|
|
245
|
+
* Get bounding box
|
|
246
|
+
*/
|
|
247
|
+
getBoundingBox(selector: string): Promise<{
|
|
248
|
+
x: number;
|
|
249
|
+
y: number;
|
|
250
|
+
width: number;
|
|
251
|
+
height: number;
|
|
252
|
+
} | null>;
|
|
253
|
+
/**
|
|
254
|
+
* Get device info
|
|
255
|
+
*/
|
|
256
|
+
getDeviceInfo(): {
|
|
257
|
+
name: string;
|
|
258
|
+
udid: string;
|
|
259
|
+
} | null;
|
|
260
|
+
/**
|
|
261
|
+
* Close browser and cleanup
|
|
262
|
+
*/
|
|
263
|
+
close(): Promise<void>;
|
|
264
|
+
}
|
|
265
|
+
export {};
|
|
266
|
+
//# sourceMappingURL=ios-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ios-manager.d.ts","sourceRoot":"","sources":["../src/ios-manager.ts"],"names":[],"mappings":"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"}
|