mcp-baepsae 4.0.0 → 4.0.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/dist/index.js +2 -15
- package/dist/index.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +3 -14
- package/dist/utils.js.map +1 -1
- package/dist/version.d.ts +3 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -0
- package/native/Sources/Version.swift +1 -0
- package/native/Sources/main.swift +1 -1
- package/native/Tests/BaepsaeNativeTests/BinaryInvocationTests.swift +469 -0
- package/package.json +5 -3
package/dist/index.js
CHANGED
|
@@ -1,27 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
const
|
|
5
|
-
const node_path_1 = require("node:path");
|
|
4
|
+
const version_js_1 = require("./version.js");
|
|
6
5
|
const VERSION_FLAG_ARGS = new Set(["--version", "-v"]);
|
|
7
|
-
const VERSION_FALLBACK = "mcp-baepsae 4.0.0";
|
|
8
6
|
function hasVersionFlag(argv) {
|
|
9
7
|
return argv.some((arg) => VERSION_FLAG_ARGS.has(arg));
|
|
10
8
|
}
|
|
11
9
|
// Fast path: avoid loading MCP SDK/tool modules when only version output is needed.
|
|
12
10
|
if (hasVersionFlag(process.argv)) {
|
|
13
|
-
|
|
14
|
-
const packageJsonPath = (0, node_path_1.resolve)(__dirname, "..", "package.json");
|
|
15
|
-
const packageJson = JSON.parse((0, node_fs_1.readFileSync)(packageJsonPath, "utf8"));
|
|
16
|
-
if (typeof packageJson.name === "string" && typeof packageJson.version === "string") {
|
|
17
|
-
console.log(`${packageJson.name} ${packageJson.version}`);
|
|
18
|
-
process.exit(0);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
catch {
|
|
22
|
-
// fall through to fallback
|
|
23
|
-
}
|
|
24
|
-
console.log(VERSION_FALLBACK);
|
|
11
|
+
console.log(`${version_js_1.PACKAGE_NAME} ${version_js_1.PACKAGE_VERSION}`);
|
|
25
12
|
process.exit(0);
|
|
26
13
|
}
|
|
27
14
|
async function main() {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAIA,6CAA6D;AAE7D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;AAEvD,SAAS,cAAc,CAAC,IAAc;IACpC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,oFAAoF;AACpF,IAAI,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,GAAG,yBAAY,IAAI,4BAAe,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,sBAAsB,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,mBAAmB,EAAE,CAAC,GAC/N,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,MAAM,CAAC,yCAAyC,CAAC;QACjD,MAAM,CAAC,2CAA2C,CAAC;QACnD,MAAM,CAAC,YAAY,CAAC;QACpB,MAAM,CAAC,iBAAiB,CAAC;QACzB,MAAM,CAAC,sBAAsB,CAAC;QAC9B,MAAM,CAAC,eAAe,CAAC;QACvB,MAAM,CAAC,kBAAkB,CAAC;QAC1B,MAAM,CAAC,kBAAkB,CAAC;QAC1B,MAAM,CAAC,mBAAmB,CAAC;KAC5B,CAAC,CAAC;IAEL,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,cAAc;KACxB,CAA6B,CAAC;IAE/B,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,eAAe,CAAC,MAAM,CAAC,CAAC;IACxB,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE5B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { z } from "zod";
|
|
|
2
2
|
import type { ToolTextResult, CommandExecutionOptions, CommandExecutionResult, ResponseOptions } from "./types.js";
|
|
3
3
|
export declare const PACKAGE_ROOT: string;
|
|
4
4
|
export declare const SERVER_NAME = "mcp-baepsae";
|
|
5
|
-
export declare const SERVER_VERSION
|
|
5
|
+
export declare const SERVER_VERSION = "4.0.1";
|
|
6
6
|
export declare const DEFAULT_TIMEOUT_MS = 30000;
|
|
7
7
|
export declare const NATIVE_BINARY_ENV = "BAEPSAE_NATIVE_PATH";
|
|
8
8
|
export declare const NATIVE_BINARY_NAME: string;
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGnH,eAAO,MAAM,YAAY,QAA2B,CAAC;AACrD,eAAO,MAAM,WAAW,gBAAe,CAAC;AACxC,eAAO,MAAM,cAAc,UAAkB,CAAC;AAE9C,eAAO,MAAM,kBAAkB,QAAS,CAAC;AACzC,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,kBAAkB,QAAyE,CAAC;AAEzG,eAAO,MAAM,YAAY,+DAAgE,CAAC;AAC1F,eAAO,MAAM,eAAe,wKASlB,CAAC;AACX,eAAO,MAAM,mBAAmB,sVA0BtB,CAAC;AAEX,eAAO,MAAM,aAAa,aAAmC,CAAC;AAE9D,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOtD;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAkD5C;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,EAAE,GAAG,cAAc,CAQ/F;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,EAAE,GAAG,cAAc,CAY/G;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAIjG;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM5C;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIxE;AAED,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,sBAAsB,CAAC,CAwFjC;AAMD,wBAAgB,YAAY,CAAC,MAAM,EAAE,sBAAsB,EAAE,OAAO,GAAE,eAAoB,GAAG,cAAc,CAwC1G;AAoBD,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,uBAAuB,EAAE,eAAe,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAE7I;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,uBAAuB,EACjC,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CAAC,cAAc,CAAC,CAWzB"}
|
package/dist/utils.js
CHANGED
|
@@ -17,21 +17,10 @@ const node_fs_1 = require("node:fs");
|
|
|
17
17
|
const promises_1 = require("node:fs/promises");
|
|
18
18
|
const node_path_1 = require("node:path");
|
|
19
19
|
const zod_1 = require("zod");
|
|
20
|
+
const version_js_1 = require("./version.js");
|
|
20
21
|
exports.PACKAGE_ROOT = (0, node_path_1.resolve)(__dirname, "..");
|
|
21
|
-
exports.SERVER_NAME =
|
|
22
|
-
exports.SERVER_VERSION =
|
|
23
|
-
try {
|
|
24
|
-
const packageJsonPath = (0, node_path_1.resolve)(exports.PACKAGE_ROOT, "package.json");
|
|
25
|
-
const packageJson = JSON.parse((0, node_fs_1.readFileSync)(packageJsonPath, "utf8"));
|
|
26
|
-
if (typeof packageJson.version === "string" && packageJson.version.length > 0) {
|
|
27
|
-
return packageJson.version;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
catch {
|
|
31
|
-
// fall through to static fallback
|
|
32
|
-
}
|
|
33
|
-
return "4.0.0";
|
|
34
|
-
})();
|
|
22
|
+
exports.SERVER_NAME = version_js_1.PACKAGE_NAME;
|
|
23
|
+
exports.SERVER_VERSION = version_js_1.PACKAGE_VERSION;
|
|
35
24
|
exports.DEFAULT_TIMEOUT_MS = 30_000;
|
|
36
25
|
exports.NATIVE_BINARY_ENV = "BAEPSAE_NATIVE_PATH";
|
|
37
26
|
exports.NATIVE_BINARY_NAME = process.platform === "win32" ? "baepsae-native.exe" : "baepsae-native";
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,gBAAgB,CAAC;AAC1C,eAAO,MAAM,eAAe,UAAU,CAAC"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,aAAa,CAAC;AAC7B,QAAA,eAAe,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let BAEPSAE_VERSION = "4.0.1"
|
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
import XCTest
|
|
2
|
+
import Foundation
|
|
3
|
+
|
|
4
|
+
/// Tests that invoke the compiled `baepsae-native` binary as a subprocess
|
|
5
|
+
/// and verify stdout/stderr output and exit codes.
|
|
6
|
+
///
|
|
7
|
+
/// These tests focus on argument parsing, help output, and error handling
|
|
8
|
+
/// rather than actual UI automation (which requires accessibility permissions
|
|
9
|
+
/// and running applications).
|
|
10
|
+
final class BinaryInvocationTests: XCTestCase {
|
|
11
|
+
|
|
12
|
+
// MARK: - Helpers
|
|
13
|
+
|
|
14
|
+
struct ProcessResult {
|
|
15
|
+
let exitCode: Int32
|
|
16
|
+
let stdout: String
|
|
17
|
+
let stderr: String
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/// Returns the path to the built products directory.
|
|
21
|
+
private static func productsDirectory() -> URL {
|
|
22
|
+
#if os(macOS)
|
|
23
|
+
for bundle in Bundle.allBundles where bundle.bundlePath.hasSuffix(".xctest") {
|
|
24
|
+
return bundle.bundleURL.deletingLastPathComponent()
|
|
25
|
+
}
|
|
26
|
+
#endif
|
|
27
|
+
return Bundle.main.bundleURL
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/// Resolves the path to the compiled `baepsae-native` binary.
|
|
31
|
+
/// SPM places it in the same build directory as the test runner.
|
|
32
|
+
private static func resolveBinaryPath() -> String {
|
|
33
|
+
let buildDir = productsDirectory()
|
|
34
|
+
let path = buildDir.appendingPathComponent("baepsae-native").path
|
|
35
|
+
guard FileManager.default.isExecutableFile(atPath: path) else {
|
|
36
|
+
fatalError(
|
|
37
|
+
"baepsae-native binary not found at \(path). "
|
|
38
|
+
+ "Run `swift build --package-path native` first."
|
|
39
|
+
)
|
|
40
|
+
}
|
|
41
|
+
return path
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/// Runs the binary with the given arguments and captures output.
|
|
45
|
+
private func execute(_ arguments: [String] = []) throws -> ProcessResult {
|
|
46
|
+
let binaryPath = Self.resolveBinaryPath()
|
|
47
|
+
let process = Process()
|
|
48
|
+
process.executableURL = URL(fileURLWithPath: binaryPath)
|
|
49
|
+
process.arguments = arguments
|
|
50
|
+
|
|
51
|
+
let stdoutPipe = Pipe()
|
|
52
|
+
let stderrPipe = Pipe()
|
|
53
|
+
process.standardOutput = stdoutPipe
|
|
54
|
+
process.standardError = stderrPipe
|
|
55
|
+
|
|
56
|
+
try process.run()
|
|
57
|
+
process.waitUntilExit()
|
|
58
|
+
|
|
59
|
+
let stdoutData = stdoutPipe.fileHandleForReading.readDataToEndOfFile()
|
|
60
|
+
let stderrData = stderrPipe.fileHandleForReading.readDataToEndOfFile()
|
|
61
|
+
|
|
62
|
+
return ProcessResult(
|
|
63
|
+
exitCode: process.terminationStatus,
|
|
64
|
+
stdout: String(data: stdoutData, encoding: .utf8) ?? "",
|
|
65
|
+
stderr: String(data: stderrData, encoding: .utf8) ?? ""
|
|
66
|
+
)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// MARK: - Help & Version Tests
|
|
70
|
+
|
|
71
|
+
func testNoArguments_printsHelp() throws {
|
|
72
|
+
let result = try execute()
|
|
73
|
+
XCTAssertEqual(result.exitCode, 0, "No arguments should exit with 0 (shows help)")
|
|
74
|
+
XCTAssertTrue(result.stdout.contains("baepsae-native"), "Help output should contain binary name")
|
|
75
|
+
XCTAssertTrue(result.stdout.contains("Usage:"), "Help output should contain 'Usage:'")
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
func testHelpCommand() throws {
|
|
79
|
+
let result = try execute(["help"])
|
|
80
|
+
XCTAssertEqual(result.exitCode, 0)
|
|
81
|
+
XCTAssertTrue(result.stdout.contains("baepsae-native"))
|
|
82
|
+
XCTAssertTrue(result.stdout.contains("Usage:"))
|
|
83
|
+
XCTAssertTrue(result.stdout.contains("describe-ui"))
|
|
84
|
+
XCTAssertTrue(result.stdout.contains("screenshot"))
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
func testDashDashHelp() throws {
|
|
88
|
+
let result = try execute(["--help"])
|
|
89
|
+
XCTAssertEqual(result.exitCode, 0)
|
|
90
|
+
XCTAssertTrue(result.stdout.contains("Usage:"))
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
func testDashH() throws {
|
|
94
|
+
let result = try execute(["-h"])
|
|
95
|
+
XCTAssertEqual(result.exitCode, 0)
|
|
96
|
+
XCTAssertTrue(result.stdout.contains("Usage:"))
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
func testVersionCommand() throws {
|
|
100
|
+
let result = try execute(["--version"])
|
|
101
|
+
XCTAssertEqual(result.exitCode, 0)
|
|
102
|
+
XCTAssertTrue(
|
|
103
|
+
result.stdout.contains("baepsae-native"),
|
|
104
|
+
"Version output should contain binary name"
|
|
105
|
+
)
|
|
106
|
+
// Version string should match a pattern like "X.Y.Z"
|
|
107
|
+
let versionPattern = #"\d+\.\d+\.\d+"#
|
|
108
|
+
XCTAssertTrue(
|
|
109
|
+
result.stdout.range(of: versionPattern, options: .regularExpression) != nil,
|
|
110
|
+
"Version output should contain a semver version number, got: \(result.stdout)"
|
|
111
|
+
)
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// MARK: - Unknown Command Tests
|
|
115
|
+
|
|
116
|
+
func testUnknownCommand_exitsWithError() throws {
|
|
117
|
+
let result = try execute(["nonexistent-command"])
|
|
118
|
+
XCTAssertNotEqual(result.exitCode, 0, "Unknown command should exit with non-zero status")
|
|
119
|
+
XCTAssertTrue(
|
|
120
|
+
result.stderr.contains("Unknown command"),
|
|
121
|
+
"stderr should mention 'Unknown command', got: \(result.stderr)"
|
|
122
|
+
)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
func testUnknownCommand_showsCommandName() throws {
|
|
126
|
+
let result = try execute(["foobar"])
|
|
127
|
+
XCTAssertTrue(
|
|
128
|
+
result.stderr.contains("foobar"),
|
|
129
|
+
"Error message should include the unknown command name"
|
|
130
|
+
)
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// MARK: - Argument Validation Tests
|
|
134
|
+
|
|
135
|
+
func testScreenshot_missingUdid() throws {
|
|
136
|
+
let result = try execute(["screenshot"])
|
|
137
|
+
XCTAssertNotEqual(result.exitCode, 0, "screenshot without --udid should fail")
|
|
138
|
+
XCTAssertTrue(
|
|
139
|
+
result.stderr.contains("--udid"),
|
|
140
|
+
"Error should mention missing --udid option, got: \(result.stderr)"
|
|
141
|
+
)
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
func testRecordVideo_missingUdid() throws {
|
|
145
|
+
let result = try execute(["record-video"])
|
|
146
|
+
XCTAssertNotEqual(result.exitCode, 0, "record-video without --udid should fail")
|
|
147
|
+
XCTAssertTrue(
|
|
148
|
+
result.stderr.contains("--udid"),
|
|
149
|
+
"Error should mention missing --udid option, got: \(result.stderr)"
|
|
150
|
+
)
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
func testTap_missingTarget() throws {
|
|
154
|
+
let result = try execute(["tap"])
|
|
155
|
+
XCTAssertNotEqual(result.exitCode, 0, "tap without target should fail")
|
|
156
|
+
XCTAssertTrue(
|
|
157
|
+
result.stderr.lowercased().contains("target") || result.stderr.contains("--udid"),
|
|
158
|
+
"Error should mention missing target, got: \(result.stderr)"
|
|
159
|
+
)
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
func testDescribeUi_missingTarget() throws {
|
|
163
|
+
let result = try execute(["describe-ui"])
|
|
164
|
+
XCTAssertNotEqual(result.exitCode, 0, "describe-ui without target should fail")
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
func testSearchUi_missingTarget() throws {
|
|
168
|
+
let result = try execute(["search-ui"])
|
|
169
|
+
XCTAssertNotEqual(result.exitCode, 0, "search-ui without target should fail")
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
func testType_missingTarget() throws {
|
|
173
|
+
let result = try execute(["type"])
|
|
174
|
+
XCTAssertNotEqual(result.exitCode, 0, "type without target should fail")
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
func testSwipe_missingTarget() throws {
|
|
178
|
+
let result = try execute(["swipe"])
|
|
179
|
+
XCTAssertNotEqual(result.exitCode, 0, "swipe without target should fail")
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
func testButton_missingTarget() throws {
|
|
183
|
+
let result = try execute(["button"])
|
|
184
|
+
XCTAssertNotEqual(result.exitCode, 0, "button without target should fail")
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
func testKey_missingTarget() throws {
|
|
188
|
+
let result = try execute(["key"])
|
|
189
|
+
XCTAssertNotEqual(result.exitCode, 0, "key without target should fail")
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
func testKeySequence_missingTarget() throws {
|
|
193
|
+
let result = try execute(["key-sequence"])
|
|
194
|
+
XCTAssertNotEqual(result.exitCode, 0, "key-sequence without target should fail")
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
func testKeyCombo_missingTarget() throws {
|
|
198
|
+
let result = try execute(["key-combo"])
|
|
199
|
+
XCTAssertNotEqual(result.exitCode, 0, "key-combo without target should fail")
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
func testTouch_missingTarget() throws {
|
|
203
|
+
let result = try execute(["touch"])
|
|
204
|
+
XCTAssertNotEqual(result.exitCode, 0, "touch without target should fail")
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
func testGesture_missingTarget() throws {
|
|
208
|
+
let result = try execute(["gesture"])
|
|
209
|
+
XCTAssertNotEqual(result.exitCode, 0, "gesture without target should fail")
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
func testRightClick_missingTarget() throws {
|
|
213
|
+
let result = try execute(["right-click"])
|
|
214
|
+
XCTAssertNotEqual(result.exitCode, 0, "right-click without target should fail")
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
func testScroll_missingTarget() throws {
|
|
218
|
+
let result = try execute(["scroll"])
|
|
219
|
+
XCTAssertNotEqual(result.exitCode, 0, "scroll without target should fail")
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
func testDragDrop_missingTarget() throws {
|
|
223
|
+
let result = try execute(["drag-drop"])
|
|
224
|
+
XCTAssertNotEqual(result.exitCode, 0, "drag-drop without target should fail")
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
func testMenuAction_missingTarget() throws {
|
|
228
|
+
let result = try execute(["menu-action"])
|
|
229
|
+
XCTAssertNotEqual(result.exitCode, 0, "menu-action without target should fail")
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
func testClipboard_missingFlag() throws {
|
|
233
|
+
let result = try execute(["clipboard"])
|
|
234
|
+
XCTAssertNotEqual(result.exitCode, 0, "clipboard without --read or --write should fail")
|
|
235
|
+
XCTAssertTrue(
|
|
236
|
+
result.stderr.contains("--read") || result.stderr.contains("--write"),
|
|
237
|
+
"Error should mention --read or --write, got: \(result.stderr)"
|
|
238
|
+
)
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
func testActivateApp_missingTarget() throws {
|
|
242
|
+
let result = try execute(["activate-app"])
|
|
243
|
+
XCTAssertNotEqual(result.exitCode, 0, "activate-app without target should fail")
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
func testListWindows_missingTarget() throws {
|
|
247
|
+
let result = try execute(["list-windows"])
|
|
248
|
+
XCTAssertNotEqual(result.exitCode, 0, "list-windows without target should fail")
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
func testScreenshotApp_missingTarget() throws {
|
|
252
|
+
let result = try execute(["screenshot-app"])
|
|
253
|
+
XCTAssertNotEqual(result.exitCode, 0, "screenshot-app without target should fail")
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
// MARK: - Target Conflict Tests
|
|
257
|
+
|
|
258
|
+
func testConflictingTargets_udidAndBundleId() throws {
|
|
259
|
+
let result = try execute([
|
|
260
|
+
"describe-ui",
|
|
261
|
+
"--udid", "FAKE-UDID",
|
|
262
|
+
"--bundle-id", "com.example.app",
|
|
263
|
+
])
|
|
264
|
+
XCTAssertNotEqual(result.exitCode, 0, "Using both --udid and --bundle-id should fail")
|
|
265
|
+
XCTAssertTrue(
|
|
266
|
+
result.stderr.contains("Cannot use --udid with --bundle-id"),
|
|
267
|
+
"Error should explain the conflict, got: \(result.stderr)"
|
|
268
|
+
)
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
func testConflictingTargets_udidAndAppName() throws {
|
|
272
|
+
let result = try execute([
|
|
273
|
+
"tap",
|
|
274
|
+
"--udid", "FAKE-UDID",
|
|
275
|
+
"--app-name", "Finder",
|
|
276
|
+
])
|
|
277
|
+
XCTAssertNotEqual(result.exitCode, 0, "Using both --udid and --app-name should fail")
|
|
278
|
+
XCTAssertTrue(
|
|
279
|
+
result.stderr.contains("Cannot use --udid with"),
|
|
280
|
+
"Error should explain the conflict, got: \(result.stderr)"
|
|
281
|
+
)
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
func testConflictingTargets_bundleIdAndAppName() throws {
|
|
285
|
+
let result = try execute([
|
|
286
|
+
"describe-ui",
|
|
287
|
+
"--bundle-id", "com.example.app",
|
|
288
|
+
"--app-name", "SomeApp",
|
|
289
|
+
])
|
|
290
|
+
XCTAssertNotEqual(result.exitCode, 0, "Using both --bundle-id and --app-name should fail")
|
|
291
|
+
XCTAssertTrue(
|
|
292
|
+
result.stderr.contains("Cannot use both --bundle-id and --app-name"),
|
|
293
|
+
"Error should explain the conflict, got: \(result.stderr)"
|
|
294
|
+
)
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
// MARK: - Specific Command Argument Validation
|
|
298
|
+
|
|
299
|
+
func testSwipe_missingCoordinates() throws {
|
|
300
|
+
// Provide a target but missing required coordinates
|
|
301
|
+
let result = try execute([
|
|
302
|
+
"swipe",
|
|
303
|
+
"--udid", "FAKE-UDID",
|
|
304
|
+
"--start-x", "10",
|
|
305
|
+
// Missing --start-y, --end-x, --end-y
|
|
306
|
+
])
|
|
307
|
+
XCTAssertNotEqual(result.exitCode, 0, "swipe with missing coordinates should fail")
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
func testKeySequence_missingKeycodes() throws {
|
|
311
|
+
let result = try execute([
|
|
312
|
+
"key-sequence",
|
|
313
|
+
"--udid", "FAKE-UDID",
|
|
314
|
+
])
|
|
315
|
+
XCTAssertNotEqual(result.exitCode, 0, "key-sequence without --keycodes should fail")
|
|
316
|
+
XCTAssertTrue(
|
|
317
|
+
result.stderr.contains("--keycodes"),
|
|
318
|
+
"Error should mention missing --keycodes, got: \(result.stderr)"
|
|
319
|
+
)
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
func testKeyCombo_missingModifiersAndKey() throws {
|
|
323
|
+
let result = try execute([
|
|
324
|
+
"key-combo",
|
|
325
|
+
"--udid", "FAKE-UDID",
|
|
326
|
+
])
|
|
327
|
+
XCTAssertNotEqual(result.exitCode, 0, "key-combo without --modifiers/--key should fail")
|
|
328
|
+
XCTAssertTrue(
|
|
329
|
+
result.stderr.contains("--modifiers") || result.stderr.contains("--key"),
|
|
330
|
+
"Error should mention missing options, got: \(result.stderr)"
|
|
331
|
+
)
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
func testScroll_missingDeltas() throws {
|
|
335
|
+
let result = try execute([
|
|
336
|
+
"scroll",
|
|
337
|
+
"--udid", "FAKE-UDID",
|
|
338
|
+
])
|
|
339
|
+
XCTAssertNotEqual(result.exitCode, 0, "scroll without deltas should fail")
|
|
340
|
+
XCTAssertTrue(
|
|
341
|
+
result.stderr.contains("--delta"),
|
|
342
|
+
"Error should mention missing delta options, got: \(result.stderr)"
|
|
343
|
+
)
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
// MARK: - Commands That May Succeed Without Simulator
|
|
347
|
+
|
|
348
|
+
func testListApps_succeeds() throws {
|
|
349
|
+
let result = try execute(["list-apps"])
|
|
350
|
+
XCTAssertEqual(result.exitCode, 0, "list-apps should succeed (lists macOS running apps)")
|
|
351
|
+
// Output format: "bundleId | name | pid" per line
|
|
352
|
+
// There should be at least one running app (the test runner or Finder)
|
|
353
|
+
let lines = result.stdout.components(separatedBy: "\n").filter { !$0.isEmpty }
|
|
354
|
+
XCTAssertGreaterThan(lines.count, 0, "list-apps should show at least one running app")
|
|
355
|
+
// Verify output format: each line should contain pipe separators
|
|
356
|
+
if let firstLine = lines.first {
|
|
357
|
+
XCTAssertTrue(
|
|
358
|
+
firstLine.contains("|"),
|
|
359
|
+
"list-apps output should use pipe separator, got: \(firstLine)"
|
|
360
|
+
)
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
func testGetFocusedApp_succeeds() throws {
|
|
365
|
+
let result = try execute(["get-focused-app"])
|
|
366
|
+
XCTAssertEqual(result.exitCode, 0, "get-focused-app should succeed")
|
|
367
|
+
// Output format: "bundleId | name | pid"
|
|
368
|
+
XCTAssertTrue(
|
|
369
|
+
result.stdout.contains("|"),
|
|
370
|
+
"get-focused-app output should use pipe separator, got: \(result.stdout)"
|
|
371
|
+
)
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
func testClipboard_readSucceeds() throws {
|
|
375
|
+
let result = try execute(["clipboard", "--read"])
|
|
376
|
+
// clipboard --read should always succeed (exit 0), even if clipboard is empty
|
|
377
|
+
XCTAssertEqual(result.exitCode, 0, "clipboard --read should succeed")
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
func testClipboard_writeAndRead() throws {
|
|
381
|
+
let testString = "baepsae-test-\(UUID().uuidString)"
|
|
382
|
+
let writeResult = try execute(["clipboard", "--write", testString])
|
|
383
|
+
XCTAssertEqual(writeResult.exitCode, 0, "clipboard --write should succeed")
|
|
384
|
+
XCTAssertTrue(
|
|
385
|
+
writeResult.stdout.contains("Clipboard updated"),
|
|
386
|
+
"clipboard --write should confirm update"
|
|
387
|
+
)
|
|
388
|
+
|
|
389
|
+
let readResult = try execute(["clipboard", "--read"])
|
|
390
|
+
XCTAssertEqual(readResult.exitCode, 0)
|
|
391
|
+
XCTAssertTrue(
|
|
392
|
+
readResult.stdout.contains(testString),
|
|
393
|
+
"clipboard --read should return the written text, got: \(readResult.stdout)"
|
|
394
|
+
)
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
// MARK: - Help Content Completeness
|
|
398
|
+
|
|
399
|
+
func testHelpMentionsAllMajorCommands() throws {
|
|
400
|
+
let result = try execute(["help"])
|
|
401
|
+
let expectedCommands = [
|
|
402
|
+
"list-simulators",
|
|
403
|
+
"list-apps",
|
|
404
|
+
"describe-ui",
|
|
405
|
+
"search-ui",
|
|
406
|
+
"screenshot",
|
|
407
|
+
"record-video",
|
|
408
|
+
"tap",
|
|
409
|
+
"type",
|
|
410
|
+
"swipe",
|
|
411
|
+
"button",
|
|
412
|
+
"key-sequence",
|
|
413
|
+
"key-combo",
|
|
414
|
+
"touch",
|
|
415
|
+
"gesture",
|
|
416
|
+
"stream-video",
|
|
417
|
+
"list-windows",
|
|
418
|
+
"activate-app",
|
|
419
|
+
"screenshot-app",
|
|
420
|
+
"right-click",
|
|
421
|
+
"scroll",
|
|
422
|
+
"drag-drop",
|
|
423
|
+
"menu-action",
|
|
424
|
+
"get-focused-app",
|
|
425
|
+
"clipboard",
|
|
426
|
+
]
|
|
427
|
+
for command in expectedCommands {
|
|
428
|
+
XCTAssertTrue(
|
|
429
|
+
result.stdout.contains(command),
|
|
430
|
+
"Help output should mention command '\(command)'"
|
|
431
|
+
)
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
func testHelpMentionsTargetOptions() throws {
|
|
436
|
+
let result = try execute(["help"])
|
|
437
|
+
XCTAssertTrue(result.stdout.contains("--udid"), "Help should mention --udid")
|
|
438
|
+
XCTAssertTrue(result.stdout.contains("--bundle-id"), "Help should mention --bundle-id")
|
|
439
|
+
XCTAssertTrue(result.stdout.contains("--app-name"), "Help should mention --app-name")
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
// MARK: - Non-existent Bundle ID / App Name
|
|
443
|
+
|
|
444
|
+
func testDescribeUi_nonExistentBundleId() throws {
|
|
445
|
+
let result = try execute([
|
|
446
|
+
"describe-ui",
|
|
447
|
+
"--bundle-id", "com.nonexistent.app.that.does.not.exist",
|
|
448
|
+
])
|
|
449
|
+
XCTAssertNotEqual(result.exitCode, 0, "Non-existent bundle ID should fail")
|
|
450
|
+
XCTAssertTrue(
|
|
451
|
+
result.stderr.contains("No running application found"),
|
|
452
|
+
"Error should say no app found, got: \(result.stderr)"
|
|
453
|
+
)
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
func testTap_nonExistentAppName() throws {
|
|
457
|
+
let result = try execute([
|
|
458
|
+
"tap",
|
|
459
|
+
"--app-name", "ThisAppDefinitelyDoesNotExist12345",
|
|
460
|
+
"-x", "100",
|
|
461
|
+
"-y", "100",
|
|
462
|
+
])
|
|
463
|
+
XCTAssertNotEqual(result.exitCode, 0, "Non-existent app name should fail")
|
|
464
|
+
XCTAssertTrue(
|
|
465
|
+
result.stderr.contains("No running application found"),
|
|
466
|
+
"Error should say no app found, got: \(result.stderr)"
|
|
467
|
+
)
|
|
468
|
+
}
|
|
469
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-baepsae",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"mcpName": "io.github.oozoofrog/baepsae",
|
|
5
5
|
"description": "Local MCP server for iOS Simulator and macOS app automation with a native Swift bridge",
|
|
6
6
|
"author": "oozoofrog",
|
|
@@ -17,8 +17,9 @@
|
|
|
17
17
|
"mcp-baepsae": "dist/index.js"
|
|
18
18
|
},
|
|
19
19
|
"scripts": {
|
|
20
|
-
"
|
|
21
|
-
"build:
|
|
20
|
+
"version:sync": "node -e \"var p=require('./package.json'),fs=require('fs');if(fs.existsSync('src'))fs.writeFileSync('src/version.ts','export const PACKAGE_NAME = \\\"'+p.name+'\\\";\\nexport const PACKAGE_VERSION = \\\"'+p.version+'\\\";\\n');if(fs.existsSync('native/Sources'))fs.writeFileSync('native/Sources/Version.swift','let BAEPSAE_VERSION = \\\"'+p.version+'\\\"\\n')\"",
|
|
21
|
+
"build:ts": "npm run version:sync && tsc",
|
|
22
|
+
"build:native": "npm run version:sync && swift build --package-path native -c release",
|
|
22
23
|
"build": "npm run build:ts && npm run build:native",
|
|
23
24
|
"postinstall": "if [ \"$(uname)\" = \"Darwin\" ] && command -v swift >/dev/null 2>&1; then npm run build:native; fi",
|
|
24
25
|
"prepublishOnly": "npm run build:ts",
|
|
@@ -56,6 +57,7 @@
|
|
|
56
57
|
"files": [
|
|
57
58
|
"dist",
|
|
58
59
|
"native/Sources",
|
|
60
|
+
"native/Tests",
|
|
59
61
|
"native/Package.swift",
|
|
60
62
|
"scripts",
|
|
61
63
|
"README.md",
|