@ramarivera/chofi 0.1.1 → 0.1.3
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 +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +46 -4
- package/dist/drivers/apple.d.ts +2 -1
- package/dist/drivers/apple.d.ts.map +1 -1
- package/dist/drivers/apple.js +11 -2
- package/dist/drivers/expo.d.ts +5 -1
- package/dist/drivers/expo.d.ts.map +1 -1
- package/dist/drivers/expo.js +4 -4
- package/dist/runtime.d.ts +7 -2
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +20 -10
- package/dist/spawn.d.ts +3 -0
- package/dist/spawn.d.ts.map +1 -1
- package/dist/spawn.js +2 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -85,6 +85,7 @@ chofi maestro run flows/smoke.yaml --json
|
|
|
85
85
|
|---------|-------------|
|
|
86
86
|
| `chofi app install <udid> <path> --json` | Install .app bundle |
|
|
87
87
|
| `chofi app launch <udid> <bundleId> --json` | Launch app |
|
|
88
|
+
| `chofi app launch <udid> <bundleId> --json -- <args...>` | Launch app with app arguments |
|
|
88
89
|
| `chofi app terminate <udid> <bundleId> --json` | Terminate app |
|
|
89
90
|
| `chofi app terminate <udid> <bundleId> --force --json` | Force kill (SIGKILL) |
|
|
90
91
|
| `chofi app terminate-all <udid> --force --json` | Kill ALL apps |
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AAQvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CAC3C;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AAQvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CAC3C;AA2sCD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,YAAY,GAAE,eAAoB,GACjC,OAAO,CAAC,MAAM,CAAC,CA2DjB"}
|
package/dist/cli.js
CHANGED
|
@@ -17,6 +17,20 @@ class CliError extends Error {
|
|
|
17
17
|
this.phase = phase;
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
+
function parseLaunchEnv(values) {
|
|
21
|
+
if (!values || values.length === 0) {
|
|
22
|
+
return {};
|
|
23
|
+
}
|
|
24
|
+
const env = {};
|
|
25
|
+
for (const value of values) {
|
|
26
|
+
const equalsIndex = value.indexOf("=");
|
|
27
|
+
if (equalsIndex <= 0) {
|
|
28
|
+
return { error: `Invalid --launch-env value "${value}". Use KEY=VALUE.` };
|
|
29
|
+
}
|
|
30
|
+
env[value.slice(0, equalsIndex)] = value.slice(equalsIndex + 1);
|
|
31
|
+
}
|
|
32
|
+
return { env };
|
|
33
|
+
}
|
|
20
34
|
function createProgram(ctx, deps) {
|
|
21
35
|
const program = new Command("chofi")
|
|
22
36
|
.description("JSON-first CLI for iOS, Android, Expo, and React Native workflows")
|
|
@@ -633,15 +647,28 @@ function createProgram(ctx, deps) {
|
|
|
633
647
|
});
|
|
634
648
|
});
|
|
635
649
|
appCmd
|
|
636
|
-
.command("launch <udid> <bundleId>")
|
|
650
|
+
.command("launch <udid> <bundleId> [appArgs...]")
|
|
637
651
|
.description("Launch app on simulator/device")
|
|
638
|
-
.action(async (udid, bundleId) => {
|
|
652
|
+
.action(async (udid, bundleId, appArgs = []) => {
|
|
639
653
|
await runSimAction({
|
|
640
654
|
clock: ctx.clock,
|
|
641
655
|
runtime: ctx.runtime,
|
|
642
656
|
writer: ctx.writer,
|
|
643
657
|
phase: "app.launch",
|
|
644
|
-
action: () => ctx.runtime.appLaunch(udid, bundleId),
|
|
658
|
+
action: () => ctx.runtime.appLaunch(udid, bundleId, appArgs),
|
|
659
|
+
target: udid
|
|
660
|
+
});
|
|
661
|
+
});
|
|
662
|
+
appCmd
|
|
663
|
+
.command("openurl <udid> <url>")
|
|
664
|
+
.description("Open URL on simulator/device")
|
|
665
|
+
.action(async (udid, url) => {
|
|
666
|
+
await runSimAction({
|
|
667
|
+
clock: ctx.clock,
|
|
668
|
+
runtime: ctx.runtime,
|
|
669
|
+
writer: ctx.writer,
|
|
670
|
+
phase: "app.openurl",
|
|
671
|
+
action: () => ctx.runtime.appOpenUrl(udid, url),
|
|
645
672
|
target: udid
|
|
646
673
|
});
|
|
647
674
|
});
|
|
@@ -718,6 +745,7 @@ function createProgram(ctx, deps) {
|
|
|
718
745
|
.option("--confirm", "Explicitly confirm")
|
|
719
746
|
.option("--yes", "Alias for --confirm")
|
|
720
747
|
.option("--no-build", "Skip build, launch existing app")
|
|
748
|
+
.option("--device <device>", "iOS simulator/device name or UDID")
|
|
721
749
|
.option("--launch-env <env...>", "Environment variables for launch (KEY=VALUE)")
|
|
722
750
|
.action(async (options) => {
|
|
723
751
|
if (!options.confirm && !options.yes) {
|
|
@@ -730,6 +758,17 @@ function createProgram(ctx, deps) {
|
|
|
730
758
|
}));
|
|
731
759
|
throw new CliError("", 1);
|
|
732
760
|
}
|
|
761
|
+
const launchEnv = parseLaunchEnv(options.launchEnv);
|
|
762
|
+
if (launchEnv.error) {
|
|
763
|
+
ctx.writer.write(createChofiEvent({
|
|
764
|
+
clock: ctx.clock,
|
|
765
|
+
event: "summary",
|
|
766
|
+
phase: "run.ios",
|
|
767
|
+
status: "failed",
|
|
768
|
+
data: { message: launchEnv.error }
|
|
769
|
+
}));
|
|
770
|
+
throw new CliError("", 2);
|
|
771
|
+
}
|
|
733
772
|
await runExecution({
|
|
734
773
|
clock: ctx.clock,
|
|
735
774
|
writer: ctx.writer,
|
|
@@ -739,7 +778,10 @@ function createProgram(ctx, deps) {
|
|
|
739
778
|
if (!options.noBuild) {
|
|
740
779
|
await ctx.runtime.prebuild(c.repoRoot, "ios");
|
|
741
780
|
}
|
|
742
|
-
await ctx.runtime.runExpoIos(c.mobilePath
|
|
781
|
+
await ctx.runtime.runExpoIos(c.mobilePath, {
|
|
782
|
+
device: options.device,
|
|
783
|
+
env: launchEnv.env
|
|
784
|
+
});
|
|
743
785
|
}
|
|
744
786
|
});
|
|
745
787
|
});
|
package/dist/drivers/apple.d.ts
CHANGED
|
@@ -38,8 +38,9 @@ export declare class AppleDriver implements Driver {
|
|
|
38
38
|
createSimulator(name: string, deviceType: string, runtime: string): Promise<ProcessResult>;
|
|
39
39
|
deleteSimulator(nameOrUdid: string): Promise<ProcessResult>;
|
|
40
40
|
installApp(udid: string, appPath: string): Promise<ProcessResult>;
|
|
41
|
-
launchApp(udid: string, bundleId: string): Promise<ProcessResult>;
|
|
41
|
+
launchApp(udid: string, bundleId: string, appArgs?: readonly string[]): Promise<ProcessResult>;
|
|
42
42
|
terminateApp(udid: string, bundleId: string): Promise<ProcessResult>;
|
|
43
|
+
openUrl(udid: string, url: string): Promise<ProcessResult>;
|
|
43
44
|
uninstallApp(udid: string, bundleId: string): Promise<ProcessResult>;
|
|
44
45
|
pruneUnavailableSimulators(): Promise<ProcessResult>;
|
|
45
46
|
streamLogs(udid: string, timeoutMs?: number): Promise<ProcessResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apple.d.ts","sourceRoot":"","sources":["../../src/drivers/apple.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE9E,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAwBhE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,cAAc,GAAG,MAAM,CAAC;CACxD;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,WAAY,YAAW,MAAM;IAG5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,QAAQ,CAAC,IAAI,WAAW;gBAEK,OAAO,GAAE,cAA+B;IAE/D,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC;IAW5B,cAAc,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IActC,WAAW,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAcxC,YAAY,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAcrC,eAAe,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAaxC,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IASrE,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUhE,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAKzD,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAK7D,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAWzD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAK1D,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,CAAC;IAUnB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAK3D,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAIjE,SAAS,
|
|
1
|
+
{"version":3,"file":"apple.d.ts","sourceRoot":"","sources":["../../src/drivers/apple.ts"],"names":[],"mappings":"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"}
|
package/dist/drivers/apple.js
CHANGED
|
@@ -135,12 +135,21 @@ export class AppleDriver {
|
|
|
135
135
|
async installApp(udid, appPath) {
|
|
136
136
|
return this.spawner.run("xcrun", ["simctl", "install", udid, appPath]);
|
|
137
137
|
}
|
|
138
|
-
async launchApp(udid, bundleId) {
|
|
139
|
-
return this.spawner.run("xcrun", [
|
|
138
|
+
async launchApp(udid, bundleId, appArgs = []) {
|
|
139
|
+
return this.spawner.run("xcrun", [
|
|
140
|
+
"simctl",
|
|
141
|
+
"launch",
|
|
142
|
+
udid,
|
|
143
|
+
bundleId,
|
|
144
|
+
...appArgs
|
|
145
|
+
]);
|
|
140
146
|
}
|
|
141
147
|
async terminateApp(udid, bundleId) {
|
|
142
148
|
return this.spawner.run("xcrun", ["simctl", "terminate", udid, bundleId]);
|
|
143
149
|
}
|
|
150
|
+
async openUrl(udid, url) {
|
|
151
|
+
return this.spawner.run("xcrun", ["simctl", "openurl", udid, url]);
|
|
152
|
+
}
|
|
144
153
|
async uninstallApp(udid, bundleId) {
|
|
145
154
|
return this.spawner.run("xcrun", ["simctl", "uninstall", udid, bundleId]);
|
|
146
155
|
}
|
package/dist/drivers/expo.d.ts
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import type { ProcessSpawner, ProcessResult } from "../spawn.js";
|
|
2
2
|
import type { Driver, ToolStatus } from "./types.js";
|
|
3
|
+
export interface ExpoRunOptions {
|
|
4
|
+
readonly device?: string | undefined;
|
|
5
|
+
readonly env?: Readonly<Record<string, string | undefined>> | undefined;
|
|
6
|
+
}
|
|
3
7
|
export declare class ExpoDriver implements Driver {
|
|
4
8
|
private readonly spawner;
|
|
5
9
|
readonly name = "expo";
|
|
6
10
|
constructor(spawner?: ProcessSpawner);
|
|
7
11
|
check(): Promise<ToolStatus>;
|
|
8
12
|
prebuild(cwd: string, platform?: "ios" | "android"): Promise<ProcessResult>;
|
|
9
|
-
runIos(cwd: string,
|
|
13
|
+
runIos(cwd: string, options?: ExpoRunOptions): Promise<ProcessResult>;
|
|
10
14
|
runAndroid(cwd: string, device?: string): Promise<ProcessResult>;
|
|
11
15
|
start(cwd: string): Promise<ProcessResult>;
|
|
12
16
|
doctor(cwd: string): Promise<ProcessResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expo.d.ts","sourceRoot":"","sources":["../../src/drivers/expo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAErD,qBAAa,UAAW,YAAW,MAAM;IAG3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,QAAQ,CAAC,IAAI,UAAU;gBAEM,OAAO,GAAE,cAA+B;IAE/D,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC;IAW5B,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IAM3E,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"expo.d.ts","sourceRoot":"","sources":["../../src/drivers/expo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC;CACzE;AAED,qBAAa,UAAW,YAAW,MAAM;IAG3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,QAAQ,CAAC,IAAI,UAAU;gBAEM,OAAO,GAAE,cAA+B;IAE/D,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC;IAW5B,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IAM3E,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAMzE,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAMhE,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAI1C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;CAGlD"}
|
package/dist/drivers/expo.js
CHANGED
|
@@ -21,11 +21,11 @@ export class ExpoDriver {
|
|
|
21
21
|
args.push("--platform", platform);
|
|
22
22
|
return this.spawner.run("npx", args, { cwd });
|
|
23
23
|
}
|
|
24
|
-
async runIos(cwd,
|
|
24
|
+
async runIos(cwd, options = {}) {
|
|
25
25
|
const args = ["expo", "run:ios"];
|
|
26
|
-
if (device)
|
|
27
|
-
args.push("--device", device);
|
|
28
|
-
return this.spawner.run("npx", args, { cwd });
|
|
26
|
+
if (options.device)
|
|
27
|
+
args.push("--device", options.device);
|
|
28
|
+
return this.spawner.run("npx", args, { cwd, env: options.env });
|
|
29
29
|
}
|
|
30
30
|
async runAndroid(cwd, device) {
|
|
31
31
|
const args = ["expo", "run:android"];
|
package/dist/runtime.d.ts
CHANGED
|
@@ -25,6 +25,10 @@ export interface TestProgress {
|
|
|
25
25
|
readonly durationMs?: number | undefined;
|
|
26
26
|
readonly failureMessage?: string | undefined;
|
|
27
27
|
}
|
|
28
|
+
export interface RuntimeExpoRunOptions {
|
|
29
|
+
readonly device?: string | undefined;
|
|
30
|
+
readonly env?: Readonly<Record<string, string | undefined>> | undefined;
|
|
31
|
+
}
|
|
28
32
|
export declare class RuntimeController {
|
|
29
33
|
readonly apple: AppleDriver;
|
|
30
34
|
readonly maestro: MaestroDriver;
|
|
@@ -51,8 +55,9 @@ export declare class RuntimeController {
|
|
|
51
55
|
simRunningApps(udid: string): Promise<RunningApp[]>;
|
|
52
56
|
deviceList(platform?: string): Promise<PhysicalDevice[]>;
|
|
53
57
|
appInstall(udid: string, appPath: string): Promise<void>;
|
|
54
|
-
appLaunch(udid: string, bundleId: string): Promise<void>;
|
|
58
|
+
appLaunch(udid: string, bundleId: string, appArgs?: readonly string[]): Promise<void>;
|
|
55
59
|
appTerminate(udid: string, bundleId: string, force?: boolean): Promise<void>;
|
|
60
|
+
appOpenUrl(udid: string, url: string): Promise<void>;
|
|
56
61
|
appTerminateAll(udid: string, force?: boolean): Promise<void>;
|
|
57
62
|
appUninstall(udid: string, bundleId: string): Promise<void>;
|
|
58
63
|
appListRunning(udid: string): Promise<RunningApp[]>;
|
|
@@ -90,7 +95,7 @@ export declare class RuntimeController {
|
|
|
90
95
|
xcodeCache?: boolean | undefined;
|
|
91
96
|
}): Promise<void>;
|
|
92
97
|
prebuild(cwd: string, platform?: "ios" | "android"): Promise<void>;
|
|
93
|
-
runExpoIos(cwd: string,
|
|
98
|
+
runExpoIos(cwd: string, options?: RuntimeExpoRunOptions): Promise<void>;
|
|
94
99
|
runExpoAndroid(cwd: string, device?: string): Promise<void>;
|
|
95
100
|
runMaestroTest(flowPath: string, options: {
|
|
96
101
|
cwd: string;
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,YAAY,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime.js
CHANGED
|
@@ -3,7 +3,10 @@ import { AppleDriver } from "./drivers/apple.js";
|
|
|
3
3
|
import { MaestroDriver } from "./drivers/maestro.js";
|
|
4
4
|
import { ExpoDriver } from "./drivers/expo.js";
|
|
5
5
|
import { IdbDriver } from "./drivers/idb.js";
|
|
6
|
-
import { SimulatorStateError, AppNotInstalledError,
|
|
6
|
+
import { SimulatorStateError, AppNotInstalledError, BuildFailedError, TestsFailedError, ToolOutputError, classifyError } from "./errors.js";
|
|
7
|
+
function isAppAlreadyStopped(output) {
|
|
8
|
+
return /not\s+(?:currently\s+)?running|no such process|could not find process/i.test(output);
|
|
9
|
+
}
|
|
7
10
|
export class RuntimeController {
|
|
8
11
|
apple;
|
|
9
12
|
maestro;
|
|
@@ -144,12 +147,12 @@ export class RuntimeController {
|
|
|
144
147
|
throw new ToolOutputError("simctl", result.stderr || `Failed to install ${appPath}`);
|
|
145
148
|
}
|
|
146
149
|
}
|
|
147
|
-
async appLaunch(udid, bundleId) {
|
|
150
|
+
async appLaunch(udid, bundleId, appArgs = []) {
|
|
148
151
|
const installed = await this.apple.isAppInstalled(udid, bundleId);
|
|
149
152
|
if (!installed) {
|
|
150
153
|
throw new AppNotInstalledError(bundleId, udid);
|
|
151
154
|
}
|
|
152
|
-
const result = await this.apple.launchApp(udid, bundleId);
|
|
155
|
+
const result = await this.apple.launchApp(udid, bundleId, appArgs);
|
|
153
156
|
if (result.exitCode !== 0) {
|
|
154
157
|
throw new ToolOutputError("simctl", result.stderr || `Failed to launch ${bundleId}`);
|
|
155
158
|
}
|
|
@@ -158,20 +161,27 @@ export class RuntimeController {
|
|
|
158
161
|
if (force) {
|
|
159
162
|
const result = await this.spawner.run("xcrun", ["simctl", "spawn", udid, "launchctl", "kill", "9", bundleId]);
|
|
160
163
|
if (result.exitCode !== 0) {
|
|
164
|
+
if (isAppAlreadyStopped(result.stderr || result.stdout)) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
161
167
|
throw new ToolOutputError("simctl", result.stderr || `Failed to force-terminate ${bundleId}`);
|
|
162
168
|
}
|
|
163
169
|
return;
|
|
164
170
|
}
|
|
165
|
-
const apps = await this.apple.listRunningApps(udid);
|
|
166
|
-
const running = apps.some((a) => a.bundleId === bundleId);
|
|
167
|
-
if (!running) {
|
|
168
|
-
throw new AppNotRunningError(bundleId, udid);
|
|
169
|
-
}
|
|
170
171
|
const result = await this.apple.terminateApp(udid, bundleId);
|
|
171
172
|
if (result.exitCode !== 0) {
|
|
173
|
+
if (isAppAlreadyStopped(result.stderr || result.stdout)) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
172
176
|
throw new ToolOutputError("simctl", result.stderr || `Failed to terminate ${bundleId}`);
|
|
173
177
|
}
|
|
174
178
|
}
|
|
179
|
+
async appOpenUrl(udid, url) {
|
|
180
|
+
const result = await this.apple.openUrl(udid, url);
|
|
181
|
+
if (result.exitCode !== 0) {
|
|
182
|
+
throw new ToolOutputError("simctl", result.stderr || `Failed to open ${url}`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
175
185
|
async appTerminateAll(udid, force = false) {
|
|
176
186
|
const apps = await this.apple.listRunningApps(udid);
|
|
177
187
|
for (const app of apps) {
|
|
@@ -298,8 +308,8 @@ export class RuntimeController {
|
|
|
298
308
|
throw new ToolOutputError("expo", result.stderr || "Expo prebuild failed");
|
|
299
309
|
}
|
|
300
310
|
}
|
|
301
|
-
async runExpoIos(cwd,
|
|
302
|
-
const result = await this.expo.runIos(cwd,
|
|
311
|
+
async runExpoIos(cwd, options = {}) {
|
|
312
|
+
const result = await this.expo.runIos(cwd, options);
|
|
303
313
|
if (result.exitCode !== 0) {
|
|
304
314
|
throw new ToolOutputError("expo", result.stderr || "Expo iOS run failed");
|
|
305
315
|
}
|
package/dist/spawn.d.ts
CHANGED
|
@@ -9,14 +9,17 @@ export interface ProcessResult {
|
|
|
9
9
|
export interface LineHandler {
|
|
10
10
|
(line: string): void;
|
|
11
11
|
}
|
|
12
|
+
export type ProcessEnv = Readonly<Record<string, string | undefined>>;
|
|
12
13
|
export interface ProcessSpawner {
|
|
13
14
|
run(command: string, args: readonly string[], options?: {
|
|
14
15
|
cwd?: string | undefined;
|
|
16
|
+
env?: ProcessEnv | undefined;
|
|
15
17
|
timeoutMs?: number | undefined;
|
|
16
18
|
maxOutputBytes?: number | undefined;
|
|
17
19
|
}): Promise<ProcessResult>;
|
|
18
20
|
runStream(command: string, args: readonly string[], onLine: LineHandler, options?: {
|
|
19
21
|
cwd?: string | undefined;
|
|
22
|
+
env?: ProcessEnv | undefined;
|
|
20
23
|
timeoutMs?: number | undefined;
|
|
21
24
|
}): Promise<ProcessResult>;
|
|
22
25
|
}
|
package/dist/spawn.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../src/spawn.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,CACD,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC/B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACrC,GACA,OAAO,CAAC,aAAa,CAAC,CAAC;IAE1B,SAAS,CACP,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAChC,GACA,OAAO,CAAC,aAAa,CAAC,CAAC;CAC3B;AAMD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC;CAC3D;AAED,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,EACvC,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,aAAa,CAAC,CAiBxB;AAED,eAAO,MAAM,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../src/spawn.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAEtE,MAAM,WAAW,cAAc;IAC7B,GAAG,CACD,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,GAAG,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC/B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACrC,GACA,OAAO,CAAC,aAAa,CAAC,CAAC;IAE1B,SAAS,CACP,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,GAAG,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAChC,GACA,OAAO,CAAC,aAAa,CAAC,CAAC;CAC3B;AAMD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC;CAC3D;AAED,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,EACvC,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,aAAa,CAAC,CAiBxB;AAED,eAAO,MAAM,cAAc,EAAE,cAiM5B,CAAC"}
|
package/dist/spawn.js
CHANGED
|
@@ -27,6 +27,7 @@ export const defaultSpawner = {
|
|
|
27
27
|
const maxOutputBytes = options.maxOutputBytes ?? DEFAULT_MAX_OUTPUT_BYTES;
|
|
28
28
|
const child = spawn(command, args, {
|
|
29
29
|
cwd: options.cwd,
|
|
30
|
+
env: options.env ? { ...process.env, ...options.env } : process.env,
|
|
30
31
|
shell: false,
|
|
31
32
|
stdio: ["ignore", "pipe", "pipe"]
|
|
32
33
|
});
|
|
@@ -109,6 +110,7 @@ export const defaultSpawner = {
|
|
|
109
110
|
const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
110
111
|
const child = spawn(command, args, {
|
|
111
112
|
cwd: options.cwd,
|
|
113
|
+
env: options.env ? { ...process.env, ...options.env } : process.env,
|
|
112
114
|
shell: false,
|
|
113
115
|
stdio: ["ignore", "pipe", "pipe"]
|
|
114
116
|
});
|
package/package.json
CHANGED