@swmansion/argent 0.24.1-next.13 → 0.24.1-next.15

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 CHANGED
@@ -21857,7 +21857,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
21857
21857
  var SESSION_ID2 = randomUUID5();
21858
21858
  function readCliVersion() {
21859
21859
  if (true) {
21860
- return "0.24.1-next.13";
21860
+ return "0.24.1-next.15";
21861
21861
  }
21862
21862
  return "0.0.0";
21863
21863
  }
@@ -16710,7 +16710,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
16710
16710
  var SESSION_ID = randomUUID4();
16711
16711
  function readCliVersion() {
16712
16712
  if (true) {
16713
- return "0.24.1-next.13";
16713
+ return "0.24.1-next.15";
16714
16714
  }
16715
16715
  return "0.0.0";
16716
16716
  }
@@ -94702,7 +94702,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
94702
94702
  var SESSION_ID = (0, import_node_crypto3.randomUUID)();
94703
94703
  function readCliVersion() {
94704
94704
  if (true) {
94705
- return "0.24.1-next.13";
94705
+ return "0.24.1-next.15";
94706
94706
  }
94707
94707
  return "0.0.0";
94708
94708
  }
@@ -154369,85 +154369,11 @@ function createRunFlowTool(registry2) {
154369
154369
  completedMsg: ({ params }) => `Ran flow ${displayFlowName(params)}`,
154370
154370
  failedMsg: ({ params, failureSignal: failureSignal2 }) => `Failed to run flow ${displayFlowName(params)}: ${failureSignal2.error_code}`
154371
154371
  },
