@kritchoff/agent-browser 0.9.2
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/LICENSE +201 -0
- package/README.md +903 -0
- package/README.sdk.md +77 -0
- package/bin/agent-browser-linux-x64 +0 -0
- package/bin/agent-browser.js +109 -0
- package/dist/actions.d.ts +17 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +1427 -0
- package/dist/actions.js.map +1 -0
- package/dist/browser.d.ts +474 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +1566 -0
- package/dist/browser.js.map +1 -0
- package/dist/cdp-client.d.ts +103 -0
- package/dist/cdp-client.d.ts.map +1 -0
- package/dist/cdp-client.js +223 -0
- package/dist/cdp-client.js.map +1 -0
- package/dist/daemon.d.ts +60 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +401 -0
- package/dist/daemon.js.map +1 -0
- package/dist/dualmode-config.d.ts +37 -0
- package/dist/dualmode-config.d.ts.map +1 -0
- package/dist/dualmode-config.js +44 -0
- package/dist/dualmode-config.js.map +1 -0
- package/dist/dualmode-fetcher.d.ts +60 -0
- package/dist/dualmode-fetcher.d.ts.map +1 -0
- package/dist/dualmode-fetcher.js +449 -0
- package/dist/dualmode-fetcher.js.map +1 -0
- package/dist/dualmode-types.d.ts +183 -0
- package/dist/dualmode-types.d.ts.map +1 -0
- package/dist/dualmode-types.js +8 -0
- package/dist/dualmode-types.js.map +1 -0
- 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 +26 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +832 -0
- package/dist/protocol.js.map +1 -0
- package/dist/snapshot.d.ts +83 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +653 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/stream-server.d.ts +117 -0
- package/dist/stream-server.d.ts.map +1 -0
- package/dist/stream-server.js +305 -0
- package/dist/stream-server.js.map +1 -0
- package/dist/types.d.ts +742 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/docker-compose.sdk.yml +45 -0
- package/package.json +85 -0
- package/scripts/benchmark.sh +80 -0
- package/scripts/build-all-platforms.sh +68 -0
- package/scripts/check-version-sync.js +39 -0
- package/scripts/copy-native.js +36 -0
- package/scripts/fast_reset.sh +108 -0
- package/scripts/postinstall.js +235 -0
- package/scripts/publish_images.sh +55 -0
- package/scripts/snapshot_manager.sh +293 -0
- package/scripts/start-android-agent.sh +49 -0
- package/scripts/sync-version.js +69 -0
- package/scripts/vaccine-run +26 -0
- package/sdk.sh +153 -0
- package/skills/agent-browser/SKILL.md +217 -0
- package/skills/agent-browser/references/authentication.md +202 -0
- package/skills/agent-browser/references/commands.md +259 -0
- package/skills/agent-browser/references/proxy-support.md +188 -0
- package/skills/agent-browser/references/session-management.md +193 -0
- package/skills/agent-browser/references/snapshot-refs.md +194 -0
- package/skills/agent-browser/references/video-recording.md +173 -0
- package/skills/agent-browser/templates/authenticated-session.sh +97 -0
- package/skills/agent-browser/templates/capture-workflow.sh +69 -0
- package/skills/agent-browser/templates/form-automation.sh +62 -0
- package/skills/skill-creator/LICENSE.txt +202 -0
- package/skills/skill-creator/SKILL.md +356 -0
- package/skills/skill-creator/references/output-patterns.md +82 -0
- package/skills/skill-creator/references/workflows.md +28 -0
- package/skills/skill-creator/scripts/init_skill.py +303 -0
- package/skills/skill-creator/scripts/package_skill.py +113 -0
- package/skills/skill-creator/scripts/quick_validate.py +95 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* iOS command execution - mirrors actions.ts but for iOS Safari via Appium.
|
|
3
|
+
* Provides 1:1 command parity where possible.
|
|
4
|
+
*/
|
|
5
|
+
import type { IOSManager } from './ios-manager.js';
|
|
6
|
+
import type { Command, Response } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Execute a command on the iOS manager
|
|
9
|
+
*/
|
|
10
|
+
export declare function executeIOSCommand(command: Command, manager: IOSManager): Promise<Response>;
|
|
11
|
+
//# sourceMappingURL=ios-actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ios-actions.d.ts","sourceRoot":"","sources":["../src/ios-actions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAUpD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CA6PhG"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* iOS command execution - mirrors actions.ts but for iOS Safari via Appium.
|
|
3
|
+
* Provides 1:1 command parity where possible.
|
|
4
|
+
*/
|
|
5
|
+
function successResponse(id, data) {
|
|
6
|
+
return { id, success: true, data };
|
|
7
|
+
}
|
|
8
|
+
function errorResponse(id, error) {
|
|
9
|
+
return { id, success: false, error };
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Execute a command on the iOS manager
|
|
13
|
+
*/
|
|
14
|
+
export async function executeIOSCommand(command, manager) {
|
|
15
|
+
const { id, action } = command;
|
|
16
|
+
try {
|
|
17
|
+
switch (action) {
|
|
18
|
+
case 'launch': {
|
|
19
|
+
const cmd = command;
|
|
20
|
+
await manager.launch({
|
|
21
|
+
device: cmd.device,
|
|
22
|
+
udid: cmd.udid,
|
|
23
|
+
});
|
|
24
|
+
const info = manager.getDeviceInfo();
|
|
25
|
+
return successResponse(id, {
|
|
26
|
+
launched: true,
|
|
27
|
+
device: info?.name ?? 'iOS Simulator',
|
|
28
|
+
udid: info?.udid,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
case 'navigate': {
|
|
32
|
+
const cmd = command;
|
|
33
|
+
const result = await manager.navigate(cmd.url);
|
|
34
|
+
return successResponse(id, result);
|
|
35
|
+
}
|
|
36
|
+
case 'click': {
|
|
37
|
+
const cmd = command;
|
|
38
|
+
await manager.click(cmd.selector);
|
|
39
|
+
return successResponse(id, { clicked: true });
|
|
40
|
+
}
|
|
41
|
+
case 'tap': {
|
|
42
|
+
const cmd = command;
|
|
43
|
+
await manager.tap(cmd.selector);
|
|
44
|
+
return successResponse(id, { tapped: true });
|
|
45
|
+
}
|
|
46
|
+
case 'type': {
|
|
47
|
+
const cmd = command;
|
|
48
|
+
await manager.type(cmd.selector, cmd.text, {
|
|
49
|
+
delay: cmd.delay,
|
|
50
|
+
clear: cmd.clear,
|
|
51
|
+
});
|
|
52
|
+
return successResponse(id, { typed: true });
|
|
53
|
+
}
|
|
54
|
+
case 'fill': {
|
|
55
|
+
const cmd = command;
|
|
56
|
+
await manager.fill(cmd.selector, cmd.value);
|
|
57
|
+
return successResponse(id, { filled: true });
|
|
58
|
+
}
|
|
59
|
+
case 'screenshot': {
|
|
60
|
+
const cmd = command;
|
|
61
|
+
const result = await manager.screenshot({
|
|
62
|
+
path: cmd.path,
|
|
63
|
+
fullPage: cmd.fullPage,
|
|
64
|
+
});
|
|
65
|
+
return successResponse(id, result);
|
|
66
|
+
}
|
|
67
|
+
case 'snapshot': {
|
|
68
|
+
const cmd = command;
|
|
69
|
+
const result = await manager.getSnapshot({
|
|
70
|
+
interactive: cmd.interactive,
|
|
71
|
+
});
|
|
72
|
+
return successResponse(id, { snapshot: result.tree, refs: result.refs });
|
|
73
|
+
}
|
|
74
|
+
case 'scroll': {
|
|
75
|
+
const cmd = command;
|
|
76
|
+
await manager.scroll({
|
|
77
|
+
selector: cmd.selector,
|
|
78
|
+
x: cmd.x,
|
|
79
|
+
y: cmd.y,
|
|
80
|
+
direction: cmd.direction,
|
|
81
|
+
amount: cmd.amount,
|
|
82
|
+
});
|
|
83
|
+
return successResponse(id, { scrolled: true });
|
|
84
|
+
}
|
|
85
|
+
case 'swipe': {
|
|
86
|
+
const cmd = command;
|
|
87
|
+
await manager.swipe(cmd.direction, { distance: cmd.distance });
|
|
88
|
+
return successResponse(id, { swiped: true });
|
|
89
|
+
}
|
|
90
|
+
case 'evaluate': {
|
|
91
|
+
const cmd = command;
|
|
92
|
+
const result = await manager.evaluate(cmd.script, ...(cmd.args ?? []));
|
|
93
|
+
return successResponse(id, { result });
|
|
94
|
+
}
|
|
95
|
+
case 'wait': {
|
|
96
|
+
const cmd = command;
|
|
97
|
+
await manager.wait({
|
|
98
|
+
selector: cmd.selector,
|
|
99
|
+
timeout: cmd.timeout,
|
|
100
|
+
state: cmd.state,
|
|
101
|
+
});
|
|
102
|
+
return successResponse(id, { waited: true });
|
|
103
|
+
}
|
|
104
|
+
case 'press': {
|
|
105
|
+
const cmd = command;
|
|
106
|
+
await manager.press(cmd.key);
|
|
107
|
+
return successResponse(id, { pressed: true });
|
|
108
|
+
}
|
|
109
|
+
case 'hover': {
|
|
110
|
+
const cmd = command;
|
|
111
|
+
await manager.hover(cmd.selector);
|
|
112
|
+
return successResponse(id, { hovered: true });
|
|
113
|
+
}
|
|
114
|
+
case 'content': {
|
|
115
|
+
const cmd = command;
|
|
116
|
+
const html = await manager.getContent(cmd.selector);
|
|
117
|
+
return successResponse(id, { html });
|
|
118
|
+
}
|
|
119
|
+
case 'gettext': {
|
|
120
|
+
const cmd = command;
|
|
121
|
+
const text = await manager.getText(cmd.selector);
|
|
122
|
+
return successResponse(id, { text });
|
|
123
|
+
}
|
|
124
|
+
case 'getattribute': {
|
|
125
|
+
const cmd = command;
|
|
126
|
+
const value = await manager.getAttribute(cmd.selector, cmd.attribute);
|
|
127
|
+
return successResponse(id, { value });
|
|
128
|
+
}
|
|
129
|
+
case 'isvisible': {
|
|
130
|
+
const cmd = command;
|
|
131
|
+
const visible = await manager.isVisible(cmd.selector);
|
|
132
|
+
return successResponse(id, { visible });
|
|
133
|
+
}
|
|
134
|
+
case 'isenabled': {
|
|
135
|
+
const cmd = command;
|
|
136
|
+
const enabled = await manager.isEnabled(cmd.selector);
|
|
137
|
+
return successResponse(id, { enabled });
|
|
138
|
+
}
|
|
139
|
+
case 'url': {
|
|
140
|
+
const url = await manager.getUrl();
|
|
141
|
+
return successResponse(id, { url });
|
|
142
|
+
}
|
|
143
|
+
case 'title': {
|
|
144
|
+
const title = await manager.getTitle();
|
|
145
|
+
return successResponse(id, { title });
|
|
146
|
+
}
|
|
147
|
+
case 'back': {
|
|
148
|
+
await manager.goBack();
|
|
149
|
+
return successResponse(id, { navigated: 'back' });
|
|
150
|
+
}
|
|
151
|
+
case 'forward': {
|
|
152
|
+
await manager.goForward();
|
|
153
|
+
return successResponse(id, { navigated: 'forward' });
|
|
154
|
+
}
|
|
155
|
+
case 'reload': {
|
|
156
|
+
await manager.reload();
|
|
157
|
+
return successResponse(id, { reloaded: true });
|
|
158
|
+
}
|
|
159
|
+
case 'select': {
|
|
160
|
+
const cmd = command;
|
|
161
|
+
await manager.select(cmd.selector, cmd.values);
|
|
162
|
+
return successResponse(id, { selected: true });
|
|
163
|
+
}
|
|
164
|
+
case 'check': {
|
|
165
|
+
const cmd = command;
|
|
166
|
+
await manager.check(cmd.selector);
|
|
167
|
+
return successResponse(id, { checked: true });
|
|
168
|
+
}
|
|
169
|
+
case 'uncheck': {
|
|
170
|
+
const cmd = command;
|
|
171
|
+
await manager.uncheck(cmd.selector);
|
|
172
|
+
return successResponse(id, { unchecked: true });
|
|
173
|
+
}
|
|
174
|
+
case 'focus': {
|
|
175
|
+
const cmd = command;
|
|
176
|
+
await manager.focus(cmd.selector);
|
|
177
|
+
return successResponse(id, { focused: true });
|
|
178
|
+
}
|
|
179
|
+
case 'clear': {
|
|
180
|
+
const cmd = command;
|
|
181
|
+
await manager.clear(cmd.selector);
|
|
182
|
+
return successResponse(id, { cleared: true });
|
|
183
|
+
}
|
|
184
|
+
case 'count': {
|
|
185
|
+
const cmd = command;
|
|
186
|
+
const count = await manager.count(cmd.selector);
|
|
187
|
+
return successResponse(id, { count });
|
|
188
|
+
}
|
|
189
|
+
case 'boundingbox': {
|
|
190
|
+
const cmd = command;
|
|
191
|
+
const box = await manager.getBoundingBox(cmd.selector);
|
|
192
|
+
return successResponse(id, { box });
|
|
193
|
+
}
|
|
194
|
+
case 'close': {
|
|
195
|
+
await manager.close();
|
|
196
|
+
return successResponse(id, { closed: true });
|
|
197
|
+
}
|
|
198
|
+
// iOS-specific: device list
|
|
199
|
+
case 'device_list': {
|
|
200
|
+
const devices = await manager.listDevices();
|
|
201
|
+
return successResponse(id, { devices });
|
|
202
|
+
}
|
|
203
|
+
// Commands that don't apply to iOS Safari
|
|
204
|
+
case 'tab_new':
|
|
205
|
+
case 'tab_list':
|
|
206
|
+
case 'tab_switch':
|
|
207
|
+
case 'tab_close':
|
|
208
|
+
case 'window_new':
|
|
209
|
+
return errorResponse(id, `Command '${action}' is not supported on iOS Safari. Mobile Safari does not support programmatic tab management.`);
|
|
210
|
+
case 'pdf':
|
|
211
|
+
return errorResponse(id, 'PDF generation is not supported on iOS Safari.');
|
|
212
|
+
case 'screencast_start':
|
|
213
|
+
case 'screencast_stop':
|
|
214
|
+
return errorResponse(id, 'Screencast is not supported on iOS (requires CDP).');
|
|
215
|
+
case 'recording_start':
|
|
216
|
+
case 'recording_stop':
|
|
217
|
+
case 'recording_restart':
|
|
218
|
+
return errorResponse(id, 'Video recording is not yet supported on iOS.');
|
|
219
|
+
default:
|
|
220
|
+
return errorResponse(id, `Unknown or unsupported iOS command: ${action}`);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
225
|
+
return errorResponse(id, message);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=ios-actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ios-actions.js","sourceRoot":"","sources":["../src/ios-actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|