Preset scenarios
Arga ships with 10 built-in scenario templates covering common testing patterns. These are available to all users and can be cloned to customize.Functionality
Security
Edge cases
Using presets
From the web app: Open Scenarios in the sidebar. Preset templates appear at the top — click Use in Run to start a validation run with that scenario, or Clone to copy it into your own scenarios for customization. From the API:arga test-runner scenarios ....
Custom scenarios
Create your own scenarios tailored to your application. There are two ways to define the twin data:- Natural language — describe what you want and Arga generates the seed configuration automatically
- Explicit config — provide the exact JSON for each twin
- Twin selection — a classifier reads your prompt and picks the single most relevant twin. It always prefers provider-specific twins (
slack,discord,notion,gmail,google_drive,google_calendar,stripe,github,gitlab,dropbox,box,jira,salesforce,linear,postgres,unstructured) overunified. Theunifiedtwin is only selected when the prompt explicitly mentions “unified” or “unified.to”. Multiple twins are selected only when the prompt explicitly names more than one provider (for example, “a GitHub repo AND a Slack workspace”). - Config generation — a second pass generates the seed JSON scoped to the selected twin(s). Any secondary details that don’t map to the chosen twin’s schema are either mapped to the closest available field or omitted.
twins array explicitly alongside your seed_config.
From the web app
- Open Scenarios in the sidebar
- Click Create Scenario
- Enter a name and either a natural language prompt or raw JSON config
- Save — Arga generates and stores the twin configuration
From a twin dashboard
Browser-facing twin UIs (Box, Discord, Dropbox, GitHub, GitLab, Gmail, Google Calendar, Google Drive, Linear, LinkedIn, Notion, Slack, Stripe, Unified, Unstructured) include a Save scenario button in the dashboard header. Clicking it captures the twin’s current state as aseed_config payload and hands it off to the Arga web app, which opens the scenario creation flow pre-filled with that configuration. Use it to turn a hand-crafted twin state into a reusable scenario without copying JSON manually.
From the API
With a natural language prompt:From the CLI
Create a scenario from a prompt:Managing scenarios
List
Update
seed_config, Arga regenerates the configuration from the updated prompt.
Delete
Using scenarios in runs
Attach a scenario to any validation run to seed twins before test execution. Runs:scenario_id without a prompt, the scenario’s own prompt is used. If you supply both, your prompt takes precedence.
For Runs started through /validate/url-run, the scenario’s twins list is used as a default when you don’t pass an explicit twins array. This means a request with just url and scenario_id provisions exactly the twins the scenario declares instead of falling back to the default profile. If you pass your own twins array, it takes precedence over the scenario’s list.
PR Checks derive their twin selection from the repository and branch context, so the scenario’s twin list is not used as a fallback for PR Checks.
Reusing scenarios with twins
To reuse a scenario with fresh twins, pass bothtwins and scenario_id to the Provision twins API. Arga provisions a new twin environment and seeds it from the scenario before the status becomes ready.
Long-lived scenario twin environment endpoints are not present in the current
validation-server checkout. See Availability notes for the current API gap.Supported twins
Slack OAuth scope overrides
The Slack twin enforces OAuth scope requirements on API calls. You can customize the scopes granted to bot and user tokens by includingoauth_bot_scopes, oauth_user_scopes, or tokens in the Slack seed configuration. This is useful for testing how your app handles missing permissions.
chat:write and files:write as minimum scopes, even if your configuration specifies a narrower set. See configurable token scopes for the full list of available scopes and their corresponding API methods.
Slack workspace constraints
You can configure workspace-level settings in the Slack seed to test how your app handles restricted environments — disabled file uploads, storage quotas, and rate limits.
See workspace constraints for the full reference and error response shapes.
GitHub repository seed config
Each entry in the GitHub seed’srepos array creates one repository in the twin. You can describe the files inline with files, or clone a public GitHub repository to pre-populate the twin with its tracked files.
When cloning from
repo_url, the runner enforces these limits per repository to keep seeding fast and bounded:
- Only public HTTPS
github.comURLs are accepted. Credentialed URLs are rejected. - Up to 1,000 tracked files are copied.
- Each file must be 1 MiB or smaller; symlinks are skipped.
- The total cloned payload is capped at 25 MiB. Files beyond the limit are skipped.
Tags
Organize scenarios with free-form tags for filtering:?tag=billing) or web app.
