appium-mcp 1.48.0 → 1.49.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.
- package/CHANGELOG.md +12 -0
- package/README.md +1 -3
- package/dist/command.d.ts +12 -1
- package/dist/command.d.ts.map +1 -1
- package/dist/command.js +25 -1
- package/dist/command.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -6
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/interactions/set-value.d.ts.map +1 -1
- package/dist/tools/interactions/set-value.js +13 -3
- package/dist/tools/interactions/set-value.js.map +1 -1
- package/dist/tools/ios/prepare-ios-simulator.d.ts +8 -0
- package/dist/tools/ios/prepare-ios-simulator.d.ts.map +1 -0
- package/dist/tools/ios/prepare-ios-simulator.js +349 -0
- package/dist/tools/ios/prepare-ios-simulator.js.map +1 -0
- package/dist/tools/session/select-device.js +2 -2
- package/dist/tools/session/select-device.js.map +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/src/command.ts +28 -1
- package/src/resources/submodules.zip +0 -0
- package/src/tools/README.md +1 -3
- package/src/tools/index.ts +2 -6
- package/src/tools/interactions/set-value.ts +26 -9
- package/src/tools/ios/prepare-ios-simulator.ts +491 -0
- package/src/tools/session/select-device.ts +2 -2
- package/dist/tools/ios/boot-simulator.d.ts +0 -2
- package/dist/tools/ios/boot-simulator.d.ts.map +0 -1
- package/dist/tools/ios/boot-simulator.js +0 -69
- package/dist/tools/ios/boot-simulator.js.map +0 -1
- package/dist/tools/ios/install-wda.d.ts +0 -2
- package/dist/tools/ios/install-wda.d.ts.map +0 -1
- package/dist/tools/ios/install-wda.js +0 -219
- package/dist/tools/ios/install-wda.js.map +0 -1
- package/dist/tools/ios/setup-wda.d.ts +0 -2
- package/dist/tools/ios/setup-wda.d.ts.map +0 -1
- package/dist/tools/ios/setup-wda.js +0 -165
- package/dist/tools/ios/setup-wda.js.map +0 -1
- package/src/tools/ios/boot-simulator.ts +0 -85
- package/src/tools/ios/install-wda.ts +0 -277
- package/src/tools/ios/setup-wda.ts +0 -211
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [1.49.1](https://github.com/appium/appium-mcp/compare/v1.49.0...v1.49.1) (2026-04-08)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* support typings with w3c actions ([#253](https://github.com/appium/appium-mcp/issues/253)) ([9cfd464](https://github.com/appium/appium-mcp/commit/9cfd4641e7263cf3b7d1e71f3c580b1dfbd57a58))
|
|
6
|
+
|
|
7
|
+
## [1.49.0](https://github.com/appium/appium-mcp/compare/v1.48.0...v1.49.0) (2026-04-08)
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* consolidate simulator preparation into single `prepare_ios_simulator` tool ([#250](https://github.com/appium/appium-mcp/issues/250)) ([68cfc91](https://github.com/appium/appium-mcp/commit/68cfc9142857d346f3eacf36fff9ba7456724096))
|
|
12
|
+
|
|
1
13
|
## [1.48.0](https://github.com/appium/appium-mcp/compare/v1.47.0...v1.48.0) (2026-04-07)
|
|
2
14
|
|
|
3
15
|
### Features
|
package/README.md
CHANGED
|
@@ -295,9 +295,7 @@ MCP Appium provides a comprehensive set of tools organized into the following ca
|
|
|
295
295
|
| ----------------- | ------------------------------------------------------------------------ |
|
|
296
296
|
| `select_platform` | **REQUIRED FIRST**: Ask user to choose between Android or iOS platform |
|
|
297
297
|
| `select_device` | Select a specific device when multiple devices are available |
|
|
298
|
-
| `
|
|
299
|
-
| `setup_wda` | Download and setup prebuilt WebDriverAgent for iOS simulators (iOS only) |
|
|
300
|
-
| `install_wda` | Install and launch WebDriverAgent on a booted iOS simulator (iOS only) |
|
|
298
|
+
| `prepare_ios_simulator` | Boot an iOS/tvOS simulator, download WDA (if not cached), and install/launch WDA in a single call. Each step is skipped if already satisfied (iOS/tvOS only) |
|
|
301
299
|
|
|
302
300
|
### Session Management
|
|
303
301
|
|
package/dist/command.d.ts
CHANGED
|
@@ -67,15 +67,26 @@ export declare function getContexts(driver: DriverInstance): Promise<string[]>;
|
|
|
67
67
|
* @param name - The context name to switch to (if omitted, behavior depends on driver).
|
|
68
68
|
*/
|
|
69
69
|
export declare function setContext(driver: DriverInstance, name?: string): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Build a W3C Actions API key sequence for the given text.
|
|
72
|
+
* Each character is emitted as a keyDown+keyUp pair so it works
|
|
73
|
+
* on both Android and iOS without relying on driver-specific setValue.
|
|
74
|
+
*
|
|
75
|
+
* @param text - The text to type.
|
|
76
|
+
* @returns A W3C `key` action sequence object.
|
|
77
|
+
*/
|
|
78
|
+
export declare function buildW3cKeyActions(text: string): StringRecord<any>;
|
|
70
79
|
/**
|
|
71
80
|
* Set the value of an element.
|
|
72
81
|
*
|
|
73
82
|
* @param driver - The driver instance to use.
|
|
74
83
|
* @param elementUUID - Element identifier.
|
|
75
84
|
* @param text - Text to set into the element.
|
|
85
|
+
* @param w3cActions - When true, use the W3C Actions API (performActions) instead
|
|
86
|
+
* of the driver-specific setValue. Works on both Android and iOS.
|
|
76
87
|
* @returns Driver-specific result (often void or element value).
|
|
77
88
|
*/
|
|
78
|
-
export declare function setValue(driver: DriverInstance, elementUUID: string, text: string): Promise<void>;
|
|
89
|
+
export declare function setValue(driver: DriverInstance, elementUUID: string, text: string, w3cActions?: boolean): Promise<void>;
|
|
79
90
|
/**
|
|
80
91
|
* Click an element identified by UUID.
|
|
81
92
|
*
|
package/dist/command.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,0CAA0C,CAAC;AAElD;;;;;;;;;;;GAWG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,GAAG,GACV,OAAO,CAAC,GAAG,CAAC,CAQd;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAOhC;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAO3E;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,cAAc,EACtB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"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"}
|
package/dist/command.js
CHANGED
|
@@ -135,15 +135,39 @@ export async function setContext(driver, name) {
|
|
|
135
135
|
}
|
|
136
136
|
throw new Error('setContext is not supported');
|
|
137
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Build a W3C Actions API key sequence for the given text.
|
|
140
|
+
* Each character is emitted as a keyDown+keyUp pair so it works
|
|
141
|
+
* on both Android and iOS without relying on driver-specific setValue.
|
|
142
|
+
*
|
|
143
|
+
* @param text - The text to type.
|
|
144
|
+
* @returns A W3C `key` action sequence object.
|
|
145
|
+
*/
|
|
146
|
+
export function buildW3cKeyActions(text) {
|
|
147
|
+
const actions = text.split('').flatMap((char) => [
|
|
148
|
+
{ type: 'keyDown', value: char },
|
|
149
|
+
{ type: 'keyUp', value: char },
|
|
150
|
+
]);
|
|
151
|
+
return {
|
|
152
|
+
type: 'key',
|
|
153
|
+
id: 'keyboard',
|
|
154
|
+
actions,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
138
157
|
/**
|
|
139
158
|
* Set the value of an element.
|
|
140
159
|
*
|
|
141
160
|
* @param driver - The driver instance to use.
|
|
142
161
|
* @param elementUUID - Element identifier.
|
|
143
162
|
* @param text - Text to set into the element.
|
|
163
|
+
* @param w3cActions - When true, use the W3C Actions API (performActions) instead
|
|
164
|
+
* of the driver-specific setValue. Works on both Android and iOS.
|
|
144
165
|
* @returns Driver-specific result (often void or element value).
|
|
145
166
|
*/
|
|
146
|
-
export async function setValue(driver, elementUUID, text) {
|
|
167
|
+
export async function setValue(driver, elementUUID, text, w3cActions = false) {
|
|
168
|
+
if (w3cActions) {
|
|
169
|
+
return await performActions(driver, [buildW3cKeyActions(text)]);
|
|
170
|
+
}
|
|
147
171
|
if (isAndroidUiautomator2DriverSession(driver)) {
|
|
148
172
|
return await driver.setValue(text, elementUUID);
|
|
149
173
|
}
|
package/dist/command.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA8DlC,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAiJ3D"}
|
package/dist/tools/index.js
CHANGED
|
@@ -17,9 +17,7 @@ import batteryInfo from './session/battery-info.js';
|
|
|
17
17
|
import fileTransfer from './session/file-transfer.js';
|
|
18
18
|
import deviceTime from './session/device-time.js';
|
|
19
19
|
import driverSettings from './session/driver-settings.js';
|
|
20
|
-
import
|
|
21
|
-
import setupWDA from './ios/setup-wda.js';
|
|
22
|
-
import installWDA from './ios/install-wda.js';
|
|
20
|
+
import prepareIosSimulator from './ios/prepare-ios-simulator.js';
|
|
23
21
|
import generateTest from './test-generation/generate-tests.js';
|
|
24
22
|
import scroll from './navigations/scroll.js';
|
|
25
23
|
import scrollToElement from './navigations/scroll-to-element.js';
|
|
@@ -138,9 +136,7 @@ export default function registerTools(server) {
|
|
|
138
136
|
deviceTime(server);
|
|
139
137
|
driverSettings(server);
|
|
140
138
|
// iOS Setup
|
|
141
|
-
|
|
142
|
-
setupWDA(server);
|
|
143
|
-
installWDA(server);
|
|
139
|
+
prepareIosSimulator(server);
|
|
144
140
|
// Navigation
|
|
145
141
|
scroll(server);
|
|
146
142
|
scrollToElement(server);
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAeA,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,YAAY,MAAM,kCAAkC,CAAC;AAC5D,OAAO,YAAY,MAAM,kCAAkC,CAAC;AAC5D,OAAO,aAAa,MAAM,6BAA6B,CAAC;AACxD,OAAO,aAAa,MAAM,6BAA6B,CAAC;AACxD,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,aAAa,MAAM,6BAA6B,CAAC;AACxD,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,iBAAiB,MAAM,iCAAiC,CAAC;AAChE,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACL,cAAc,EACd,cAAc,EACd,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,WAAW,MAAM,2BAA2B,CAAC;AACpD,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-value.d.ts","sourceRoot":"","sources":["../../../src/tools/interactions/set-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,SAAS,CAAC;AAMtD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"set-value.d.ts","sourceRoot":"","sources":["../../../src/tools/interactions/set-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,SAAS,CAAC;AAMtD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAkEtD"}
|
|
@@ -3,13 +3,23 @@ import { getDriver } from '../../session-store.js';
|
|
|
3
3
|
import { elementUUIDScheme } from '../../schema.js';
|
|
4
4
|
import { setValue as _setValue } from '../../command.js';
|
|
5
5
|
export default function setValue(server) {
|
|
6
|
-
const setValueSchema = z
|
|
7
|
-
|
|
6
|
+
const setValueSchema = z
|
|
7
|
+
.object({
|
|
8
|
+
elementUUID: elementUUIDScheme.optional(),
|
|
8
9
|
text: z.string().describe('The text to enter'),
|
|
10
|
+
w3cActions: z
|
|
11
|
+
.boolean()
|
|
12
|
+
.optional()
|
|
13
|
+
.describe('When true, type text via the W3C Actions API (performActions) instead of ' +
|
|
14
|
+
'the driver-specific setValue. No elementUUID needed — key events are sent ' +
|
|
15
|
+
'to whatever element currently has focus. Works on both Android and iOS.'),
|
|
9
16
|
sessionId: z
|
|
10
17
|
.string()
|
|
11
18
|
.optional()
|
|
12
19
|
.describe('Session ID to target. If omitted, uses the active session.'),
|
|
20
|
+
})
|
|
21
|
+
.refine((v) => v.w3cActions === true || v.elementUUID !== undefined, {
|
|
22
|
+
message: 'elementUUID is required when w3cActions is not true',
|
|
13
23
|
});
|
|
14
24
|
server.addTool({
|
|
15
25
|
name: 'appium_set_value',
|
|
@@ -25,7 +35,7 @@ export default function setValue(server) {
|
|
|
25
35
|
throw new Error('No driver found');
|
|
26
36
|
}
|
|
27
37
|
try {
|
|
28
|
-
await _setValue(driver, args.elementUUID, args.text);
|
|
38
|
+
await _setValue(driver, args.elementUUID ?? '', args.text, args.w3cActions);
|
|
29
39
|
return {
|
|
30
40
|
content: [
|
|
31
41
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-value.js","sourceRoot":"","sources":["../../../src/tools/interactions/set-value.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,MAAe;IAC9C,MAAM,cAAc,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"set-value.js","sourceRoot":"","sources":["../../../src/tools/interactions/set-value.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,MAAe;IAC9C,MAAM,cAAc,GAAG,CAAC;SACrB,MAAM,CAAC;QACN,WAAW,EAAE,iBAAiB,CAAC,QAAQ,EAAE;QACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC9C,UAAU,EAAE,CAAC;aACV,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CACP,2EAA2E;YACzE,4EAA4E;YAC5E,yEAAyE,CAC5E;QACH,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,4DAA4D,CAAC;KAC1E,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,EAAE;QACnE,OAAO,EAAE,qDAAqD;KAC/D,CAAC,CAAC;IAEL,MAAM,CAAC,OAAO,CAAC;QACb,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,4BAA4B;QACzC,UAAU,EAAE,cAAc;QAC1B,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,aAAa,EAAE,KAAK;SACrB;QACD,OAAO,EAAE,KAAK,EACZ,IAAoC,EACpC,QAA6C,EACrB,EAAE;YAC1B,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACrC,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,SAAS,CACb,MAAM,EACN,IAAI,CAAC,WAAW,IAAI,EAAE,EACtB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,UAAU,CAChB,CAAC;gBACF,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,0BAA0B,IAAI,CAAC,IAAI,iBAAiB,IAAI,CAAC,WAAW,EAAE;yBAC7E;qBACF;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,uBAAuB,IAAI,CAAC,IAAI,iBAAiB,IAAI,CAAC,WAAW,UAAU,GAAG,CAAC,QAAQ,EAAE,EAAE;yBAClG;qBACF;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single-call tool to prepare an iOS simulator for Appium testing.
|
|
3
|
+
* Chains: boot simulator → download WDA → install & launch WDA.
|
|
4
|
+
* Each step checks preconditions and skips if already satisfied.
|
|
5
|
+
*/
|
|
6
|
+
import type { FastMCP } from 'fastmcp';
|
|
7
|
+
export default function prepareIosSimulator(server: FastMCP): void;
|
|
8
|
+
//# sourceMappingURL=prepare-ios-simulator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare-ios-simulator.d.ts","sourceRoot":"","sources":["../../../src/tools/ios/prepare-ios-simulator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,SAAS,CAAC;AAwbtD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA6CjE"}
|
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { exec } from 'node:child_process';
|
|
3
|
+
import { promisify } from 'node:util';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { access, mkdir, unlink, readdir, stat, rm } from 'node:fs/promises';
|
|
6
|
+
import { constants, createWriteStream } from 'node:fs';
|
|
7
|
+
import { Readable } from 'node:stream';
|
|
8
|
+
import { pipeline } from 'node:stream/promises';
|
|
9
|
+
import os from 'node:os';
|
|
10
|
+
import { zip } from '@appium/support';
|
|
11
|
+
import { Simctl } from 'node-simctl';
|
|
12
|
+
import { IOSManager } from '../../devicemanager/ios-manager.js';
|
|
13
|
+
import log from '../../logger.js';
|
|
14
|
+
const execAsync = promisify(exec);
|
|
15
|
+
function cachePath(folder) {
|
|
16
|
+
return path.join(os.homedir(), '.cache', 'appium-mcp', folder);
|
|
17
|
+
}
|
|
18
|
+
// ── Filesystem helpers ──
|
|
19
|
+
async function fileExists(filePath) {
|
|
20
|
+
try {
|
|
21
|
+
await access(filePath, constants.F_OK);
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async function cleanupFile(filePath) {
|
|
29
|
+
try {
|
|
30
|
+
await unlink(filePath);
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
if (err.code !== 'ENOENT') {
|
|
34
|
+
throw err;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// ── WDA download helpers ──
|
|
39
|
+
async function getLatestWDAVersionFromGitHub() {
|
|
40
|
+
const response = await fetch('https://api.github.com/repos/appium/WebDriverAgent/releases/latest', {
|
|
41
|
+
headers: {
|
|
42
|
+
'User-Agent': 'mcp-appium',
|
|
43
|
+
Accept: 'application/vnd.github.v3+json',
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
if (!response.ok) {
|
|
47
|
+
throw new Error(`Failed to fetch WDA version: ${response.status} ${response.statusText}`);
|
|
48
|
+
}
|
|
49
|
+
const release = (await response.json());
|
|
50
|
+
if (release.tag_name) {
|
|
51
|
+
return release.tag_name.replace(/^v/, '');
|
|
52
|
+
}
|
|
53
|
+
throw new Error('No tag_name found in release data');
|
|
54
|
+
}
|
|
55
|
+
async function downloadFile(url, destPath) {
|
|
56
|
+
try {
|
|
57
|
+
const response = await fetch(url, {
|
|
58
|
+
method: 'GET',
|
|
59
|
+
redirect: 'follow',
|
|
60
|
+
});
|
|
61
|
+
if (!response.ok || !response.body) {
|
|
62
|
+
throw new Error(`Failed to download: ${response.status} ${response.statusText}`);
|
|
63
|
+
}
|
|
64
|
+
const writer = createWriteStream(destPath);
|
|
65
|
+
const stream = Readable.fromWeb(response.body);
|
|
66
|
+
try {
|
|
67
|
+
await pipeline(stream, writer);
|
|
68
|
+
}
|
|
69
|
+
catch (streamError) {
|
|
70
|
+
writer.close();
|
|
71
|
+
await cleanupFile(destPath);
|
|
72
|
+
throw streamError;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
await cleanupFile(destPath);
|
|
77
|
+
throw error;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async function unzipFile(zipPath, destDir) {
|
|
81
|
+
await zip.extractAllTo(zipPath, destDir, { useSystemUnzip: true });
|
|
82
|
+
}
|
|
83
|
+
async function getLatestWDAVersionFromCache() {
|
|
84
|
+
const wdaCacheDir = cachePath('wda');
|
|
85
|
+
if (!(await fileExists(wdaCacheDir))) {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
const entries = await readdir(wdaCacheDir);
|
|
89
|
+
const versions = await Promise.all(entries.map(async (dir) => {
|
|
90
|
+
const dirPath = path.join(wdaCacheDir, dir);
|
|
91
|
+
const stats = await stat(dirPath);
|
|
92
|
+
return stats.isDirectory() ? dir : null;
|
|
93
|
+
}));
|
|
94
|
+
const filteredVersions = versions
|
|
95
|
+
.filter((v) => v !== null)
|
|
96
|
+
.sort((a, b) => b.localeCompare(a, undefined, { numeric: true }));
|
|
97
|
+
return filteredVersions.length > 0 ? filteredVersions[0] : null;
|
|
98
|
+
}
|
|
99
|
+
// ── WDA install helpers ──
|
|
100
|
+
async function installAppOnSimulator(appPath, simulatorUdid) {
|
|
101
|
+
await execAsync(`xcrun simctl install "${simulatorUdid}" "${appPath}"`);
|
|
102
|
+
}
|
|
103
|
+
async function launchAppOnSimulator(bundleId, simulatorUdid) {
|
|
104
|
+
await execAsync(`xcrun simctl launch "${simulatorUdid}" "${bundleId}"`);
|
|
105
|
+
}
|
|
106
|
+
async function getAppBundleId(appPath) {
|
|
107
|
+
const { stdout } = await execAsync(`/usr/libexec/PlistBuddy -c "Print CFBundleIdentifier" "${path.join(appPath, 'Info.plist')}"`);
|
|
108
|
+
return stdout.trim();
|
|
109
|
+
}
|
|
110
|
+
async function getWDAState(simulatorUdid) {
|
|
111
|
+
let installed = false;
|
|
112
|
+
// Check if installed via simctl listapps
|
|
113
|
+
try {
|
|
114
|
+
const { stdout } = await execAsync(`xcrun simctl listapps "${simulatorUdid}" --json`);
|
|
115
|
+
const data = JSON.parse(stdout);
|
|
116
|
+
for (const [bundleId, appInfo] of Object.entries(data)) {
|
|
117
|
+
if (bundleId.includes('WebDriverAgentRunner') ||
|
|
118
|
+
appInfo?.CFBundleName?.includes('WebDriverAgent')) {
|
|
119
|
+
installed = true;
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return { installed: false, running: false };
|
|
126
|
+
}
|
|
127
|
+
if (!installed) {
|
|
128
|
+
return { installed: false, running: false };
|
|
129
|
+
}
|
|
130
|
+
// Check if actually running via launchctl inside the simulator
|
|
131
|
+
try {
|
|
132
|
+
const { stdout } = await execAsync(`xcrun simctl spawn "${simulatorUdid}" launchctl list`);
|
|
133
|
+
const running = stdout.includes('WebDriverAgentRunner');
|
|
134
|
+
return { installed: true, running };
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
return { installed: true, running: false };
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// ── Main pipeline ──
|
|
141
|
+
async function resolveWdaAppPath(forceRefreshWda, platform = 'ios') {
|
|
142
|
+
const arch = os.arch();
|
|
143
|
+
const archStr = arch === 'arm64' ? 'arm64' : 'x86_64';
|
|
144
|
+
const artifactPrefix = platform === 'tvos' ? 'WebDriverAgentRunner_tvOS' : 'WebDriverAgentRunner';
|
|
145
|
+
// Check cache first (unless force refresh)
|
|
146
|
+
if (!forceRefreshWda) {
|
|
147
|
+
const cachedVersion = await getLatestWDAVersionFromCache();
|
|
148
|
+
if (cachedVersion) {
|
|
149
|
+
const cachedAppPath = path.join(cachePath(`wda/${cachedVersion}/extracted-${platform}`), `${artifactPrefix}-Runner.app`);
|
|
150
|
+
if (await fileExists(cachedAppPath)) {
|
|
151
|
+
return {
|
|
152
|
+
wdaAppPath: cachedAppPath,
|
|
153
|
+
version: cachedVersion,
|
|
154
|
+
downloaded: false,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Download from GitHub
|
|
160
|
+
const wdaVersion = await getLatestWDAVersionFromGitHub();
|
|
161
|
+
const versionCacheDir = cachePath(`wda/${wdaVersion}`);
|
|
162
|
+
const extractDir = path.join(versionCacheDir, `extracted-${platform}`);
|
|
163
|
+
const zipPath = path.join(versionCacheDir, `${artifactPrefix}-Build-Sim-${archStr}.zip`);
|
|
164
|
+
const wdaAppPath = path.join(extractDir, `${artifactPrefix}-Runner.app`);
|
|
165
|
+
// Check if this specific version is already extracted
|
|
166
|
+
if (!forceRefreshWda && (await fileExists(wdaAppPath))) {
|
|
167
|
+
return { wdaAppPath, version: wdaVersion, downloaded: false };
|
|
168
|
+
}
|
|
169
|
+
// Clean any prior (possibly partial) extraction before downloading
|
|
170
|
+
if (await fileExists(extractDir)) {
|
|
171
|
+
await rm(extractDir, { recursive: true, force: true });
|
|
172
|
+
}
|
|
173
|
+
await mkdir(versionCacheDir, { recursive: true });
|
|
174
|
+
await mkdir(extractDir, { recursive: true });
|
|
175
|
+
const downloadUrl = `https://github.com/appium/WebDriverAgent/releases/download/v${wdaVersion}/${artifactPrefix}-Build-Sim-${archStr}.zip`;
|
|
176
|
+
log.info(`Downloading prebuilt WDA v${wdaVersion}...`);
|
|
177
|
+
await downloadFile(downloadUrl, zipPath);
|
|
178
|
+
try {
|
|
179
|
+
log.info('Extracting WebDriverAgent...');
|
|
180
|
+
await unzipFile(zipPath, extractDir);
|
|
181
|
+
}
|
|
182
|
+
finally {
|
|
183
|
+
// Clean up zip whether extraction succeeds or fails — the .app is what we cache
|
|
184
|
+
await cleanupFile(zipPath);
|
|
185
|
+
}
|
|
186
|
+
if (!(await fileExists(wdaAppPath))) {
|
|
187
|
+
throw new Error('WebDriverAgent extraction failed - app bundle not found');
|
|
188
|
+
}
|
|
189
|
+
return { wdaAppPath, version: wdaVersion, downloaded: true };
|
|
190
|
+
}
|
|
191
|
+
async function installWdaStep(result, udid, wdaAppPath) {
|
|
192
|
+
try {
|
|
193
|
+
const wdaState = await getWDAState(udid);
|
|
194
|
+
// Check if already running
|
|
195
|
+
if (wdaState.running) {
|
|
196
|
+
result.wda_install = {
|
|
197
|
+
status: 'skipped',
|
|
198
|
+
detail: 'WDA is already running on the simulator',
|
|
199
|
+
};
|
|
200
|
+
result.ready = true;
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
// Install if not already installed
|
|
204
|
+
if (!wdaState.installed) {
|
|
205
|
+
log.info(`Installing WDA on simulator ${udid}...`);
|
|
206
|
+
await installAppOnSimulator(wdaAppPath, udid);
|
|
207
|
+
}
|
|
208
|
+
// Launch
|
|
209
|
+
const bundleId = await getAppBundleId(wdaAppPath);
|
|
210
|
+
log.info(`Launching WDA with bundle ID: ${bundleId}`);
|
|
211
|
+
await launchAppOnSimulator(bundleId, udid);
|
|
212
|
+
result.wda_install = {
|
|
213
|
+
status: 'completed',
|
|
214
|
+
detail: wdaState.installed
|
|
215
|
+
? `WDA already installed, launched (${bundleId})`
|
|
216
|
+
: `WDA installed and launched (${bundleId})`,
|
|
217
|
+
};
|
|
218
|
+
result.ready = true;
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
result.wda_install = { status: 'failed', detail: error.message };
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
async function prepareSimulator(udid, skipWda, forceRefreshWda, platform = 'ios') {
|
|
225
|
+
const result = {
|
|
226
|
+
boot: { status: 'skipped', detail: '' },
|
|
227
|
+
wda_download: { status: 'skipped', detail: '' },
|
|
228
|
+
wda_install: { status: 'skipped', detail: '' },
|
|
229
|
+
ready: false,
|
|
230
|
+
udid,
|
|
231
|
+
};
|
|
232
|
+
// ── Step 1: Boot simulator ──
|
|
233
|
+
try {
|
|
234
|
+
const iosManager = IOSManager.getInstance();
|
|
235
|
+
const simulators = await iosManager.listSimulators();
|
|
236
|
+
const simulator = simulators.find((sim) => sim.udid === udid);
|
|
237
|
+
if (!simulator) {
|
|
238
|
+
result.boot = {
|
|
239
|
+
status: 'failed',
|
|
240
|
+
detail: `Simulator with UDID "${udid}" not found. Use select_platform and select_device to get a valid UDID.`,
|
|
241
|
+
};
|
|
242
|
+
return result;
|
|
243
|
+
}
|
|
244
|
+
if (simulator.state === 'Booted') {
|
|
245
|
+
result.boot = {
|
|
246
|
+
status: 'skipped',
|
|
247
|
+
detail: `${simulator.name} is already booted`,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
log.info(`Booting simulator ${simulator.name} (${udid})...`);
|
|
252
|
+
const simctl = new Simctl();
|
|
253
|
+
simctl.udid = udid;
|
|
254
|
+
await simctl.bootDevice();
|
|
255
|
+
await simctl.startBootMonitor({ timeout: 120000 });
|
|
256
|
+
result.boot = {
|
|
257
|
+
status: 'completed',
|
|
258
|
+
detail: `${simulator.name} booted successfully`,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
catch (error) {
|
|
263
|
+
result.boot = { status: 'failed', detail: error.message };
|
|
264
|
+
return result;
|
|
265
|
+
}
|
|
266
|
+
if (skipWda) {
|
|
267
|
+
result.wda_download = { status: 'skipped', detail: 'skipWda=true' };
|
|
268
|
+
result.wda_install = { status: 'skipped', detail: 'skipWda=true' };
|
|
269
|
+
result.ready = true;
|
|
270
|
+
return result;
|
|
271
|
+
}
|
|
272
|
+
// ── Step 2: Download WDA ──
|
|
273
|
+
let wdaAppPath;
|
|
274
|
+
try {
|
|
275
|
+
const resolved = await resolveWdaAppPath(forceRefreshWda, platform);
|
|
276
|
+
wdaAppPath = resolved.wdaAppPath;
|
|
277
|
+
result.wdaAppPath = wdaAppPath;
|
|
278
|
+
if (resolved.downloaded) {
|
|
279
|
+
result.wda_download = {
|
|
280
|
+
status: 'completed',
|
|
281
|
+
detail: `WDA v${resolved.version} downloaded and extracted to ${wdaAppPath}`,
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
result.wda_download = {
|
|
286
|
+
status: 'skipped',
|
|
287
|
+
detail: `WDA v${resolved.version} already cached at ${wdaAppPath}`,
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
catch (error) {
|
|
292
|
+
result.wda_download = { status: 'failed', detail: error.message };
|
|
293
|
+
result.wda_install = {
|
|
294
|
+
status: 'skipped',
|
|
295
|
+
detail: 'WDA download failed',
|
|
296
|
+
};
|
|
297
|
+
return result;
|
|
298
|
+
}
|
|
299
|
+
// ── Step 3: Install & launch WDA ──
|
|
300
|
+
await installWdaStep(result, udid, wdaAppPath);
|
|
301
|
+
return result;
|
|
302
|
+
}
|
|
303
|
+
// ── Tool registration ──
|
|
304
|
+
const prepareIosSimulatorSchema = z.object({
|
|
305
|
+
udid: z
|
|
306
|
+
.string()
|
|
307
|
+
.describe('The UDID of the iOS simulator to prepare. Use select_platform and select_device to get this.'),
|
|
308
|
+
platform: z
|
|
309
|
+
.enum(['ios', 'tvos'])
|
|
310
|
+
.optional()
|
|
311
|
+
.default('ios')
|
|
312
|
+
.describe('The simulator platform to download WDA for. Default is "ios". Use "tvos" for Apple TV simulators.'),
|
|
313
|
+
skipWda: z
|
|
314
|
+
.boolean()
|
|
315
|
+
.optional()
|
|
316
|
+
.describe('If true, only boot the simulator without downloading or installing WDA. Default: false.'),
|
|
317
|
+
forceRefreshWda: z
|
|
318
|
+
.boolean()
|
|
319
|
+
.optional()
|
|
320
|
+
.describe('If true, re-download WDA even if already cached. Default: false.'),
|
|
321
|
+
});
|
|
322
|
+
export default function prepareIosSimulator(server) {
|
|
323
|
+
server.addTool({
|
|
324
|
+
name: 'prepare_ios_simulator',
|
|
325
|
+
description: 'Prepare an iOS/tvOS simulator for Appium testing in a single call. Automatically boots the simulator, downloads prebuilt WDA (if not cached), and installs/launches WDA. Each step is skipped if already satisfied. Use skipWda=true to only boot without WDA.',
|
|
326
|
+
parameters: prepareIosSimulatorSchema,
|
|
327
|
+
annotations: {
|
|
328
|
+
readOnlyHint: false,
|
|
329
|
+
openWorldHint: false,
|
|
330
|
+
},
|
|
331
|
+
execute: async (args) => {
|
|
332
|
+
if (process.platform !== 'darwin') {
|
|
333
|
+
throw new Error('iOS simulator preparation is only supported on macOS');
|
|
334
|
+
}
|
|
335
|
+
const { udid, platform = 'ios', skipWda = false, forceRefreshWda = false, } = args;
|
|
336
|
+
log.info(`Preparing ${platform} simulator ${udid} (skipWda=${skipWda}, forceRefreshWda=${forceRefreshWda})`);
|
|
337
|
+
const result = await prepareSimulator(udid, skipWda, forceRefreshWda, platform);
|
|
338
|
+
return {
|
|
339
|
+
content: [
|
|
340
|
+
{
|
|
341
|
+
type: 'text',
|
|
342
|
+
text: JSON.stringify(result),
|
|
343
|
+
},
|
|
344
|
+
],
|
|
345
|
+
};
|
|
346
|
+
},
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
//# sourceMappingURL=prepare-ios-simulator.js.map
|