execbro 2.6.1 → 2.7.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 +5 -2
- package/build/__tests__/helpers/mock-harness.d.ts +35 -0
- package/build/__tests__/helpers/mock-harness.d.ts.map +1 -0
- package/build/__tests__/helpers/mock-harness.js +83 -0
- package/build/__tests__/helpers/mock-harness.js.map +1 -0
- package/build/__tests__/unit/androidEmulatorAvds.test.js +2 -1
- package/build/__tests__/unit/androidEmulatorAvds.test.js.map +1 -1
- package/build/__tests__/unit/buildToken.test.js +20 -3
- package/build/__tests__/unit/buildToken.test.js.map +1 -1
- package/build/__tests__/unit/commandInjection.test.d.ts +2 -0
- package/build/__tests__/unit/commandInjection.test.d.ts.map +1 -0
- package/build/__tests__/unit/commandInjection.test.js +55 -0
- package/build/__tests__/unit/commandInjection.test.js.map +1 -0
- package/build/__tests__/unit/errorCategorization.test.js +14 -0
- package/build/__tests__/unit/errorCategorization.test.js.map +1 -1
- package/build/__tests__/unit/fingerprint.test.js +2 -2
- package/build/__tests__/unit/fingerprint.test.js.map +1 -1
- package/build/__tests__/unit/inputTarget.test.js +46 -0
- package/build/__tests__/unit/inputTarget.test.js.map +1 -1
- package/build/__tests__/unit/logSourceAndroid.test.js +5 -5
- package/build/__tests__/unit/logSourceAndroid.test.js.map +1 -1
- package/build/__tests__/unit/logSourceIos.test.js +10 -6
- package/build/__tests__/unit/logSourceIos.test.js.map +1 -1
- package/build/__tests__/unit/logStack.test.d.ts +2 -0
- package/build/__tests__/unit/logStack.test.d.ts.map +1 -0
- package/build/__tests__/unit/logStack.test.js +86 -0
- package/build/__tests__/unit/logStack.test.js.map +1 -0
- package/build/__tests__/unit/logSymbolication.test.d.ts +2 -0
- package/build/__tests__/unit/logSymbolication.test.d.ts.map +1 -0
- package/build/__tests__/unit/logSymbolication.test.js +215 -0
- package/build/__tests__/unit/logSymbolication.test.js.map +1 -0
- package/build/__tests__/unit/mockRulePush.test.d.ts +2 -0
- package/build/__tests__/unit/mockRulePush.test.d.ts.map +1 -0
- package/build/__tests__/unit/mockRulePush.test.js +65 -0
- package/build/__tests__/unit/mockRulePush.test.js.map +1 -0
- package/build/__tests__/unit/mockRules.test.d.ts +2 -0
- package/build/__tests__/unit/mockRules.test.d.ts.map +1 -0
- package/build/__tests__/unit/mockRules.test.js +111 -0
- package/build/__tests__/unit/mockRules.test.js.map +1 -0
- package/build/__tests__/unit/nativeLogs.test.js +8 -2
- package/build/__tests__/unit/nativeLogs.test.js.map +1 -1
- package/build/__tests__/unit/netInfoPatch.test.d.ts +2 -0
- package/build/__tests__/unit/netInfoPatch.test.d.ts.map +1 -0
- package/build/__tests__/unit/netInfoPatch.test.js +46 -0
- package/build/__tests__/unit/netInfoPatch.test.js.map +1 -0
- package/build/__tests__/unit/networkInterceptorXhr.test.d.ts +2 -0
- package/build/__tests__/unit/networkInterceptorXhr.test.d.ts.map +1 -0
- package/build/__tests__/unit/networkInterceptorXhr.test.js +440 -0
- package/build/__tests__/unit/networkInterceptorXhr.test.js.map +1 -0
- package/build/__tests__/unit/networkMock.test.d.ts +2 -0
- package/build/__tests__/unit/networkMock.test.d.ts.map +1 -0
- package/build/__tests__/unit/networkMock.test.js +183 -0
- package/build/__tests__/unit/networkMock.test.js.map +1 -0
- package/build/__tests__/unit/networkMockRender.test.d.ts +2 -0
- package/build/__tests__/unit/networkMockRender.test.d.ts.map +1 -0
- package/build/__tests__/unit/networkMockRender.test.js +131 -0
- package/build/__tests__/unit/networkMockRender.test.js.map +1 -0
- package/build/__tests__/unit/networkMockTamper.test.d.ts +2 -0
- package/build/__tests__/unit/networkMockTamper.test.d.ts.map +1 -0
- package/build/__tests__/unit/networkMockTamper.test.js +162 -0
- package/build/__tests__/unit/networkMockTamper.test.js.map +1 -0
- package/build/__tests__/unit/networkMockTool.test.d.ts +2 -0
- package/build/__tests__/unit/networkMockTool.test.d.ts.map +1 -0
- package/build/__tests__/unit/networkMockTool.test.js +69 -0
- package/build/__tests__/unit/networkMockTool.test.js.map +1 -0
- package/build/__tests__/unit/networkReplay.test.d.ts +2 -0
- package/build/__tests__/unit/networkReplay.test.d.ts.map +1 -0
- package/build/__tests__/unit/networkReplay.test.js +86 -0
- package/build/__tests__/unit/networkReplay.test.js.map +1 -0
- package/build/__tests__/unit/serialQueue.test.d.ts +2 -0
- package/build/__tests__/unit/serialQueue.test.d.ts.map +1 -0
- package/build/__tests__/unit/serialQueue.test.js +77 -0
- package/build/__tests__/unit/serialQueue.test.js.map +1 -0
- package/build/__tests__/unit/symbolicate.test.js +36 -0
- package/build/__tests__/unit/symbolicate.test.js.map +1 -1
- package/build/__tests__/unit/tap.test.js +0 -48
- package/build/__tests__/unit/tap.test.js.map +1 -1
- package/build/__tests__/unit/textEntry.test.js +53 -0
- package/build/__tests__/unit/textEntry.test.js.map +1 -1
- package/build/__tests__/unit/toolArgInjection.test.d.ts +2 -0
- package/build/__tests__/unit/toolArgInjection.test.d.ts.map +1 -0
- package/build/__tests__/unit/toolArgInjection.test.js +86 -0
- package/build/__tests__/unit/toolArgInjection.test.js.map +1 -0
- package/build/core/android.d.ts.map +1 -1
- package/build/core/android.js +54 -111
- package/build/core/android.js.map +1 -1
- package/build/core/androidSystemBars.d.ts.map +1 -1
- package/build/core/androidSystemBars.js +3 -3
- package/build/core/androidSystemBars.js.map +1 -1
- package/build/core/appRequest.d.ts +1 -0
- package/build/core/appRequest.d.ts.map +1 -1
- package/build/core/appRequest.js +5 -2
- package/build/core/appRequest.js.map +1 -1
- package/build/core/buildInfo.d.ts +3 -0
- package/build/core/buildInfo.d.ts.map +1 -0
- package/build/core/buildInfo.js +6 -0
- package/build/core/buildInfo.js.map +1 -0
- package/build/core/componentSource.d.ts.map +1 -1
- package/build/core/componentSource.js +1 -1
- package/build/core/componentSource.js.map +1 -1
- package/build/core/connection.d.ts.map +1 -1
- package/build/core/connection.js +15 -5
- package/build/core/connection.js.map +1 -1
- package/build/core/exec.d.ts +5 -0
- package/build/core/exec.d.ts.map +1 -1
- package/build/core/exec.js +34 -1
- package/build/core/exec.js.map +1 -1
- package/build/core/fingerprint.d.ts.map +1 -1
- package/build/core/fingerprint.js +3 -3
- package/build/core/fingerprint.js.map +1 -1
- package/build/core/guides.d.ts.map +1 -1
- package/build/core/guides.js +21 -1
- package/build/core/guides.js.map +1 -1
- package/build/core/inputTarget.d.ts.map +1 -1
- package/build/core/inputTarget.js +42 -2
- package/build/core/inputTarget.js.map +1 -1
- package/build/core/ios.d.ts.map +1 -1
- package/build/core/ios.js +14 -17
- package/build/core/ios.js.map +1 -1
- package/build/core/jsLogEvents.d.ts.map +1 -1
- package/build/core/jsLogEvents.js +1 -0
- package/build/core/jsLogEvents.js.map +1 -1
- package/build/core/keyboardRaise.d.ts.map +1 -1
- package/build/core/keyboardRaise.js +3 -3
- package/build/core/keyboardRaise.js.map +1 -1
- package/build/core/logEventFormat.d.ts +2 -0
- package/build/core/logEventFormat.d.ts.map +1 -1
- package/build/core/logEventFormat.js +6 -1
- package/build/core/logEventFormat.js.map +1 -1
- package/build/core/logEvents.d.ts +2 -1
- package/build/core/logEvents.d.ts.map +1 -1
- package/build/core/logEvents.js.map +1 -1
- package/build/core/logSourceAndroid.d.ts +1 -1
- package/build/core/logSourceAndroid.d.ts.map +1 -1
- package/build/core/logSourceAndroid.js +9 -9
- package/build/core/logSourceAndroid.js.map +1 -1
- package/build/core/logSourceIos.d.ts +1 -1
- package/build/core/logSourceIos.d.ts.map +1 -1
- package/build/core/logSourceIos.js +9 -9
- package/build/core/logSourceIos.js.map +1 -1
- package/build/core/logStack.d.ts +6 -0
- package/build/core/logStack.d.ts.map +1 -0
- package/build/core/logStack.js +44 -0
- package/build/core/logStack.js.map +1 -0
- package/build/core/logSymbolication.d.ts +11 -0
- package/build/core/logSymbolication.d.ts.map +1 -0
- package/build/core/logSymbolication.js +91 -0
- package/build/core/logSymbolication.js.map +1 -0
- package/build/core/mockRules.d.ts +30 -0
- package/build/core/mockRules.d.ts.map +1 -0
- package/build/core/mockRules.js +200 -0
- package/build/core/mockRules.js.map +1 -0
- package/build/core/nativeInputValue.js +6 -6
- package/build/core/nativeInputValue.js.map +1 -1
- package/build/core/nativeLogs.js +2 -2
- package/build/core/nativeLogs.js.map +1 -1
- package/build/core/netInfoPatch.d.ts +5 -0
- package/build/core/netInfoPatch.d.ts.map +1 -0
- package/build/core/netInfoPatch.js +88 -0
- package/build/core/netInfoPatch.js.map +1 -0
- package/build/core/network.d.ts.map +1 -1
- package/build/core/network.js +9 -0
- package/build/core/network.js.map +1 -1
- package/build/core/networkInterceptor.d.ts +6 -0
- package/build/core/networkInterceptor.d.ts.map +1 -1
- package/build/core/networkInterceptor.js +660 -13
- package/build/core/networkInterceptor.js.map +1 -1
- package/build/core/replay.d.ts +14 -0
- package/build/core/replay.d.ts.map +1 -0
- package/build/core/replay.js +14 -0
- package/build/core/replay.js.map +1 -0
- package/build/core/serialQueue.d.ts +6 -0
- package/build/core/serialQueue.d.ts.map +1 -0
- package/build/core/serialQueue.js +18 -0
- package/build/core/serialQueue.js.map +1 -0
- package/build/core/symbolicate.d.ts +2 -2
- package/build/core/symbolicate.d.ts.map +1 -1
- package/build/core/symbolicate.js +2 -2
- package/build/core/symbolicate.js.map +1 -1
- package/build/core/telemetry.d.ts.map +1 -1
- package/build/core/telemetry.js +5 -3
- package/build/core/telemetry.js.map +1 -1
- package/build/core/textEntry.d.ts +2 -0
- package/build/core/textEntry.d.ts.map +1 -1
- package/build/core/textEntry.js +30 -3
- package/build/core/textEntry.js.map +1 -1
- package/build/core/types.d.ts +11 -0
- package/build/core/types.d.ts.map +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +55 -9
- package/build/index.js.map +1 -1
- package/build/tools/deviceTools.d.ts.map +1 -1
- package/build/tools/deviceTools.js +4 -1
- package/build/tools/deviceTools.js.map +1 -1
- package/build/tools/interactionTools.d.ts.map +1 -1
- package/build/tools/interactionTools.js +6 -3
- package/build/tools/interactionTools.js.map +1 -1
- package/build/tools/logTools.d.ts.map +1 -1
- package/build/tools/logTools.js +16 -3
- package/build/tools/logTools.js.map +1 -1
- package/build/tools/networkTools.d.ts.map +1 -1
- package/build/tools/networkTools.js +196 -4
- package/build/tools/networkTools.js.map +1 -1
- package/build/tools/requestTools.d.ts.map +1 -1
- package/build/tools/requestTools.js +93 -26
- package/build/tools/requestTools.js.map +1 -1
- package/package.json +3 -3
- package/tools.json +36 -1
- package/build/__tests__/helpers/fake-cdp-server.d.ts +0 -53
- package/build/__tests__/helpers/fake-cdp-server.d.ts.map +0 -1
- package/build/__tests__/helpers/fake-cdp-server.js +0 -116
- package/build/__tests__/helpers/fake-cdp-server.js.map +0 -1
- package/build/__tests__/helpers/tap-test-helpers.d.ts +0 -13
- package/build/__tests__/helpers/tap-test-helpers.d.ts.map +0 -1
- package/build/__tests__/helpers/tap-test-helpers.js +0 -103
- package/build/__tests__/helpers/tap-test-helpers.js.map +0 -1
- package/build/__tests__/integration/auto-reconnect.test.d.ts +0 -2
- package/build/__tests__/integration/auto-reconnect.test.d.ts.map +0 -1
- package/build/__tests__/integration/auto-reconnect.test.js +0 -108
- package/build/__tests__/integration/auto-reconnect.test.js.map +0 -1
- package/build/__tests__/integration/connection-health.test.d.ts +0 -2
- package/build/__tests__/integration/connection-health.test.d.ts.map +0 -1
- package/build/__tests__/integration/connection-health.test.js +0 -155
- package/build/__tests__/integration/connection-health.test.js.map +0 -1
- package/build/__tests__/integration/execute-in-app.test.d.ts +0 -2
- package/build/__tests__/integration/execute-in-app.test.d.ts.map +0 -1
- package/build/__tests__/integration/execute-in-app.test.js +0 -114
- package/build/__tests__/integration/execute-in-app.test.js.map +0 -1
- package/build/__tests__/integration/native-logs.test.d.ts +0 -2
- package/build/__tests__/integration/native-logs.test.d.ts.map +0 -1
- package/build/__tests__/integration/native-logs.test.js +0 -34
- package/build/__tests__/integration/native-logs.test.js.map +0 -1
- package/build/__tests__/integration/per-call-timeout.test.d.ts +0 -2
- package/build/__tests__/integration/per-call-timeout.test.d.ts.map +0 -1
- package/build/__tests__/integration/per-call-timeout.test.js +0 -99
- package/build/__tests__/integration/per-call-timeout.test.js.map +0 -1
- package/build/__tests__/integration/socket-close-midflight.test.d.ts +0 -2
- package/build/__tests__/integration/socket-close-midflight.test.d.ts.map +0 -1
- package/build/__tests__/integration/socket-close-midflight.test.js +0 -96
- package/build/__tests__/integration/socket-close-midflight.test.js.map +0 -1
- package/build/__tests__/integration/stale-target-probe.test.d.ts +0 -2
- package/build/__tests__/integration/stale-target-probe.test.d.ts.map +0 -1
- package/build/__tests__/integration/stale-target-probe.test.js +0 -70
- package/build/__tests__/integration/stale-target-probe.test.js.map +0 -1
- package/build/__tests__/integration/tap-strategies.test.d.ts +0 -2
- package/build/__tests__/integration/tap-strategies.test.d.ts.map +0 -1
- package/build/__tests__/integration/tap-strategies.test.js +0 -296
- package/build/__tests__/integration/tap-strategies.test.js.map +0 -1
- package/build/__tests__/integration/text-input.test.d.ts +0 -2
- package/build/__tests__/integration/text-input.test.d.ts.map +0 -1
- package/build/__tests__/integration/text-input.test.js +0 -142
- package/build/__tests__/integration/text-input.test.js.map +0 -1
- package/build/__tests__/integration/tools.test.d.ts +0 -2
- package/build/__tests__/integration/tools.test.d.ts.map +0 -1
- package/build/__tests__/integration/tools.test.js +0 -221
- package/build/__tests__/integration/tools.test.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textEntry.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/textEntry.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"textEntry.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/textEntry.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolArgInjection.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/toolArgInjection.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { describe, it, expect, jest, beforeEach } from "@jest/globals";
|
|
2
|
+
const execFileAsyncMock = jest.fn();
|
|
3
|
+
jest.unstable_mockModule("../../core/exec.js", () => ({
|
|
4
|
+
execFileAsync: execFileAsyncMock,
|
|
5
|
+
quoteForDeviceShell: (value) => `'${value.replace(/'/g, `'"'"'`)}'`,
|
|
6
|
+
execAsync: jest.fn(),
|
|
7
|
+
withCancelableTimeout: jest.fn(),
|
|
8
|
+
}));
|
|
9
|
+
const { iosOpenUrl, iosLaunchApp, iosTerminateApp, iosBootSimulator } = await import("../../core/ios.js");
|
|
10
|
+
const { androidLaunchApp, androidInputText } = await import("../../core/android.js");
|
|
11
|
+
const MARKER = "/tmp/execbro-marker.txt";
|
|
12
|
+
const SUBSTITUTION = `$(touch ${MARKER})`;
|
|
13
|
+
const SEPARATOR = `; touch ${MARKER}`;
|
|
14
|
+
function allArgs() {
|
|
15
|
+
return execFileAsyncMock.mock.calls.flatMap((call) => call[1] ?? []);
|
|
16
|
+
}
|
|
17
|
+
const quoted = (value) => `'${value.replace(/'/g, `'"'"'`)}'`;
|
|
18
|
+
function flattened() {
|
|
19
|
+
return execFileAsyncMock.mock.calls
|
|
20
|
+
.map((call) => `${call[0]} ${(call[1] ?? []).join(" ")}`)
|
|
21
|
+
.join("\n");
|
|
22
|
+
}
|
|
23
|
+
describe("tool arguments never reach a host shell", () => {
|
|
24
|
+
beforeEach(() => {
|
|
25
|
+
execFileAsyncMock.mockReset();
|
|
26
|
+
execFileAsyncMock.mockImplementation(async (file, args) => {
|
|
27
|
+
const argv = (args ?? []).join(" ");
|
|
28
|
+
if (file === "adb" && argv.startsWith("devices")) {
|
|
29
|
+
return { stdout: "List of devices attached\nemulator-5554\tdevice\n", stderr: "" };
|
|
30
|
+
}
|
|
31
|
+
return { stdout: "", stderr: "" };
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
it("ios_open_url: a url with command substitution stays one argv element", async () => {
|
|
35
|
+
const url = `myapp://x${SUBSTITUTION}`;
|
|
36
|
+
await iosOpenUrl(url, "booted").catch(() => undefined);
|
|
37
|
+
expect(execFileAsyncMock).toHaveBeenCalled();
|
|
38
|
+
expect(allArgs()).toContain(url);
|
|
39
|
+
for (const [file] of execFileAsyncMock.mock.calls) {
|
|
40
|
+
expect(file).not.toMatch(/\s/);
|
|
41
|
+
expect(file).not.toBe("sh");
|
|
42
|
+
expect(file).not.toBe("/bin/sh");
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
it("ios_launch_app: a bundle id with a statement separator stays one argv element", async () => {
|
|
46
|
+
const bundleId = `com.example.app${SEPARATOR}`;
|
|
47
|
+
await iosLaunchApp(bundleId, "booted").catch(() => undefined);
|
|
48
|
+
expect(allArgs()).toContain(bundleId);
|
|
49
|
+
});
|
|
50
|
+
it("ios_terminate_app: a bundle id with a statement separator stays one argv element", async () => {
|
|
51
|
+
const bundleId = `com.example.app${SEPARATOR}`;
|
|
52
|
+
await iosTerminateApp(bundleId, "booted").catch(() => undefined);
|
|
53
|
+
expect(allArgs()).toContain(bundleId);
|
|
54
|
+
});
|
|
55
|
+
it("ios_boot_simulator: a udid with a statement separator stays one argv element", async () => {
|
|
56
|
+
const udid = `AAAA${SEPARATOR}`;
|
|
57
|
+
await iosBootSimulator(udid).catch(() => undefined);
|
|
58
|
+
expect(allArgs()).toContain(udid);
|
|
59
|
+
});
|
|
60
|
+
it("android_launch_app: a package name with a statement separator is not shell-parsed", async () => {
|
|
61
|
+
const pkg = `com.example.app${SEPARATOR}`;
|
|
62
|
+
await androidLaunchApp(pkg).catch(() => undefined);
|
|
63
|
+
const flat = flattened();
|
|
64
|
+
expect(flat).toContain("monkey");
|
|
65
|
+
expect(flat).toContain(quoted(pkg));
|
|
66
|
+
expect(flat).not.toContain(` ${pkg} `);
|
|
67
|
+
});
|
|
68
|
+
it("android_input_text: text with command substitution is not shell-parsed", async () => {
|
|
69
|
+
const text = `hello ${SUBSTITUTION}`;
|
|
70
|
+
await androidInputText(text).catch(() => undefined);
|
|
71
|
+
const flat = flattened();
|
|
72
|
+
expect(flat).toContain("input text");
|
|
73
|
+
expect(flat).toContain(quoted("$"));
|
|
74
|
+
expect(flat).not.toContain("$(");
|
|
75
|
+
expect(flat).not.toContain(text);
|
|
76
|
+
});
|
|
77
|
+
it("no tool builds argv[0] as a shell invocation", async () => {
|
|
78
|
+
await iosOpenUrl(`myapp://x${SUBSTITUTION}`, "booted").catch(() => undefined);
|
|
79
|
+
await androidLaunchApp(`com.example.app${SEPARATOR}`).catch(() => undefined);
|
|
80
|
+
await androidInputText(`hello ${SUBSTITUTION}`).catch(() => undefined);
|
|
81
|
+
for (const [file] of execFileAsyncMock.mock.calls) {
|
|
82
|
+
expect(["sh", "bash", "zsh", "/bin/sh", "/bin/bash"]).not.toContain(file);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=toolArgInjection.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolArgInjection.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/toolArgInjection.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"android.d.ts","sourceRoot":"","sources":["../../src/core/android.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,cAAc,GAAG,gBAAgB,GAAG,MAAM,CAAC;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAGD,MAAM,WAAW,SAAS;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC7B;AA6CD,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CA+BvD;AAKD,wBAAgB,yBAAyB,IAAI,IAAI,CAGhD;AAiBD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,SAAS,CAAC,CAyD7D;AAKD,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBtE;AA0CD,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAgBhE;AAWD,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2B5E;AAYD,wBAAsB,iBAAiB,CACnC,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,SAAS,CAAC,CAoFpB;AAKD,wBAAsB,iBAAiB,CACnC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5D,OAAO,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"android.d.ts","sourceRoot":"","sources":["../../src/core/android.ts"],"names":[],"mappings":"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"}
|
package/build/core/android.js
CHANGED
|
@@ -3,7 +3,7 @@ import path from "path";
|
|
|
3
3
|
import os from "os";
|
|
4
4
|
import sharp from "sharp";
|
|
5
5
|
import { notifyDriverMissing } from "./logbox.js";
|
|
6
|
-
import {
|
|
6
|
+
import { execFileAsync, quoteForDeviceShell } from "./exec.js";
|
|
7
7
|
import { XMLParser } from "fast-xml-parser";
|
|
8
8
|
const ADB_TIMEOUT = 30000;
|
|
9
9
|
let adbAvailableCache = null;
|
|
@@ -35,7 +35,7 @@ export async function isAdbAvailable() {
|
|
|
35
35
|
if (adbAvailableCache !== null)
|
|
36
36
|
return adbAvailableCache;
|
|
37
37
|
try {
|
|
38
|
-
await
|
|
38
|
+
await execFileAsync("adb", ["version"], { timeout: 5000 });
|
|
39
39
|
adbAvailableCache = true;
|
|
40
40
|
return true;
|
|
41
41
|
}
|
|
@@ -50,7 +50,7 @@ export async function isAdbAvailable() {
|
|
|
50
50
|
process.env.PATH = `${dir}${sep}${process.env.PATH ?? ""}`;
|
|
51
51
|
adbPathFixApplied = true;
|
|
52
52
|
try {
|
|
53
|
-
await
|
|
53
|
+
await execFileAsync("adb", ["version"], { timeout: 5000 });
|
|
54
54
|
adbAvailableCache = true;
|
|
55
55
|
return true;
|
|
56
56
|
}
|
|
@@ -78,7 +78,7 @@ export async function listAndroidDevices() {
|
|
|
78
78
|
const adbMissing = await requireAdb();
|
|
79
79
|
if (adbMissing)
|
|
80
80
|
return adbMissing;
|
|
81
|
-
const { stdout } = await
|
|
81
|
+
const { stdout } = await execFileAsync("adb", ["devices", "-l"], { timeout: ADB_TIMEOUT });
|
|
82
82
|
const lines = stdout.trim().split("\n");
|
|
83
83
|
const deviceLines = lines.slice(1).filter((line) => line.trim().length > 0);
|
|
84
84
|
if (deviceLines.length === 0) {
|
|
@@ -130,7 +130,7 @@ export async function listAndroidDevices() {
|
|
|
130
130
|
}
|
|
131
131
|
export async function getDefaultAndroidDevice() {
|
|
132
132
|
try {
|
|
133
|
-
const { stdout } = await
|
|
133
|
+
const { stdout } = await execFileAsync("adb", ["devices"], { timeout: ADB_TIMEOUT });
|
|
134
134
|
const lines = stdout.trim().split("\n");
|
|
135
135
|
const deviceLines = lines.slice(1).filter((line) => line.trim().length > 0);
|
|
136
136
|
for (const line of deviceLines) {
|
|
@@ -147,7 +147,7 @@ export async function getDefaultAndroidDevice() {
|
|
|
147
147
|
}
|
|
148
148
|
async function findEmulatorBinary() {
|
|
149
149
|
try {
|
|
150
|
-
await
|
|
150
|
+
await execFileAsync("emulator", ["-help"], { timeout: 3000 });
|
|
151
151
|
return "emulator";
|
|
152
152
|
}
|
|
153
153
|
catch {
|
|
@@ -161,7 +161,7 @@ async function findEmulatorBinary() {
|
|
|
161
161
|
candidates.push(path.join(os.homedir(), "Library", "Android", "sdk", "emulator", "emulator"));
|
|
162
162
|
for (const candidate of candidates) {
|
|
163
163
|
try {
|
|
164
|
-
await
|
|
164
|
+
await execFileAsync(candidate, ["-help"], { timeout: 3000 });
|
|
165
165
|
return `"${candidate}"`;
|
|
166
166
|
}
|
|
167
167
|
catch {
|
|
@@ -177,7 +177,7 @@ export async function getAndroidEmulatorAvds() {
|
|
|
177
177
|
if (!emulatorBin)
|
|
178
178
|
return [];
|
|
179
179
|
try {
|
|
180
|
-
const { stdout } = await
|
|
180
|
+
const { stdout } = await execFileAsync(emulatorBin, ["-list-avds"], { timeout: ADB_TIMEOUT });
|
|
181
181
|
return stdout
|
|
182
182
|
.split("\n")
|
|
183
183
|
.map((line) => line.trim())
|
|
@@ -192,7 +192,7 @@ export async function getAdbIdForAvd(avdName) {
|
|
|
192
192
|
if (adbMissing)
|
|
193
193
|
return null;
|
|
194
194
|
try {
|
|
195
|
-
const { stdout: devicesOut } = await
|
|
195
|
+
const { stdout: devicesOut } = await execFileAsync("adb", ["devices"], { timeout: ADB_TIMEOUT });
|
|
196
196
|
const lines = devicesOut.trim().split("\n").slice(1);
|
|
197
197
|
const emulatorSerials = lines
|
|
198
198
|
.map((line) => line.trim().split(/\s+/)[0])
|
|
@@ -200,7 +200,7 @@ export async function getAdbIdForAvd(avdName) {
|
|
|
200
200
|
const target = avdName.trim();
|
|
201
201
|
for (const serial of emulatorSerials) {
|
|
202
202
|
try {
|
|
203
|
-
const { stdout } = await
|
|
203
|
+
const { stdout } = await execFileAsync("adb", ["-s", serial, "emu", "avd", "name"], {
|
|
204
204
|
timeout: ADB_TIMEOUT
|
|
205
205
|
});
|
|
206
206
|
const reported = stdout.split("\n")[0]?.trim() ?? "";
|
|
@@ -216,8 +216,8 @@ export async function getAdbIdForAvd(avdName) {
|
|
|
216
216
|
return null;
|
|
217
217
|
}
|
|
218
218
|
}
|
|
219
|
-
function
|
|
220
|
-
return deviceId ?
|
|
219
|
+
function buildDeviceArgs(deviceId) {
|
|
220
|
+
return deviceId ? ["-s", deviceId] : [];
|
|
221
221
|
}
|
|
222
222
|
export async function androidScreenshot(outputPath, deviceId, signal) {
|
|
223
223
|
try {
|
|
@@ -231,19 +231,19 @@ export async function androidScreenshot(outputPath, deviceId, signal) {
|
|
|
231
231
|
error: "No Android device connected. Connect a device or start an emulator."
|
|
232
232
|
};
|
|
233
233
|
}
|
|
234
|
-
const
|
|
234
|
+
const deviceArgs = buildDeviceArgs(device);
|
|
235
235
|
const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
|
|
236
236
|
const finalOutputPath = outputPath || path.join(os.tmpdir(), `android-screenshot-${timestamp}.png`);
|
|
237
237
|
const remotePath = "/sdcard/screenshot-temp.png";
|
|
238
|
-
await
|
|
238
|
+
await execFileAsync("adb", [...deviceArgs, "shell", `screencap -p ${remotePath}`], {
|
|
239
239
|
timeout: ADB_TIMEOUT,
|
|
240
240
|
signal
|
|
241
241
|
});
|
|
242
|
-
await
|
|
242
|
+
await execFileAsync("adb", [...deviceArgs, "pull", remotePath, finalOutputPath], {
|
|
243
243
|
timeout: ADB_TIMEOUT,
|
|
244
244
|
signal
|
|
245
245
|
});
|
|
246
|
-
await
|
|
246
|
+
await execFileAsync("adb", [...deviceArgs, "shell", `rm ${remotePath}`], {
|
|
247
247
|
timeout: ADB_TIMEOUT,
|
|
248
248
|
signal
|
|
249
249
|
}).catch(() => {
|
|
@@ -304,14 +304,13 @@ export async function androidInstallApp(apkPath, deviceId, options) {
|
|
|
304
304
|
error: "No Android device connected. Connect a device or start an emulator."
|
|
305
305
|
};
|
|
306
306
|
}
|
|
307
|
-
const
|
|
307
|
+
const deviceArgs = buildDeviceArgs(device);
|
|
308
308
|
const flags = [];
|
|
309
309
|
if (options?.replace)
|
|
310
310
|
flags.push("-r");
|
|
311
311
|
if (options?.grantPermissions)
|
|
312
312
|
flags.push("-g");
|
|
313
|
-
const
|
|
314
|
-
const { stdout, stderr } = await execAsync(`adb ${deviceArg} install ${flagsStr}"${apkPath}"`, { timeout: 120000 });
|
|
313
|
+
const { stdout, stderr } = await execFileAsync("adb", [...deviceArgs, "install", ...flags, apkPath], { timeout: 120000 });
|
|
315
314
|
const output = stdout + stderr;
|
|
316
315
|
if (output.includes("Success")) {
|
|
317
316
|
return {
|
|
@@ -345,15 +344,11 @@ export async function androidLaunchApp(packageName, activityName, deviceId) {
|
|
|
345
344
|
error: "No Android device connected. Connect a device or start an emulator."
|
|
346
345
|
};
|
|
347
346
|
}
|
|
348
|
-
const
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
}
|
|
353
|
-
else {
|
|
354
|
-
command = `adb ${deviceArg} shell monkey -p ${packageName} -c android.intent.category.LAUNCHER 1`;
|
|
355
|
-
}
|
|
356
|
-
const { stdout, stderr } = await execAsync(command, { timeout: ADB_TIMEOUT });
|
|
347
|
+
const deviceArgs = buildDeviceArgs(device);
|
|
348
|
+
const deviceCommand = activityName
|
|
349
|
+
? `am start -n ${quoteForDeviceShell(`${packageName}/${activityName}`)}`
|
|
350
|
+
: `monkey -p ${quoteForDeviceShell(packageName)} -c android.intent.category.LAUNCHER 1`;
|
|
351
|
+
const { stdout, stderr } = await execFileAsync("adb", [...deviceArgs, "shell", deviceCommand], { timeout: ADB_TIMEOUT });
|
|
357
352
|
const output = stdout + stderr;
|
|
358
353
|
if (output.includes("Error") || output.includes("Exception")) {
|
|
359
354
|
return {
|
|
@@ -385,8 +380,8 @@ export async function androidListPackages(deviceId, filter) {
|
|
|
385
380
|
error: "No Android device connected. Connect a device or start an emulator."
|
|
386
381
|
};
|
|
387
382
|
}
|
|
388
|
-
const
|
|
389
|
-
const { stdout } = await
|
|
383
|
+
const deviceArgs = buildDeviceArgs(device);
|
|
384
|
+
const { stdout } = await execFileAsync("adb", [...deviceArgs, "shell", "pm list packages"], {
|
|
390
385
|
timeout: ADB_TIMEOUT
|
|
391
386
|
});
|
|
392
387
|
let packages = stdout
|
|
@@ -452,8 +447,8 @@ export async function androidTap(x, y, deviceId) {
|
|
|
452
447
|
error: "No Android device connected. Connect a device or start an emulator."
|
|
453
448
|
};
|
|
454
449
|
}
|
|
455
|
-
const
|
|
456
|
-
await
|
|
450
|
+
const deviceArgs = buildDeviceArgs(device);
|
|
451
|
+
await execFileAsync("adb", [...deviceArgs, "shell", `input tap ${Math.round(x)} ${Math.round(y)}`], {
|
|
457
452
|
timeout: ADB_TIMEOUT
|
|
458
453
|
});
|
|
459
454
|
return {
|
|
@@ -480,10 +475,10 @@ export async function androidLongPress(x, y, durationMs = 1000, deviceId) {
|
|
|
480
475
|
error: "No Android device connected. Connect a device or start an emulator."
|
|
481
476
|
};
|
|
482
477
|
}
|
|
483
|
-
const
|
|
478
|
+
const deviceArgs = buildDeviceArgs(device);
|
|
484
479
|
const xRounded = Math.round(x);
|
|
485
480
|
const yRounded = Math.round(y);
|
|
486
|
-
await
|
|
481
|
+
await execFileAsync("adb", [...deviceArgs, "shell", `input swipe ${xRounded} ${yRounded} ${xRounded} ${yRounded} ${durationMs}`], { timeout: ADB_TIMEOUT + durationMs });
|
|
487
482
|
return {
|
|
488
483
|
success: true,
|
|
489
484
|
result: `Long pressed at (${xRounded}, ${yRounded}) for ${durationMs}ms`
|
|
@@ -508,12 +503,12 @@ export async function androidSwipe(startX, startY, endX, endY, durationMs = 300,
|
|
|
508
503
|
error: "No Android device connected. Connect a device or start an emulator."
|
|
509
504
|
};
|
|
510
505
|
}
|
|
511
|
-
const
|
|
506
|
+
const deviceArgs = buildDeviceArgs(device);
|
|
512
507
|
const x1 = Math.round(startX);
|
|
513
508
|
const y1 = Math.round(startY);
|
|
514
509
|
const x2 = Math.round(endX);
|
|
515
510
|
const y2 = Math.round(endY);
|
|
516
|
-
await
|
|
511
|
+
await execFileAsync("adb", [...deviceArgs, "shell", `input swipe ${x1} ${y1} ${x2} ${y2} ${durationMs}`], { timeout: ADB_TIMEOUT + durationMs });
|
|
517
512
|
return {
|
|
518
513
|
success: true,
|
|
519
514
|
result: `Swiped from (${x1}, ${y1}) to (${x2}, ${y2}) in ${durationMs}ms`
|
|
@@ -538,74 +533,22 @@ export async function androidInputText(text, deviceId) {
|
|
|
538
533
|
error: "No Android device connected. Connect a device or start an emulator."
|
|
539
534
|
};
|
|
540
535
|
}
|
|
541
|
-
const
|
|
536
|
+
const deviceArgs = buildDeviceArgs(device);
|
|
542
537
|
const hasComplexChars = /[/:?=&#@%+]/.test(text);
|
|
543
538
|
if (hasComplexChars) {
|
|
544
539
|
for (const char of text) {
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
break;
|
|
550
|
-
case "'":
|
|
551
|
-
keyCmd = `adb ${deviceArg} shell input text "\\'"`;
|
|
552
|
-
break;
|
|
553
|
-
case '"':
|
|
554
|
-
keyCmd = `adb ${deviceArg} shell input text '\\"'`;
|
|
555
|
-
break;
|
|
556
|
-
case "\\":
|
|
557
|
-
keyCmd = `adb ${deviceArg} shell input text "\\\\"`;
|
|
558
|
-
break;
|
|
559
|
-
case "&":
|
|
560
|
-
keyCmd = `adb ${deviceArg} shell input text "\\&"`;
|
|
561
|
-
break;
|
|
562
|
-
case "|":
|
|
563
|
-
keyCmd = `adb ${deviceArg} shell input text "\\|"`;
|
|
564
|
-
break;
|
|
565
|
-
case ";":
|
|
566
|
-
keyCmd = `adb ${deviceArg} shell input text "\\;"`;
|
|
567
|
-
break;
|
|
568
|
-
case "<":
|
|
569
|
-
keyCmd = `adb ${deviceArg} shell input text "\\<"`;
|
|
570
|
-
break;
|
|
571
|
-
case ">":
|
|
572
|
-
keyCmd = `adb ${deviceArg} shell input text "\\>"`;
|
|
573
|
-
break;
|
|
574
|
-
case "(":
|
|
575
|
-
keyCmd = `adb ${deviceArg} shell input text "\\("`;
|
|
576
|
-
break;
|
|
577
|
-
case ")":
|
|
578
|
-
keyCmd = `adb ${deviceArg} shell input text "\\)"`;
|
|
579
|
-
break;
|
|
580
|
-
case "$":
|
|
581
|
-
keyCmd = `adb ${deviceArg} shell input text "\\$"`;
|
|
582
|
-
break;
|
|
583
|
-
case "`":
|
|
584
|
-
keyCmd = `adb ${deviceArg} shell input text "\\\`"`;
|
|
585
|
-
break;
|
|
586
|
-
case "#":
|
|
587
|
-
keyCmd = `adb ${deviceArg} shell input text "\\#"`;
|
|
588
|
-
break;
|
|
589
|
-
default:
|
|
590
|
-
keyCmd = `adb ${deviceArg} shell input text '${char}'`;
|
|
591
|
-
}
|
|
592
|
-
await execAsync(keyCmd, { timeout: 5000 });
|
|
540
|
+
const deviceCommand = char === " " ? "input text %s" : `input text ${quoteForDeviceShell(char)}`;
|
|
541
|
+
await execFileAsync("adb", [...deviceArgs, "shell", deviceCommand], {
|
|
542
|
+
timeout: 5000
|
|
543
|
+
});
|
|
593
544
|
}
|
|
594
545
|
return {
|
|
595
546
|
success: true,
|
|
596
547
|
result: `Typed: "${text}"`
|
|
597
548
|
};
|
|
598
549
|
}
|
|
599
|
-
const
|
|
600
|
-
|
|
601
|
-
.replace(/"/g, '\\"')
|
|
602
|
-
.replace(/'/g, "\\'")
|
|
603
|
-
.replace(/`/g, "\\`")
|
|
604
|
-
.replace(/\$/g, "\\$")
|
|
605
|
-
.replace(/ /g, "%s");
|
|
606
|
-
await execAsync(`adb ${deviceArg} shell input text "${escapedText}"`, {
|
|
607
|
-
timeout: ADB_TIMEOUT
|
|
608
|
-
});
|
|
550
|
+
const forInput = text.replace(/ /g, "%s");
|
|
551
|
+
await execFileAsync("adb", [...deviceArgs, "shell", `input text ${quoteForDeviceShell(forInput)}`], { timeout: ADB_TIMEOUT });
|
|
609
552
|
return {
|
|
610
553
|
success: true,
|
|
611
554
|
result: `Typed: "${text}"`
|
|
@@ -630,7 +573,7 @@ export async function androidKeyEvent(keyCode, deviceId) {
|
|
|
630
573
|
error: "No Android device connected. Connect a device or start an emulator."
|
|
631
574
|
};
|
|
632
575
|
}
|
|
633
|
-
const
|
|
576
|
+
const deviceArgs = buildDeviceArgs(device);
|
|
634
577
|
const resolvedKeyCode = typeof keyCode === "string" ? ANDROID_KEY_EVENTS[keyCode] : keyCode;
|
|
635
578
|
if (resolvedKeyCode === undefined) {
|
|
636
579
|
return {
|
|
@@ -638,7 +581,7 @@ export async function androidKeyEvent(keyCode, deviceId) {
|
|
|
638
581
|
error: `Invalid key code: ${keyCode}`
|
|
639
582
|
};
|
|
640
583
|
}
|
|
641
|
-
await
|
|
584
|
+
await execFileAsync("adb", [...deviceArgs, "shell", `input keyevent ${resolvedKeyCode}`], {
|
|
642
585
|
timeout: ADB_TIMEOUT
|
|
643
586
|
});
|
|
644
587
|
const keyName = typeof keyCode === "string"
|
|
@@ -757,17 +700,17 @@ export async function androidGetUITree(deviceId, signal) {
|
|
|
757
700
|
error: "No Android device connected. Connect a device or start an emulator."
|
|
758
701
|
};
|
|
759
702
|
}
|
|
760
|
-
const
|
|
703
|
+
const deviceArgs = buildDeviceArgs(device);
|
|
761
704
|
const remotePath = "/sdcard/ui_dump.xml";
|
|
762
|
-
await
|
|
705
|
+
await execFileAsync("adb", [...deviceArgs, "shell", `uiautomator dump ${remotePath}`], {
|
|
763
706
|
timeout: ADB_TIMEOUT,
|
|
764
707
|
signal
|
|
765
708
|
});
|
|
766
|
-
const { stdout } = await
|
|
709
|
+
const { stdout } = await execFileAsync("adb", [...deviceArgs, "shell", `cat ${remotePath}`], {
|
|
767
710
|
timeout: ADB_TIMEOUT,
|
|
768
711
|
signal
|
|
769
712
|
});
|
|
770
|
-
await
|
|
713
|
+
await execFileAsync("adb", [...deviceArgs, "shell", `rm ${remotePath}`], {
|
|
771
714
|
timeout: ADB_TIMEOUT,
|
|
772
715
|
signal
|
|
773
716
|
}).catch(() => { });
|
|
@@ -895,8 +838,8 @@ export async function androidGetScreenSize(deviceId) {
|
|
|
895
838
|
error: "No Android device connected. Connect a device or start an emulator."
|
|
896
839
|
};
|
|
897
840
|
}
|
|
898
|
-
const
|
|
899
|
-
const { stdout } = await
|
|
841
|
+
const deviceArgs = buildDeviceArgs(device);
|
|
842
|
+
const { stdout } = await execFileAsync("adb", [...deviceArgs, "shell", "wm size"], {
|
|
900
843
|
timeout: ADB_TIMEOUT
|
|
901
844
|
});
|
|
902
845
|
const match = stdout.match(/(\d+)x(\d+)/);
|
|
@@ -931,8 +874,8 @@ export async function androidGetDensity(deviceId) {
|
|
|
931
874
|
error: "No Android device connected. Connect a device or start an emulator."
|
|
932
875
|
};
|
|
933
876
|
}
|
|
934
|
-
const
|
|
935
|
-
const { stdout } = await
|
|
877
|
+
const deviceArgs = buildDeviceArgs(device);
|
|
878
|
+
const { stdout } = await execFileAsync("adb", [...deviceArgs, "shell", "wm density"], {
|
|
936
879
|
timeout: ADB_TIMEOUT
|
|
937
880
|
});
|
|
938
881
|
const match = stdout.match(/density:\s*(\d+)/i);
|
|
@@ -966,9 +909,9 @@ export async function androidGetStatusBarHeight(deviceId) {
|
|
|
966
909
|
}
|
|
967
910
|
const density = densityResult.density;
|
|
968
911
|
const densityScale = density / 160;
|
|
969
|
-
const
|
|
912
|
+
const deviceArgs = buildDeviceArgs(deviceId);
|
|
970
913
|
try {
|
|
971
|
-
const { stdout } = await
|
|
914
|
+
const { stdout } = await execFileAsync("adb", [...deviceArgs, "shell", "dumpsys window | grep -E 'statusBars|mStatusBarLayer|InsetsSource.*statusBars'"], { timeout: ADB_TIMEOUT });
|
|
972
915
|
const frameMatch = stdout.match(/statusBars.*frame=\[[\d,]+\]\[(\d+),(\d+)\]/);
|
|
973
916
|
if (frameMatch) {
|
|
974
917
|
const heightPixels = parseInt(frameMatch[2], 10);
|
|
@@ -1131,17 +1074,17 @@ export async function androidDescribeAll(deviceId) {
|
|
|
1131
1074
|
error: "No Android device connected. Connect a device or start an emulator."
|
|
1132
1075
|
};
|
|
1133
1076
|
}
|
|
1134
|
-
const
|
|
1077
|
+
const deviceArgs = buildDeviceArgs(device);
|
|
1135
1078
|
const remotePath = "/sdcard/ui_dump.xml";
|
|
1136
|
-
await
|
|
1079
|
+
await execFileAsync("adb", [...deviceArgs, "shell", `uiautomator dump ${remotePath}`], {
|
|
1137
1080
|
timeout: ADB_TIMEOUT
|
|
1138
1081
|
});
|
|
1139
|
-
const { stdout } = await
|
|
1082
|
+
const { stdout } = await execFileAsync("adb", [...deviceArgs, "shell", `cat ${remotePath}`], {
|
|
1140
1083
|
timeout: ADB_TIMEOUT,
|
|
1141
1084
|
maxBuffer: 10 * 1024 * 1024
|
|
1142
1085
|
});
|
|
1143
1086
|
const xmlContent = stdout.trim();
|
|
1144
|
-
await
|
|
1087
|
+
await execFileAsync("adb", [...deviceArgs, "shell", `rm ${remotePath}`], {
|
|
1145
1088
|
timeout: 5000
|
|
1146
1089
|
}).catch(() => { });
|
|
1147
1090
|
if (!xmlContent || !xmlContent.includes("<hierarchy")) {
|