@swmansion/argent 0.32.1-next.1 → 0.32.1-next.10
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/cli-cmds.mjs +46 -6
- package/dist/client.js +12 -0
- package/dist/installer.mjs +13 -1
- package/dist/mcp-server.mjs +12 -0
- package/dist/tool-args.generated.d.ts +9 -4
- package/dist/tool-server.cjs +3327 -2337
- package/package.json +1 -1
- package/skills/argent-create-e2e/references/e2e-yaml.md +4 -0
- package/skills/argent-create-e2e/references/live-authoring.md +1 -0
- package/skills/argent-tv-interact/SKILL.md +4 -4
package/dist/cli-cmds.mjs
CHANGED
|
@@ -10550,15 +10550,21 @@ var FAILURE_CODES = {
|
|
|
10550
10550
|
ANDROID_LAUNCH_AM_START_FAILED: "ANDROID_LAUNCH_AM_START_FAILED",
|
|
10551
10551
|
ANDROID_OPEN_URL_FAILED: "ANDROID_OPEN_URL_FAILED",
|
|
10552
10552
|
ANDROID_REINSTALL_INSTALL_FAILED: "ANDROID_REINSTALL_INSTALL_FAILED",
|
|
10553
|
+
ANDROID_REINSTALL_UNINSTALL_FAILED: "ANDROID_REINSTALL_UNINSTALL_FAILED",
|
|
10553
10554
|
ANDROID_RESTART_FAILED: "ANDROID_RESTART_FAILED",
|
|
10554
10555
|
ANDROID_SETTINGS_PERMISSION_FAILED: "ANDROID_SETTINGS_PERMISSION_FAILED",
|
|
10555
10556
|
IOS_LAUNCH_SIMCTL_FAILED: "IOS_LAUNCH_SIMCTL_FAILED",
|
|
10556
10557
|
IOS_OPEN_URL_FAILED: "IOS_OPEN_URL_FAILED",
|
|
10557
10558
|
IOS_REINSTALL_INSTALL_FAILED: "IOS_REINSTALL_INSTALL_FAILED",
|
|
10559
|
+
IOS_REINSTALL_UNINSTALL_FAILED: "IOS_REINSTALL_UNINSTALL_FAILED",
|
|
10558
10560
|
IOS_RESTART_LAUNCH_FAILED: "IOS_RESTART_LAUNCH_FAILED",
|
|
10561
|
+
IOS_RESTART_TERMINATE_FAILED: "IOS_RESTART_TERMINATE_FAILED",
|
|
10562
|
+
IOS_TERMINATE_APP_FAILED: "IOS_TERMINATE_APP_FAILED",
|
|
10559
10563
|
IOS_SETTINGS_PERMISSION_FAILED: "IOS_SETTINGS_PERMISSION_FAILED",
|
|
10560
10564
|
IOS_SHAKE_FAILED: "IOS_SHAKE_FAILED",
|
|
10561
10565
|
ANDROID_SHAKE_FAILED: "ANDROID_SHAKE_FAILED",
|
|
10566
|
+
STOP_METRO_PORT_PROBE_FAILED: "STOP_METRO_PORT_PROBE_FAILED",
|
|
10567
|
+
STOP_METRO_SIGNAL_FAILED: "STOP_METRO_SIGNAL_FAILED",
|
|
10562
10568
|
// The hinge of a foldable iOS simulator: the server refused the request on a
|
|
10563
10569
|
// foldable (a bad angle, a hinge that would not move) vs. nothing to fold —
|
|
10564
10570
|
// a device that is not foldable, no hinge route, a remote simulator.
|
|
@@ -10704,10 +10710,13 @@ var FAILURE_CODES = {
|
|
|
10704
10710
|
FLOW_NAME_INVALID: "FLOW_NAME_INVALID",
|
|
10705
10711
|
FLOW_NO_ACTIVE_RECORDING: "FLOW_NO_ACTIVE_RECORDING",
|
|
10706
10712
|
FLOW_FILE_INVALID: "FLOW_FILE_INVALID",
|
|
10713
|
+
FLOW_FILE_NEWER_VERSION: "FLOW_FILE_NEWER_VERSION",
|
|
10707
10714
|
FLOW_FILE_WRITE_FAILED: "FLOW_FILE_WRITE_FAILED",
|
|
10708
10715
|
FLOW_ENTRY_UNRECOGNIZED: "FLOW_ENTRY_UNRECOGNIZED",
|
|
10709
10716
|
FLOW_E2E_HAS_PREREQUISITE: "FLOW_E2E_HAS_PREREQUISITE",
|
|
10710
10717
|
FLOW_DEVICE_RESOLUTION: "FLOW_DEVICE_RESOLUTION",
|
|
10718
|
+
// The target does not satisfy the test's `requires:` block; a directory run skips it.
|
|
10719
|
+
FLOW_REQUIREMENTS_UNMET: "FLOW_REQUIREMENTS_UNMET",
|
|
10711
10720
|
PROFILER_QUERY_MODE_INVALID: "PROFILER_QUERY_MODE_INVALID",
|
|
10712
10721
|
PROFILER_QUERY_REQUIRED_PARAM_MISSING: "PROFILER_QUERY_REQUIRED_PARAM_MISSING",
|
|
10713
10722
|
PROFILER_DATA_NOT_LOADED: "PROFILER_DATA_NOT_LOADED",
|
|
@@ -10726,6 +10735,7 @@ var FAILURE_CODES = {
|
|
|
10726
10735
|
CHROMIUM_STORAGE_EVAL_FAILED: "CHROMIUM_STORAGE_EVAL_FAILED",
|
|
10727
10736
|
CHROMIUM_TAB_NOT_FOUND: "CHROMIUM_TAB_NOT_FOUND",
|
|
10728
10737
|
CHROMIUM_TAB_OPEN_FAILED: "CHROMIUM_TAB_OPEN_FAILED",
|
|
10738
|
+
CHROMIUM_NAVIGATE_FAILED: "CHROMIUM_NAVIGATE_FAILED",
|
|
10729
10739
|
CHROMIUM_DESCRIBE_FAILED: "CHROMIUM_DESCRIBE_FAILED",
|
|
10730
10740
|
CHROMIUM_ELECTRON_APP_PATH_INVALID: "CHROMIUM_ELECTRON_APP_PATH_INVALID",
|
|
10731
10741
|
CHROMIUM_ELECTRON_SPAWN_FAILED: "CHROMIUM_ELECTRON_SPAWN_FAILED",
|
|
@@ -10742,6 +10752,8 @@ var FAILURE_CODES = {
|
|
|
10742
10752
|
SCREENSHOT_DIFF_INPUT_INVALID: "SCREENSHOT_DIFF_INPUT_INVALID",
|
|
10743
10753
|
BOOT_DEVICE_TARGET_SELECTION_INVALID: "BOOT_DEVICE_TARGET_SELECTION_INVALID",
|
|
10744
10754
|
BOOT_IOS_UNSUPPORTED_HOST: "BOOT_IOS_UNSUPPORTED_HOST",
|
|
10755
|
+
BOOT_IOS_SIMCTL_LIST_TIMEOUT: "BOOT_IOS_SIMCTL_LIST_TIMEOUT",
|
|
10756
|
+
BOOT_IOS_SIMCTL_TIMEOUT: "BOOT_IOS_SIMCTL_TIMEOUT",
|
|
10745
10757
|
BOOT_ANDROID_NO_AVDS: "BOOT_ANDROID_NO_AVDS",
|
|
10746
10758
|
BOOT_ANDROID_AVD_NOT_FOUND: "BOOT_ANDROID_AVD_NOT_FOUND",
|
|
10747
10759
|
BOOT_ANDROID_ADB_UNAVAILABLE: "BOOT_ANDROID_ADB_UNAVAILABLE",
|
|
@@ -35809,7 +35821,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
|
|
|
35809
35821
|
var SESSION_ID2 = randomUUID5();
|
|
35810
35822
|
function readCliVersion() {
|
|
35811
35823
|
if (true) {
|
|
35812
|
-
return "0.32.1-next.
|
|
35824
|
+
return "0.32.1-next.10";
|
|
35813
35825
|
}
|
|
35814
35826
|
return "0.0.0";
|
|
35815
35827
|
}
|
|
@@ -37150,8 +37162,9 @@ contain only letters, numbers, "_", or "-" \u2014 the same charset a name must
|
|
|
37150
37162
|
match. A test is standalone when its first non-\`echo\`/\`script\` step is \`launch\`.
|
|
37151
37163
|
Other tests are fragments and use the device's current state. Exception: a fragment whose first step \`run:\`s a chromium standalone
|
|
37152
37164
|
test boots that test's app before step 1 \u2014 when that launch is unambiguously
|
|
37153
|
-
chromium (a lone \`{ chromium: ... }\` target,
|
|
37154
|
-
|
|
37165
|
+
chromium (a lone \`{ chromium: ... }\` target, --platform chromium, or a
|
|
37166
|
+
\`requires:\` block that allows only chromium); a multi-platform launch
|
|
37167
|
+
auto-detects a device instead. Pass --device to attach to
|
|
37155
37168
|
a running instance.
|
|
37156
37169
|
|
|
37157
37170
|
A directory run prints only the steps that need attention (each failure, each
|
|
@@ -37164,6 +37177,12 @@ file, or a device it cannot resolve. A transport failure, a rejection the server
|
|
|
37164
37177
|
does not mark as validation, or a reply that is not a report stops the batch and
|
|
37165
37178
|
counts the remaining tests skipped.
|
|
37166
37179
|
|
|
37180
|
+
A test can declare a \`requires:\` block (platform, runtimeKind) that names the
|
|
37181
|
+
targets it supports. A directory run skips each test whose requirements the
|
|
37182
|
+
target does not meet, so the same directory runs on each platform without a
|
|
37183
|
+
separate list of tests. A single-test run fails instead. A directory run where
|
|
37184
|
+
no test ran exits 2.
|
|
37185
|
+
|
|
37167
37186
|
The CLI sends a run to its tool-server: the local one that starts
|
|
37168
37187
|
automatically, or the one that \`argent link\` or ARGENT_TOOLS_URL names. Over
|
|
37169
37188
|
a link, the CLI uploads these files and writes the new baselines that the run
|
|
@@ -37346,7 +37365,8 @@ function renderFailedSteps(report) {
|
|
|
37346
37365
|
return lines;
|
|
37347
37366
|
}
|
|
37348
37367
|
function renderBatchSummary(counts, durationMs) {
|
|
37349
|
-
|
|
37368
|
+
const verdict = counts.failed > 0 ? "FAIL" : counts.passed === 0 ? "NONE RAN" : "PASS";
|
|
37369
|
+
return `${verdict} \u2014 ${counts.total} e2e test${counts.total === 1 ? "" : "s"}: ${counts.passed} passed, ${counts.failed} failed, ${counts.skipped} skipped${durationSuffix(durationMs)}`;
|
|
37350
37370
|
}
|
|
37351
37371
|
function summarizeFailure(report) {
|
|
37352
37372
|
let n3 = 0;
|
|
@@ -37732,8 +37752,12 @@ function rejectionVerdict(code) {
|
|
|
37732
37752
|
case FAILURE_CODES.FLOW_ENTRY_UNRECOGNIZED:
|
|
37733
37753
|
case FAILURE_CODES.FLOW_E2E_HAS_PREREQUISITE:
|
|
37734
37754
|
return "not run (invalid e2e test)";
|
|
37755
|
+
case FAILURE_CODES.FLOW_FILE_NEWER_VERSION:
|
|
37756
|
+
return "not run (needs a newer Argent)";
|
|
37735
37757
|
case FAILURE_CODES.FLOW_DEVICE_RESOLUTION:
|
|
37736
37758
|
return "not run (no device resolved)";
|
|
37759
|
+
case FAILURE_CODES.FLOW_REQUIREMENTS_UNMET:
|
|
37760
|
+
return "not run (requires not met)";
|
|
37737
37761
|
case FAILURE_CODES.FILE_INPUT_UPLOAD_FAILED:
|
|
37738
37762
|
return "not run (upload failed)";
|
|
37739
37763
|
default:
|
|
@@ -37810,6 +37834,14 @@ async function runFlowDirectory(dir, args, projectRoot, options) {
|
|
|
37810
37834
|
const err = unreachableErr ?? thrown;
|
|
37811
37835
|
const message = err instanceof Error ? err.message : String(err);
|
|
37812
37836
|
const toolErr = err instanceof ToolInvocationError ? err : void 0;
|
|
37837
|
+
if (toolErr?.errorCode === FAILURE_CODES.FLOW_REQUIREMENTS_UNMET) {
|
|
37838
|
+
const reason = message.replace(/^\[Tool:[^\]]+\] /, "");
|
|
37839
|
+
results.push({ path: rel, status: "skip", reason });
|
|
37840
|
+
if (!args.json)
|
|
37841
|
+
console.log(` ${STATUS_GLYPH.skip} skipped (requires not met)
|
|
37842
|
+
${reason}`);
|
|
37843
|
+
continue;
|
|
37844
|
+
}
|
|
37813
37845
|
const rejectedThisFlowOnly = toolErr?.errorKind === "validation";
|
|
37814
37846
|
const verdict = unreachableErr ? UNREACHABLE_VERDICT : rejectedThisFlowOnly ? rejectionVerdict(toolErr?.errorCode) : "did not finish (run error)";
|
|
37815
37847
|
if (!args.json) console.log(` ${STATUS_GLYPH.error} ${verdict}`);
|
|
@@ -37860,11 +37892,18 @@ async function runFlowDirectory(dir, args, projectRoot, options) {
|
|
|
37860
37892
|
skipped: results.filter((r2) => r2.status === "skip").length
|
|
37861
37893
|
};
|
|
37862
37894
|
const durationMs = Date.now() - batchStartedAt;
|
|
37895
|
+
const noneRan = counts.passed === 0 && counts.failed === 0;
|
|
37863
37896
|
if (args.json) {
|
|
37864
37897
|
console.log(
|
|
37865
37898
|
JSON.stringify(
|
|
37866
37899
|
// `flows` is the deprecated spelling of `e2eTests`.
|
|
37867
|
-
{
|
|
37900
|
+
{
|
|
37901
|
+
ok: counts.failed === 0 && !noneRan,
|
|
37902
|
+
...counts,
|
|
37903
|
+
durationMs,
|
|
37904
|
+
e2eTests: results,
|
|
37905
|
+
flows: results
|
|
37906
|
+
},
|
|
37868
37907
|
null,
|
|
37869
37908
|
2
|
|
37870
37909
|
)
|
|
@@ -37873,8 +37912,9 @@ async function runFlowDirectory(dir, args, projectRoot, options) {
|
|
|
37873
37912
|
for (const line of renderFailedFlows(failures)) console.log(line);
|
|
37874
37913
|
console.log(`
|
|
37875
37914
|
${renderBatchSummary(counts, durationMs)}`);
|
|
37915
|
+
if (noneRan) console.error(`No e2e test in ${dir} ran on the selected target.`);
|
|
37876
37916
|
}
|
|
37877
|
-
return exitAfterFlush(unreachable ? 2 : counts.failed === 0 ? 0 : 1);
|
|
37917
|
+
return exitAfterFlush(unreachable || noneRan ? 2 : counts.failed === 0 ? 0 : 1);
|
|
37878
37918
|
}
|
|
37879
37919
|
async function e2e(argv, options) {
|
|
37880
37920
|
const [sub, ...rest] = argv;
|
package/dist/client.js
CHANGED
|
@@ -9123,15 +9123,21 @@ var FAILURE_CODES = {
|
|
|
9123
9123
|
ANDROID_LAUNCH_AM_START_FAILED: "ANDROID_LAUNCH_AM_START_FAILED",
|
|
9124
9124
|
ANDROID_OPEN_URL_FAILED: "ANDROID_OPEN_URL_FAILED",
|
|
9125
9125
|
ANDROID_REINSTALL_INSTALL_FAILED: "ANDROID_REINSTALL_INSTALL_FAILED",
|
|
9126
|
+
ANDROID_REINSTALL_UNINSTALL_FAILED: "ANDROID_REINSTALL_UNINSTALL_FAILED",
|
|
9126
9127
|
ANDROID_RESTART_FAILED: "ANDROID_RESTART_FAILED",
|
|
9127
9128
|
ANDROID_SETTINGS_PERMISSION_FAILED: "ANDROID_SETTINGS_PERMISSION_FAILED",
|
|
9128
9129
|
IOS_LAUNCH_SIMCTL_FAILED: "IOS_LAUNCH_SIMCTL_FAILED",
|
|
9129
9130
|
IOS_OPEN_URL_FAILED: "IOS_OPEN_URL_FAILED",
|
|
9130
9131
|
IOS_REINSTALL_INSTALL_FAILED: "IOS_REINSTALL_INSTALL_FAILED",
|
|
9132
|
+
IOS_REINSTALL_UNINSTALL_FAILED: "IOS_REINSTALL_UNINSTALL_FAILED",
|
|
9131
9133
|
IOS_RESTART_LAUNCH_FAILED: "IOS_RESTART_LAUNCH_FAILED",
|
|
9134
|
+
IOS_RESTART_TERMINATE_FAILED: "IOS_RESTART_TERMINATE_FAILED",
|
|
9135
|
+
IOS_TERMINATE_APP_FAILED: "IOS_TERMINATE_APP_FAILED",
|
|
9132
9136
|
IOS_SETTINGS_PERMISSION_FAILED: "IOS_SETTINGS_PERMISSION_FAILED",
|
|
9133
9137
|
IOS_SHAKE_FAILED: "IOS_SHAKE_FAILED",
|
|
9134
9138
|
ANDROID_SHAKE_FAILED: "ANDROID_SHAKE_FAILED",
|
|
9139
|
+
STOP_METRO_PORT_PROBE_FAILED: "STOP_METRO_PORT_PROBE_FAILED",
|
|
9140
|
+
STOP_METRO_SIGNAL_FAILED: "STOP_METRO_SIGNAL_FAILED",
|
|
9135
9141
|
// The hinge of a foldable iOS simulator: the server refused the request on a
|
|
9136
9142
|
// foldable (a bad angle, a hinge that would not move) vs. nothing to fold —
|
|
9137
9143
|
// a device that is not foldable, no hinge route, a remote simulator.
|
|
@@ -9277,10 +9283,13 @@ var FAILURE_CODES = {
|
|
|
9277
9283
|
FLOW_NAME_INVALID: "FLOW_NAME_INVALID",
|
|
9278
9284
|
FLOW_NO_ACTIVE_RECORDING: "FLOW_NO_ACTIVE_RECORDING",
|
|
9279
9285
|
FLOW_FILE_INVALID: "FLOW_FILE_INVALID",
|
|
9286
|
+
FLOW_FILE_NEWER_VERSION: "FLOW_FILE_NEWER_VERSION",
|
|
9280
9287
|
FLOW_FILE_WRITE_FAILED: "FLOW_FILE_WRITE_FAILED",
|
|
9281
9288
|
FLOW_ENTRY_UNRECOGNIZED: "FLOW_ENTRY_UNRECOGNIZED",
|
|
9282
9289
|
FLOW_E2E_HAS_PREREQUISITE: "FLOW_E2E_HAS_PREREQUISITE",
|
|
9283
9290
|
FLOW_DEVICE_RESOLUTION: "FLOW_DEVICE_RESOLUTION",
|
|
9291
|
+
// The target does not satisfy the test's `requires:` block; a directory run skips it.
|
|
9292
|
+
FLOW_REQUIREMENTS_UNMET: "FLOW_REQUIREMENTS_UNMET",
|
|
9284
9293
|
PROFILER_QUERY_MODE_INVALID: "PROFILER_QUERY_MODE_INVALID",
|
|
9285
9294
|
PROFILER_QUERY_REQUIRED_PARAM_MISSING: "PROFILER_QUERY_REQUIRED_PARAM_MISSING",
|
|
9286
9295
|
PROFILER_DATA_NOT_LOADED: "PROFILER_DATA_NOT_LOADED",
|
|
@@ -9299,6 +9308,7 @@ var FAILURE_CODES = {
|
|
|
9299
9308
|
CHROMIUM_STORAGE_EVAL_FAILED: "CHROMIUM_STORAGE_EVAL_FAILED",
|
|
9300
9309
|
CHROMIUM_TAB_NOT_FOUND: "CHROMIUM_TAB_NOT_FOUND",
|
|
9301
9310
|
CHROMIUM_TAB_OPEN_FAILED: "CHROMIUM_TAB_OPEN_FAILED",
|
|
9311
|
+
CHROMIUM_NAVIGATE_FAILED: "CHROMIUM_NAVIGATE_FAILED",
|
|
9302
9312
|
CHROMIUM_DESCRIBE_FAILED: "CHROMIUM_DESCRIBE_FAILED",
|
|
9303
9313
|
CHROMIUM_ELECTRON_APP_PATH_INVALID: "CHROMIUM_ELECTRON_APP_PATH_INVALID",
|
|
9304
9314
|
CHROMIUM_ELECTRON_SPAWN_FAILED: "CHROMIUM_ELECTRON_SPAWN_FAILED",
|
|
@@ -9315,6 +9325,8 @@ var FAILURE_CODES = {
|
|
|
9315
9325
|
SCREENSHOT_DIFF_INPUT_INVALID: "SCREENSHOT_DIFF_INPUT_INVALID",
|
|
9316
9326
|
BOOT_DEVICE_TARGET_SELECTION_INVALID: "BOOT_DEVICE_TARGET_SELECTION_INVALID",
|
|
9317
9327
|
BOOT_IOS_UNSUPPORTED_HOST: "BOOT_IOS_UNSUPPORTED_HOST",
|
|
9328
|
+
BOOT_IOS_SIMCTL_LIST_TIMEOUT: "BOOT_IOS_SIMCTL_LIST_TIMEOUT",
|
|
9329
|
+
BOOT_IOS_SIMCTL_TIMEOUT: "BOOT_IOS_SIMCTL_TIMEOUT",
|
|
9318
9330
|
BOOT_ANDROID_NO_AVDS: "BOOT_ANDROID_NO_AVDS",
|
|
9319
9331
|
BOOT_ANDROID_AVD_NOT_FOUND: "BOOT_ANDROID_AVD_NOT_FOUND",
|
|
9320
9332
|
BOOT_ANDROID_ADB_UNAVAILABLE: "BOOT_ANDROID_ADB_UNAVAILABLE",
|
package/dist/installer.mjs
CHANGED
|
@@ -15887,15 +15887,21 @@ var FAILURE_CODES = {
|
|
|
15887
15887
|
ANDROID_LAUNCH_AM_START_FAILED: "ANDROID_LAUNCH_AM_START_FAILED",
|
|
15888
15888
|
ANDROID_OPEN_URL_FAILED: "ANDROID_OPEN_URL_FAILED",
|
|
15889
15889
|
ANDROID_REINSTALL_INSTALL_FAILED: "ANDROID_REINSTALL_INSTALL_FAILED",
|
|
15890
|
+
ANDROID_REINSTALL_UNINSTALL_FAILED: "ANDROID_REINSTALL_UNINSTALL_FAILED",
|
|
15890
15891
|
ANDROID_RESTART_FAILED: "ANDROID_RESTART_FAILED",
|
|
15891
15892
|
ANDROID_SETTINGS_PERMISSION_FAILED: "ANDROID_SETTINGS_PERMISSION_FAILED",
|
|
15892
15893
|
IOS_LAUNCH_SIMCTL_FAILED: "IOS_LAUNCH_SIMCTL_FAILED",
|
|
15893
15894
|
IOS_OPEN_URL_FAILED: "IOS_OPEN_URL_FAILED",
|
|
15894
15895
|
IOS_REINSTALL_INSTALL_FAILED: "IOS_REINSTALL_INSTALL_FAILED",
|
|
15896
|
+
IOS_REINSTALL_UNINSTALL_FAILED: "IOS_REINSTALL_UNINSTALL_FAILED",
|
|
15895
15897
|
IOS_RESTART_LAUNCH_FAILED: "IOS_RESTART_LAUNCH_FAILED",
|
|
15898
|
+
IOS_RESTART_TERMINATE_FAILED: "IOS_RESTART_TERMINATE_FAILED",
|
|
15899
|
+
IOS_TERMINATE_APP_FAILED: "IOS_TERMINATE_APP_FAILED",
|
|
15896
15900
|
IOS_SETTINGS_PERMISSION_FAILED: "IOS_SETTINGS_PERMISSION_FAILED",
|
|
15897
15901
|
IOS_SHAKE_FAILED: "IOS_SHAKE_FAILED",
|
|
15898
15902
|
ANDROID_SHAKE_FAILED: "ANDROID_SHAKE_FAILED",
|
|
15903
|
+
STOP_METRO_PORT_PROBE_FAILED: "STOP_METRO_PORT_PROBE_FAILED",
|
|
15904
|
+
STOP_METRO_SIGNAL_FAILED: "STOP_METRO_SIGNAL_FAILED",
|
|
15899
15905
|
// The hinge of a foldable iOS simulator: the server refused the request on a
|
|
15900
15906
|
// foldable (a bad angle, a hinge that would not move) vs. nothing to fold —
|
|
15901
15907
|
// a device that is not foldable, no hinge route, a remote simulator.
|
|
@@ -16041,10 +16047,13 @@ var FAILURE_CODES = {
|
|
|
16041
16047
|
FLOW_NAME_INVALID: "FLOW_NAME_INVALID",
|
|
16042
16048
|
FLOW_NO_ACTIVE_RECORDING: "FLOW_NO_ACTIVE_RECORDING",
|
|
16043
16049
|
FLOW_FILE_INVALID: "FLOW_FILE_INVALID",
|
|
16050
|
+
FLOW_FILE_NEWER_VERSION: "FLOW_FILE_NEWER_VERSION",
|
|
16044
16051
|
FLOW_FILE_WRITE_FAILED: "FLOW_FILE_WRITE_FAILED",
|
|
16045
16052
|
FLOW_ENTRY_UNRECOGNIZED: "FLOW_ENTRY_UNRECOGNIZED",
|
|
16046
16053
|
FLOW_E2E_HAS_PREREQUISITE: "FLOW_E2E_HAS_PREREQUISITE",
|
|
16047
16054
|
FLOW_DEVICE_RESOLUTION: "FLOW_DEVICE_RESOLUTION",
|
|
16055
|
+
// The target does not satisfy the test's `requires:` block; a directory run skips it.
|
|
16056
|
+
FLOW_REQUIREMENTS_UNMET: "FLOW_REQUIREMENTS_UNMET",
|
|
16048
16057
|
PROFILER_QUERY_MODE_INVALID: "PROFILER_QUERY_MODE_INVALID",
|
|
16049
16058
|
PROFILER_QUERY_REQUIRED_PARAM_MISSING: "PROFILER_QUERY_REQUIRED_PARAM_MISSING",
|
|
16050
16059
|
PROFILER_DATA_NOT_LOADED: "PROFILER_DATA_NOT_LOADED",
|
|
@@ -16063,6 +16072,7 @@ var FAILURE_CODES = {
|
|
|
16063
16072
|
CHROMIUM_STORAGE_EVAL_FAILED: "CHROMIUM_STORAGE_EVAL_FAILED",
|
|
16064
16073
|
CHROMIUM_TAB_NOT_FOUND: "CHROMIUM_TAB_NOT_FOUND",
|
|
16065
16074
|
CHROMIUM_TAB_OPEN_FAILED: "CHROMIUM_TAB_OPEN_FAILED",
|
|
16075
|
+
CHROMIUM_NAVIGATE_FAILED: "CHROMIUM_NAVIGATE_FAILED",
|
|
16066
16076
|
CHROMIUM_DESCRIBE_FAILED: "CHROMIUM_DESCRIBE_FAILED",
|
|
16067
16077
|
CHROMIUM_ELECTRON_APP_PATH_INVALID: "CHROMIUM_ELECTRON_APP_PATH_INVALID",
|
|
16068
16078
|
CHROMIUM_ELECTRON_SPAWN_FAILED: "CHROMIUM_ELECTRON_SPAWN_FAILED",
|
|
@@ -16079,6 +16089,8 @@ var FAILURE_CODES = {
|
|
|
16079
16089
|
SCREENSHOT_DIFF_INPUT_INVALID: "SCREENSHOT_DIFF_INPUT_INVALID",
|
|
16080
16090
|
BOOT_DEVICE_TARGET_SELECTION_INVALID: "BOOT_DEVICE_TARGET_SELECTION_INVALID",
|
|
16081
16091
|
BOOT_IOS_UNSUPPORTED_HOST: "BOOT_IOS_UNSUPPORTED_HOST",
|
|
16092
|
+
BOOT_IOS_SIMCTL_LIST_TIMEOUT: "BOOT_IOS_SIMCTL_LIST_TIMEOUT",
|
|
16093
|
+
BOOT_IOS_SIMCTL_TIMEOUT: "BOOT_IOS_SIMCTL_TIMEOUT",
|
|
16082
16094
|
BOOT_ANDROID_NO_AVDS: "BOOT_ANDROID_NO_AVDS",
|
|
16083
16095
|
BOOT_ANDROID_AVD_NOT_FOUND: "BOOT_ANDROID_AVD_NOT_FOUND",
|
|
16084
16096
|
BOOT_ANDROID_ADB_UNAVAILABLE: "BOOT_ANDROID_ADB_UNAVAILABLE",
|
|
@@ -16934,7 +16946,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
|
|
|
16934
16946
|
var SESSION_ID = randomUUID4();
|
|
16935
16947
|
function readCliVersion() {
|
|
16936
16948
|
if (true) {
|
|
16937
|
-
return "0.32.1-next.
|
|
16949
|
+
return "0.32.1-next.10";
|
|
16938
16950
|
}
|
|
16939
16951
|
return "0.0.0";
|
|
16940
16952
|
}
|
package/dist/mcp-server.mjs
CHANGED
|
@@ -25833,15 +25833,21 @@ var FAILURE_CODES = {
|
|
|
25833
25833
|
ANDROID_LAUNCH_AM_START_FAILED: "ANDROID_LAUNCH_AM_START_FAILED",
|
|
25834
25834
|
ANDROID_OPEN_URL_FAILED: "ANDROID_OPEN_URL_FAILED",
|
|
25835
25835
|
ANDROID_REINSTALL_INSTALL_FAILED: "ANDROID_REINSTALL_INSTALL_FAILED",
|
|
25836
|
+
ANDROID_REINSTALL_UNINSTALL_FAILED: "ANDROID_REINSTALL_UNINSTALL_FAILED",
|
|
25836
25837
|
ANDROID_RESTART_FAILED: "ANDROID_RESTART_FAILED",
|
|
25837
25838
|
ANDROID_SETTINGS_PERMISSION_FAILED: "ANDROID_SETTINGS_PERMISSION_FAILED",
|
|
25838
25839
|
IOS_LAUNCH_SIMCTL_FAILED: "IOS_LAUNCH_SIMCTL_FAILED",
|
|
25839
25840
|
IOS_OPEN_URL_FAILED: "IOS_OPEN_URL_FAILED",
|
|
25840
25841
|
IOS_REINSTALL_INSTALL_FAILED: "IOS_REINSTALL_INSTALL_FAILED",
|
|
25842
|
+
IOS_REINSTALL_UNINSTALL_FAILED: "IOS_REINSTALL_UNINSTALL_FAILED",
|
|
25841
25843
|
IOS_RESTART_LAUNCH_FAILED: "IOS_RESTART_LAUNCH_FAILED",
|
|
25844
|
+
IOS_RESTART_TERMINATE_FAILED: "IOS_RESTART_TERMINATE_FAILED",
|
|
25845
|
+
IOS_TERMINATE_APP_FAILED: "IOS_TERMINATE_APP_FAILED",
|
|
25842
25846
|
IOS_SETTINGS_PERMISSION_FAILED: "IOS_SETTINGS_PERMISSION_FAILED",
|
|
25843
25847
|
IOS_SHAKE_FAILED: "IOS_SHAKE_FAILED",
|
|
25844
25848
|
ANDROID_SHAKE_FAILED: "ANDROID_SHAKE_FAILED",
|
|
25849
|
+
STOP_METRO_PORT_PROBE_FAILED: "STOP_METRO_PORT_PROBE_FAILED",
|
|
25850
|
+
STOP_METRO_SIGNAL_FAILED: "STOP_METRO_SIGNAL_FAILED",
|
|
25845
25851
|
// The hinge of a foldable iOS simulator: the server refused the request on a
|
|
25846
25852
|
// foldable (a bad angle, a hinge that would not move) vs. nothing to fold —
|
|
25847
25853
|
// a device that is not foldable, no hinge route, a remote simulator.
|
|
@@ -25987,10 +25993,13 @@ var FAILURE_CODES = {
|
|
|
25987
25993
|
FLOW_NAME_INVALID: "FLOW_NAME_INVALID",
|
|
25988
25994
|
FLOW_NO_ACTIVE_RECORDING: "FLOW_NO_ACTIVE_RECORDING",
|
|
25989
25995
|
FLOW_FILE_INVALID: "FLOW_FILE_INVALID",
|
|
25996
|
+
FLOW_FILE_NEWER_VERSION: "FLOW_FILE_NEWER_VERSION",
|
|
25990
25997
|
FLOW_FILE_WRITE_FAILED: "FLOW_FILE_WRITE_FAILED",
|
|
25991
25998
|
FLOW_ENTRY_UNRECOGNIZED: "FLOW_ENTRY_UNRECOGNIZED",
|
|
25992
25999
|
FLOW_E2E_HAS_PREREQUISITE: "FLOW_E2E_HAS_PREREQUISITE",
|
|
25993
26000
|
FLOW_DEVICE_RESOLUTION: "FLOW_DEVICE_RESOLUTION",
|
|
26001
|
+
// The target does not satisfy the test's `requires:` block; a directory run skips it.
|
|
26002
|
+
FLOW_REQUIREMENTS_UNMET: "FLOW_REQUIREMENTS_UNMET",
|
|
25994
26003
|
PROFILER_QUERY_MODE_INVALID: "PROFILER_QUERY_MODE_INVALID",
|
|
25995
26004
|
PROFILER_QUERY_REQUIRED_PARAM_MISSING: "PROFILER_QUERY_REQUIRED_PARAM_MISSING",
|
|
25996
26005
|
PROFILER_DATA_NOT_LOADED: "PROFILER_DATA_NOT_LOADED",
|
|
@@ -26009,6 +26018,7 @@ var FAILURE_CODES = {
|
|
|
26009
26018
|
CHROMIUM_STORAGE_EVAL_FAILED: "CHROMIUM_STORAGE_EVAL_FAILED",
|
|
26010
26019
|
CHROMIUM_TAB_NOT_FOUND: "CHROMIUM_TAB_NOT_FOUND",
|
|
26011
26020
|
CHROMIUM_TAB_OPEN_FAILED: "CHROMIUM_TAB_OPEN_FAILED",
|
|
26021
|
+
CHROMIUM_NAVIGATE_FAILED: "CHROMIUM_NAVIGATE_FAILED",
|
|
26012
26022
|
CHROMIUM_DESCRIBE_FAILED: "CHROMIUM_DESCRIBE_FAILED",
|
|
26013
26023
|
CHROMIUM_ELECTRON_APP_PATH_INVALID: "CHROMIUM_ELECTRON_APP_PATH_INVALID",
|
|
26014
26024
|
CHROMIUM_ELECTRON_SPAWN_FAILED: "CHROMIUM_ELECTRON_SPAWN_FAILED",
|
|
@@ -26025,6 +26035,8 @@ var FAILURE_CODES = {
|
|
|
26025
26035
|
SCREENSHOT_DIFF_INPUT_INVALID: "SCREENSHOT_DIFF_INPUT_INVALID",
|
|
26026
26036
|
BOOT_DEVICE_TARGET_SELECTION_INVALID: "BOOT_DEVICE_TARGET_SELECTION_INVALID",
|
|
26027
26037
|
BOOT_IOS_UNSUPPORTED_HOST: "BOOT_IOS_UNSUPPORTED_HOST",
|
|
26038
|
+
BOOT_IOS_SIMCTL_LIST_TIMEOUT: "BOOT_IOS_SIMCTL_LIST_TIMEOUT",
|
|
26039
|
+
BOOT_IOS_SIMCTL_TIMEOUT: "BOOT_IOS_SIMCTL_TIMEOUT",
|
|
26028
26040
|
BOOT_ANDROID_NO_AVDS: "BOOT_ANDROID_NO_AVDS",
|
|
26029
26041
|
BOOT_ANDROID_AVD_NOT_FOUND: "BOOT_ANDROID_AVD_NOT_FOUND",
|
|
26030
26042
|
BOOT_ANDROID_ADB_UNAVAILABLE: "BOOT_ANDROID_ADB_UNAVAILABLE",
|
|
@@ -10,7 +10,7 @@ export interface ArgentToolArgs {
|
|
|
10
10
|
minStableMs?: number;
|
|
11
11
|
};
|
|
12
12
|
"await-ui-element": {
|
|
13
|
-
/** Target device id from `list-devices` (iOS UDID, Android serial, Vega serial, HarmonyOS id, or Chromium id
|
|
13
|
+
/** Target device id from `list-devices` (iOS UDID, Android serial, Vega serial, HarmonyOS id, or Chromium id). */
|
|
14
14
|
udid: string;
|
|
15
15
|
/** What to wait for. `exists`: the selector matches an element anywhere in the tree. `visible`: it matches one with a non-zero on-screen frame. `hidden`: it matches nothing, or only a zero-area element (e.g. a spinner that went away). `text`: the first visible match in reading order (topmost, then leftmost; the first match overall if none is visible) contains expectedText, or equals it with textMatch `equals`. Only that match is checked, so if a loose selector hits several elements, narrow it to the one holding the text. */
|
|
16
16
|
condition: "exists" | "visible" | "hidden" | "text";
|
|
@@ -231,9 +231,9 @@ export interface ArgentToolArgs {
|
|
|
231
231
|
e2e_test_file?: string;
|
|
232
232
|
/** Absolute path to an e2e test .yaml on the client. */
|
|
233
233
|
e2e_test_path?: string;
|
|
234
|
-
/** Device id to run against (iOS UDID, Android/Vega serial, Chromium id), as list-devices reports it. Auto-detected when omitted, but only when exactly one booted device matches; with several booted the run fails and lists them, so pass this explicitly whenever more than one device is up. */
|
|
234
|
+
/** Device id to run against (iOS UDID, Android/Vega serial, Chromium id), as list-devices reports it. Auto-detected when omitted, but only when exactly one booted device matches (optionally narrowed by `platform` and the e2e test's `requires:` block); with several booted the run fails and lists them, so pass this explicitly whenever more than one device is up. */
|
|
235
235
|
device?: string;
|
|
236
|
-
/** Restrict auto-detection to this platform when several devices are booted. `ios` selects local simulators only; `ios-remote` selects a remote one. `chromium` with no `device` also makes the runner boot an Electron instance for a standalone e2e test from its `launch` step's chromium value and tear it down after the run, with no fallback to auto-detection (a single-key `launch: { chromium: … }` map does this on its own; a fragment, or a launch map without a `chromium` key, is still auto-detected). That value must be an Electron app path on the tool-server host: the bare-string `launch:` the recorder writes holds a bundle id, which fails the run with `Electron boot: path does not exist`, so first edit it to `{ chromium: <app path> }`. */
|
|
236
|
+
/** Restrict auto-detection to this platform when several devices are booted. `ios` selects local simulators only; `ios-remote` selects a remote one. `chromium` with no `device` also makes the runner boot an Electron instance for a standalone e2e test from its `launch` step's chromium value and tear it down after the run, with no fallback to auto-detection (a single-key `launch: { chromium: … }` map, or a `requires:` block that allows only chromium, does this on its own; a fragment, or a launch map without a `chromium` key, is still auto-detected). That value must be an Electron app path on the tool-server host: the bare-string `launch:` the recorder writes holds a bundle id, which fails the run with `Electron boot: path does not exist`, so first edit it to `{ chromium: <app path> }`. */
|
|
237
237
|
platform?: "ios" | "android" | "chromium" | "vega" | "ios-remote";
|
|
238
238
|
/** Write/refresh screenshot baselines for `snapshot` steps instead of diffing against them, also in the e2e tests that tool: e2e-execute steps run, unless such a step sets updateBaselines itself. Over a link, the client writes the new baselines when the run ends. */
|
|
239
239
|
updateBaselines?: boolean;
|
|
@@ -271,6 +271,11 @@ export interface ArgentToolArgs {
|
|
|
271
271
|
project_root: string;
|
|
272
272
|
/** Fragments only: the app/device state assumed on entry (e.g. "Settings app open on General page"). Omit it for a standalone e2e test. restart-app has no chromium support, so a chromium e2e test records as a fragment; add the `launch: { chromium: <app path> }` line to the YAML afterward, deleting the executionPrerequisite line if you passed one, since an e2e test that starts with a launch must not declare it. */
|
|
273
273
|
executionPrerequisite?: string;
|
|
274
|
+
/** The e2e test's `requires:` block: the targets it supports, ANDed. `platform` is one platform or a list (`ios` also covers a remote simulator); `runtimeKind` is `tv` or `mobile`. Omit it for a test that runs on any target. */
|
|
275
|
+
requires?: {
|
|
276
|
+
platform?: "ios" | "android" | "chromium" | "vega" | Array<"ios" | "android" | "chromium" | "vega">;
|
|
277
|
+
runtimeKind?: "mobile" | "tv";
|
|
278
|
+
};
|
|
274
279
|
};
|
|
275
280
|
fill: {
|
|
276
281
|
/** Target device id from `list-devices`. */
|
|
@@ -428,7 +433,7 @@ export interface ArgentToolArgs {
|
|
|
428
433
|
bundleId: string;
|
|
429
434
|
/** Android-only: fully-qualified Activity name (e.g. `.MainActivity` or `com.example/com.example.MainActivity`). If omitted, the app's default launcher activity is used. */
|
|
430
435
|
activity?: string;
|
|
431
|
-
/** Apple simulators and physical iPhones: arguments passed to the app process at launch, e.g. `["-FeatureFlag", "YES"]` to override UserDefaults. A running app is relaunched to apply them. */
|
|
436
|
+
/** Apple simulators and physical iPhones: arguments passed to the app process at launch, e.g. `["-FeatureFlag", "YES"]` to override UserDefaults. A running app is relaunched to apply them. The call fails, launching nothing, if terminating it does not finish within 15s on a local iOS simulator, or fails for a reason other than the app not running on a remote one. */
|
|
432
437
|
launchArgs?: Array<string>;
|
|
433
438
|
};
|
|
434
439
|
"list-devices": Record<string, never>;
|