154372
- description: `Run a saved flow from the .argent/flows/ directory, or an explicit boundary-managed flow_path.
154373
- Use when a scenario is already authored as YAML and the whole of it should replay in one call with a
154374
- per-step verdict; reach for the individual gesture tools when nothing is authored yet, and for
154375
- run-sequence when the steps are an ad-hoc list rather than a stored flow.
154376
- Steps run in order: \`launch\` starts an app from scratch (terminate + relaunch) and waits until it is
154377
- ready (on iOS it also pins later element lookups to that app rather than auto-detecting the frontmost
154378
- one); \`tool\` calls dispatch through the registry (a raw \`tool\` step ends that iOS pin, so lookups
154379
- auto-detect again until the next \`launch\`, though a tool that cannot change the foreground app leaves the
154380
- launched id as a fallback for a timed-out auto-detect, and \`launch-app\`/\`restart-app\` leave the id they
154381
- started as that fallback instead); \`tap\`/\`long-press\`/\`type\` resolve a selector to an
154382
- element and act on it (\`tap: { on, times: 2 }\` double-taps; \`long-press: { on, duration }\` presses and
154383
- holds; \`tap\`/\`long-press\` alternatively take a raw normalized point \u2014 bare \`{ x, y }\` or \`on: { x, y }\`;
154384
- any selector may scope its matches geometrically, the CSS combinators read off frames: \`within: <selector>\`
154385
- (descendant \u2014 inside that container's frame), \`after: <selector>\` (CSS \`~\` \u2014 following it in reading
154386
- order), \`next: <selector>\` (CSS \`+\` \u2014 the nearest such follower, which unlike CSS reaches past a
154387
- non-matching neighbour rather than failing), plus \`any: true\` (CSS \`*\` \u2014 legal only WITH a scope and
154388
- never beside text/id/role). Scopes nest to disambiguate \u2014 \`within: { id: card, within: { id: list } }\`
154389
- reads "inside card inside list", each container's frame inside the next);
154390
- \`swipe\` performs one finger flick (\`swipe: left\`, or \`swipe: { from?, direction|to|by, momentum?, duration? }\` \u2014
154391
- direction is the FINGER's travel, the opposite sense of scroll-to's content direction; \`by: { x?, y? }\` \u2014 signed
154392
- 0\u20131 screen fractions, combined length at least 0.03 (a diagonal clears it where neither axis does); duration in ms,
154393
- default 300, minimum 150, maximum 10000; each bound is a parse error that rejects the file before any step runs;
154394
- \`momentum: false\` lands exactly where the finger lifts instead of flinging);
154395
- \`scroll-to\` scrolls (momentum-free) until a target is visible; \`pinch\` zooms
154396
- (\`pinch: { on?, scale }\` \u2014 scale > 1 in, < 1 out; screen center when \`on\` is omitted); \`rotate\` is the
154397
- two-finger rotation gesture (\`rotate: { on?, by }\` \u2014 degrees, + clockwise, within \xB13000\xB0; screen center
154398
- when \`on\` is omitted; distinct from the \`rotate\` tool, which changes device orientation); \`await\` waits
154399
- for a UI condition, and additionally takes the one condition that has no selector: \`idle: true\` waits
154400
- until the screen has content and stops moving in BOTH the UI tree and the rendered pixels (it never
154401
- fails a run \u2014 a screen that never settles passes carrying a \`warning\`, which is what makes it safe to
154402
- persist; the one idle outcome that does stop the run is an \`error\` for a tree source THIS step could not
154403
- read at all \u2014 a broken window rather than a verdict about the app, which leaves the run not-ok and skips
154404
- every later step; it says nothing about WHICH screen settled \u2014 a dropped tap leaves the source screen
154405
- perfectly idle \u2014 so pair it with the element check that names the destination); \`wait\` pauses for a fixed number of milliseconds; \`assert\` checks one now; \`snapshot\`
154406
- diffs a screenshot \u2014 or, with \`cropOn: <selector>\`, one element's cropped region \u2014 against a stored
154407
- baseline (a missing baseline fails the step \u2014 set updateBaselines to adopt the current screen; a
154408
- cropped element whose size drifted fails on dimensions); \`echo\` annotates; \`run\` executes another flow
154409
- inline \u2014 a YAML path resolved against the directory of the flow file that references it (co-located
154410
- runs only); \`script\` runs a local .mjs file in a fresh Node process for setup, cleanup, or any work a device step cannot do
154411
- (\`script: { path: ../../scripts/seed.mjs, timeout?: <ms> }\` \u2014 always a map, never a bare path; the path
154412
- is resolved against the flow file that names the step, exactly as a \`run\` target is, so a saved flow
154413
- climbs out of .argent/flows/ to reach the project's own scripts/ directory. The step needs no device, so
154414
- a script-only flow runs with nothing booted \u2014 but a \`run\` or a \`when\` step beside it still resolves
154415
- one, \`when\` even when the only thing it guards is another script, so a platform-gated seed needs a
154416
- device of that platform. Its stdout and stderr come back on the step report. Co-located runs only.).
154417
- A selector-less gesture \u2014 a coordinate \`tap\`/\`long-press\`/\`swipe\`, or a \`pinch\`/\`rotate\` with no \`on\` \u2014 resolves
154418
- no frame out of the tree, so an unreadable tree source does NOT stop it the way it stops \`idle\`: it
154419
- settles best-effort, dispatches anyway, and the step PASSES carrying a \`warning\` that quotes the source's
154420
- own error. That green says the gesture was SENT, not that it landed. Restore the tree source (usually
154421
- relaunch the app so the instrumentation loads), or accept the warning where the app can serve no tree;
154422
- the first such gesture proves the outage and later ones spend that verdict without paying the settle
154423
- window again. A tree read that comes back, or a relaunch, retires that verdict \u2014 which only makes the
154424
- next gesture pay a fresh window, and it warns again if the source is still down.
154425
- A \`when:\` block (condition + \`steps:\`, no else) runs its steps only if the condition holds \u2014
154426
- checked once with the short assert grace \u2014 for one-sided divergences like interstitials and coach
154427
- marks; a skipped block reports distinctly and failures inside an entered block are real failures.
154428
- A flow is self-contained when its first non-\`echo\`/\`script\` step is \`launch\`; it must not declare
154429
- \`executionPrerequisite\`. Other flows use the device's current state. Device id is injected by the runner (flows store none) \u2014 pass \`device\` or
154430
- \`platform\` to pick one, else the single booted device is used. On Chromium a \`launch\` step's value is an
154431
- Electron app path ({ chromium: <path> | { path, args } }) the runner boots (on the tool-server host) rather
154432
- than an installed app id it relaunches. With no explicit \`device\`, a run whose leading launch is
154433
- unambiguously chromium (\`platform: chromium\`, or a lone \`{ chromium: \u2026 }\` target) boots that app and
154434
- starts there \u2014 following a leading \`run:\`, \`echo:\` or \`script:\`, so a fragment that composes a chromium
154435
- e2e flow boots too, and so does a flow that seeds a backend before it launches;
154436
- otherwise the first launch attaches to an already-running instance and never kills it. Every later
154437
- launch \u2014 a nested e2e flow's own, or a mid-flow relaunch \u2014 boots a fresh instance the run moves onto;
154438
- an instance the run already owns for that same app is killed first (its exit awaited) so the
154439
- replacement can't lose the race against its single-instance lock. Instances the runner still owns at
154440
- run end are torn down then. A launch declaring no id for the run's platform is an error, not a cue to
154441
- switch platforms. Every step hard-stops the flow on failure; later steps are reported as skipped.
154442
- Returns a structured report ({ flow, device, executionPrerequisite, ok, aborted?, passed, failed,
154443
- skipped, errored, steps }) \u2014 \`device\` is the device the run STARTED on; when launches moved it onto
154444
- runner-booted instances, each names its instance in that step's reason and marks the move \u2014 \`run moved
154445
- off <id>\`, or \`retired <id> (same app relaunched)\` when the instance it left was the one killed \u2014
154446
- a relaunch that retired an older owned instance names both.
154447
-
154448
- If a fragment has an execution prerequisite and prerequisiteAcknowledged is not set to true, the tool
154449
- returns a notice with the prerequisite instead of running.
154450
- Pass exactly one flow source: name for a saved flow under project_root, or flow_path for an explicit YAML \u2014 both together, or neither, fails the call.`,
154372
+ description: `Run a saved YAML flow end to end. Use when
154373
+ asked to replay a recorded path, re-run a QA regression, or check that a known journey still passes; for a
154374
+ one-off interaction use the gesture tools instead, and to author a flow use flow-start-recording. Pass
154375
+ exactly one flow source: name (under project_root) or flow_path.
154376
+ Returns a per-step report: the first failure stops the run and the rest report as skipped.`,
154451
154377
  longRunning: true,
