Voting load reference
Generated by step-cli load reference. Unknown configuration keys are rejected. Local initialization derives tenant endpoints, the available browser, and Docker networking from the coordinator. Paths in preparation are relative to the workload YAML. Secrets are referenced by environment-variable name.
reference
Generate command/configuration Markdown from help text and Rust field documentation
Usage: reference [OPTIONS]
Options:
--output <OUTPUT>
Destination file; stdout when omitted
-h, --help
Print help
image
Build a source-only worker image from the bundled runtime
Usage: image [OPTIONS] --engine <ENGINE> --tag <TAG>
Options:
--engine <ENGINE>
Engine to include in the image
Possible values:
- k6: Authenticated HTTP with native encryption completed before measurement
- chromium: Full browser rendering, selection, encryption and confirmation
--tag <TAG>
Docker tag; include a registry for Kubernetes workers
--push
Push the built image using the current Docker registry credentials
--rust-image <RUST_IMAGE>
Rust builder image for the standalone worker
[default: rust:1.96.0-bookworm]
--k6-image <K6_IMAGE>
Image supplying the k6 executable
[default: grafana/k6:1.6.0]
--worker-image <WORKER_IMAGE>
Base image for protocol workers
[default: debian:bookworm-slim]
--browser-image <BROWSER_IMAGE>
Base image for browser workers
[default: node:22-bookworm-slim]
--playwright-version <PLAYWRIGHT_VERSION>
Playwright version, kept in sync with the portal test runner
[default: 1.62.1]
-h, --help
Print help (see a summary with '-h')
init
Generate a documented workload using the configured tenant administrator
Usage: init [OPTIONS]
Options:
--target <TARGET>
Local devcontainer defaults or remote deployment URLs from CLI configuration
[default: local]
[possible values: local, remote]
--output <OUTPUT>
YAML destination; existing files are never overwritten
[default: voting-load.yaml]
--portal-url <PORTAL_URL>
Voting-portal base URL; required for remote targets
--storage-origin <STORAGE_ORIGIN>
Public publication-storage origin; required for remote targets
-h, --help
Print help
prepare
Validate dependencies, create the election/census, and prepare immutable worker inputs
Usage: prepare [OPTIONS] --output <OUTPUT> <CONFIG>
Arguments:
<CONFIG>
Workload YAML written by init
Options:
--output <OUTPUT>
Fresh run directory, including private provisioning logs and worker inputs
--engine <ENGINE>
Override the engine before preparing inputs
Possible values:
- k6: Authenticated HTTP with native encryption completed before measurement
- chromium: Full browser rendering, selection, encryption and confirmation
--workers <WORKERS>
Override parallel preparation workers
-h, --help
Print help (see a summary with '-h')
run
Execute a prepared run once and automatically write its HTML report
Usage: run [OPTIONS] <DIRECTORY>
Arguments:
<DIRECTORY>
Prepared run directory
Options:
--workers <WORKERS>
Override the worker count recorded in the workload
--executor <EXECUTOR>
Execution backend; defaults to the workload's configured executor
Possible values:
- local: Parallel worker processes on the coordinator
- docker: Isolated containers sharing prepared inputs through a bind mount
- kubernetes: Indexed pods with durable shared input and attempt storage
-h, --help
Print help (see a summary with '-h')
report
Rebuild aggregate results; optional database auditing remains coordinator-only
Usage: report [OPTIONS] <DIRECTORY>
Arguments:
<DIRECTORY>
Completed or interrupted run directory
Options:
--dsn-env <DSN_ENV>
Environment variable containing a read-only backend PostgreSQL DSN
--open
Open the standalone report with the configured browser opener
--screenshot <SCREENSHOT>
Capture the report as a PNG using the configured Playwright browser
-h, --help
Print help
check
Validate configuration and check installed engine dependencies
Usage: check <CONFIG>
Arguments:
<CONFIG>
Options:
-h, --help
Print help
target
| Setting | Default | Meaning |
|---|---|---|
tenant_id | from CLI session | Existing synthetic tenant administered by the CLI session. |
portal_url | "http://localhost:3000" | Voting portal base URL, including a path prefix if deployed under one. |
keycloak_url | "http://keycloak:8090" | Keycloak base URL. |
graphql_url | "http://graphql-engine:8080/v1/graphql" | Full GraphQL endpoint. |
storage_origins | ["http://minio-proxy:9002"] | Public S3/CDN origins returned by publication signing. |
upload_mode | "local" | Rewrite upload hosts for the devcontainer's local storage network only. |
workload
| Setting | Default | Meaning |
|---|---|---|
engine | "k6" | HTTP protocol or full browser journey. |
mode | "vote" | vote executes the whole journey; status measures login and voter status. |
count | 100 | Number of distinct voters, independent of worker count. |
start | 0 | Numeric suffix of the first voter. |
username_prefix | "load-" | Prefix prepended to every numeric suffix. |
shard_size | 25 | Maximum ballots loaded by one worker at a time. |
concurrency | 2 | Concurrent voters per worker. |
max_duration | "30m" | Maximum duration of each finite k6 shard, in k6 duration notation. |
request_timeout | "30s" | HTTP request deadline for login, status and publication downloads. |
cast_timeout | "60s" | HTTP cast request deadline. |
locale | "en" | Language requested from Keycloak during protocol login. |
password_env | "LOAD_PASSWORD" | Environment variable containing the shared synthetic voter password. |
hash_iterations | 27500 | PBKDF2-SHA256 rounds, also installed as the fixture realm's policy. |
client_id | "voting-portal" | OIDC client registered in the election realm. |
journey_timeout_ms | 180000 | Browser journey timeout, in milliseconds. |
action_timeout_ms | 15000 | Browser locator/expectation timeout, in milliseconds. |
trace_http | false | Retain sanitized per-fetch diagnostics in private logs. |
execution
| Setting | Default | Meaning |
|---|---|---|
workers | 1 | Independent worker processes or pods. |
executor | "local" | local, docker, or kubernetes. |
image | "voting-load:k6" | Worker image, built from the bundled package before remote execution. |
network | "step_devcontainer_default" | Docker network reachable from the target endpoints. |
docker_mount_source | null | Optional daemon-host path to prepared inputs; devcontainer bind mounts are otherwise discovered. |
namespace | "default" | Kubernetes namespace for this run. |
storage_class | "" | ReadWriteMany storage class; required for Kubernetes. |
storage_size | "20Gi" | Kubernetes volume capacity, including results. |
wait_timeout | "1h" | Maximum wait for Kubernetes resources, using kubectl duration notation. |
resources | {"limits":{"cpu":"2","memory":"4Gi"},"requests":{"cpu":"1","memory":"1Gi"}} | Kubernetes per-worker requests and limits (cpu/memory resource quantities). |
preparation
| Setting | Default | Meaning |
|---|---|---|
template | null | Optional exported event template; the bundled single-election fixture is the default. |
existing_event | null | Optional prior generated event config; provisions only a new voter range. |
choices | null | Optional explicit decoded ballot selections. |
threshold | 2 | Automatic trustee threshold. |
poll_interval_seconds | 5 | Key-ceremony polling interval in seconds. |
ceremony_timeout_seconds | 600 | Maximum ceremony wait in seconds. |
publication_preparer | null | Optional application publication writer for deployments with separate S3 preparation. |
runtime
| Setting | Default | Meaning |
|---|---|---|
k6 | "k6" | k6 executable. |
node | "node" | Node.js executable for Chromium workers. |
playwright_dir | packages/voting-portal under the current directory | Directory containing the installed @playwright/test package. |
chromium | CHROMIUM_EXECUTABLE_PATH, chromium on PATH, or Playwright default | Optional system Chromium executable; otherwise use Playwright's matching browser. |
opener | "xdg-open" | Executable used by report --open. |
reporting
| Setting | Default | Meaning |
|---|---|---|
max_errors | 20 | Maximum failure details retained in a report; total failure counts remain exact. |
cdf_points | 51 | Quantile points per cumulative latency curve, including its endpoints. |
bins | 60 | Maximum throughput chart buckets; independent of voter count. |
sqlite_cache_kib | 16384 | SQLite aggregation cache in KiB; sorting spills to disk. |
audit_batch_size | 1000 | Receipt IDs queried per read-only audit batch. |
audit_timeout_ms | 30000 | PostgreSQL statement timeout in milliseconds. |
audit_connect_timeout_seconds | 15 | PostgreSQL connection timeout in seconds. |
screenshot_width | 1200 | Screenshot viewport width in CSS pixels. |
screenshot_height | 1000 | Screenshot initial viewport height; the full report is captured. |
Goals
goals defaults to an empty mapping. Supported stages are status_ms, cast_ms, and journey_ms; each accepts positive p50 and p99 limits in milliseconds. min_casts_per_second defaults to zero (disabled). Status-only workloads cannot configure cast goals. Every planned journey must succeed regardless of optional performance goals.