Running
Command line
Run a flow or a whole view headlessly, feed it the environment variables, and wire it into a CI/CD pipeline.
npm install -g ronsel
ronsel --server [--context <folder>]
ronsel --file <flow.md> --env <environment>
ronsel --view <view> --env <environment> [--folder <folder>]
ronsel --import-env <env.yaml> [--view <view> --env <environment>] [--dry-run]
ronsel --capabilities
ronsel --agent --agent-id <name> [--broker <url> --username <user> --password <secret>]
ronsel --remote <agent> --file <flow.md> --env <environment>
| Flag | What it does |
|---|---|
--context |
The context folder. Defaults to ~/ronsel (or ~/lab34-flows, from before the rename, while it is the only one). Every other path is resolved against it. |
--server |
Start the web UI on http://localhost:3001. |
--file |
Run one flow. The path is relative to the context: flows/checkout/refund.md. |
--view |
Run every flow a saved view matches, as one test run. The name or the slug of a view of views.yaml. |
--folder |
With --view, scope the view to a folder of the flows tree. Default: every flow. |
--env |
The environment to run against. Required with --file and --view. |
--import-env |
Write a YAML export of environment variables into the context's env files before anything runs. |
--dry-run |
With --import-env, print what it would write, write nothing and run nothing. |
--capabilities |
List every application of the context with its methods. |
--agent, --agent-id, --broker, --username, --password |
Run this machine as a remote agent. See Remote agents. |
--remote <agent> |
Run --file or --view on that agent instead of here. |
--debug |
Print the environment variables and Node.js paths, for when nothing else explains a failure. |
--version, -v |
Print the installed version. |
--help |
Show the help. |
Writing flows with AI is a web UI feature: the provider and keys are configured there, and the CLI has no flag for it.
Running one flow
ronsel --context ~/projects/shop/e2e --file flows/checkout/refund.md --env uat
The steps are printed as they run, with their request, response and
assertions, and the run is recorded under test-runs/ exactly as one from
the UI. The command exits with 0 when the flow passed and 1 otherwise.
Running a view
ronsel --context ~/projects/shop/e2e --view smoke --env uat
--view runs every flow a saved view matches, one after the other, as a
single test run. The CLI button of a folder view writes the exact command
for what is on screen, --folder included when the view is scoped to a
folder.
The view is evaluated when the command runs, not when it was written
down: a flow added later that its filters keep is picked up without touching
the pipeline. Every flow runs even when one fails, the summary lists the
failed ones, and the exit code is 1 if any did. Why a view rather than a
list of files is the right thing to hand a pipeline is explained in
Organizing flows.
Bringing the environment variables with you
Env files hold secrets, so they are not in the repository a pipeline clones.
--import-env takes the YAML document the Environment variables screen
exports and writes its values into the context's env files before any flow
runs:
ronsel --context . --import-env env.yaml --view smoke --env uat
The path is resolved against the working directory first and the context second. Missing files are created, existing ones keep everything the document does not name, and an application the document names that the context does not have is reported and skipped. Every file touched and every entry left out is printed:
Environment variables — imported /home/ci/env.yaml:
updated applications/payments/env/uat.env — 1 added, 1 overwritten
created applications/checkout/env/uat.env — 1 added
skipped billing — no such application in this context
1 created, 1 updated; 2 added, 1 overwritten, 0 already the same, 1 skipped
A document that cannot be read stops the command before anything runs. The document carries real values: keep it out of git and out of the job's log.
In a pipeline
A job needs Node.js 24, the package, the context and the environment
document. With GitHub Actions, the context being the e2e folder of the
repository and the export stored as the secret FLOWS_ENV_UAT:
jobs:
smoke:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 24
- run: npm install -g ronsel
- run: printf '%s' "$FLOWS_ENV" > env.yaml
env:
FLOWS_ENV: ${{ secrets.FLOWS_ENV_UAT }}
- run: ronsel --context e2e --import-env env.yaml --view smoke --env uat
- uses: actions/upload-artifact@v4
if: always()
with:
name: flows-report
path: e2e/test-runs/**/report.html
The job fails when a flow fails, and the HTML report of the run is kept as an
artifact either way. Flows that drive a browser need
npx playwright install --with-deps chromium before the run. Any other CI
system is the same four steps: install, write the document, run the view,
keep the report.
Remote
ronsel --remote agent-ourense --view smoke --env uat
runs the view on a machine that can reach the systems under test, and prints and records the run here as if it had run locally. See Remote agents.