154452
154378
  zodSchema: zodSchema66,
154453
154379
  fileInputs: fileInputs3,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swmansion/argent",
3
- "version": "0.24.1-next.13",
3
+ "version": "0.24.1-next.15",
4
4
  "mcpName": "io.github.software-mansion/argent",
5
5
  "description": "MCP server for iOS Simulator and Android Emulator control",
6
6
  "license": "Apache-2.0",
@@ -109,7 +109,7 @@ Scopes can combine and nest, with at most six scope keys. Use strict selectors f
109
109
 
110
110
  ## Directives
111
111
 
112
- Directives stop the flow on failure and skip later steps. `flow-execute` documents their shapes. The available directives are `launch`, `tap`, `long-press`, `swipe`, `type`, `scroll-to`, `pinch`, `rotate`, `await`, `assert`, `wait`, `snapshot`, `run`, `script`, `when`, `echo`, and `tool`.
112
+ Directives stop the flow on failure and skip later steps. The available directives are `launch`, `tap`, `long-press`, `swipe`, `type`, `scroll-to`, `pinch`, `rotate`, `await`, `assert`, `wait`, `snapshot`, `run`, `script`, `when`, `echo`, and `tool`.
113
113
 
114
114
  Use the launch map for cross-platform flows. A bare launch applies everywhere and becomes an app path on Chromium. The map takes `native:`, `ios:`, `android:`, `vega:`, and `chromium:`. `native:` is one id shared by iOS, Android, and Vega, and a per-platform key overrides it for that platform. `chromium:` accepts a relative or absolute app path. A launch that declares no id for the run's platform is an error, not a cue to switch platforms. On iOS, a successful launch also pins later tree reads to that app until the next raw `tool:` step, so read [The runner tree is not the discovery tree](#the-runner-tree-is-not-the-discovery-tree) when a read describes the wrong screen.
115
115