Workspace Setup
While Rumour allows you to execute individual TOML files anywhere from scratch, structuring your testing codebase in a clean, modular fashion is critical for large, enterprise-grade workspaces.
Instead of crafting directories and environment configs manually, Rumour provides built-in, industry-standard setup subcommands to instantly bootstrap and scale your API testing projects.
The Modular Architecture Philosophy
In a mature Rumour project, we recommend separating global workspace settings from domain-specific test suites. The ideal directory layout looks like this:
my_api_tests/ # Your workspace root folder
├── workspace.env.toml # Global environment variables (e.g. base_url)
├── my_api_tests.config.toml # Global runner defaults
├── my_api_tests.suite.toml # Main execution suite linking everything
├── .gitignore # Excludes local caches (.rumour/) from Git
│
├── auth/ # Modular collection for Authentication APIs
│ ├── auth.env.toml # Auth-specific variable overrides
│ ├── auth.config.toml # Auth-specific runner defaults (timeouts, retries)
│ ├── auth.suite.toml # Sequential execution suite for Auth
│ └── requests/ # Dedicated folder for Auth API TOML files
│ ├── login.toml
│ └── logout.toml
│
└── users/ # Modular collection for User Management APIs
├── users.env.toml
├── users.config.toml
├── users.suite.toml
└── requests/
├── create_user.toml
└── get_user.toml
This structure guarantees complete variable isolation, prevents naming collisions, and enables effortless parallel test runs.
Step 1: Initialize the Workspace Root
To set up your project boundary, run rumour init inside your target directory:
rumour init sectionForge
Interactive Prompt: Git Setup
If the directory does not have an active Git repository, Rumour will intelligently prompt you:
Initialize a Git repository in this workspace? [Y/n]
Pressing Yes will automatically run git init on your behalf, establishing a safe VCS boundary.
It will ask for git initialize:
~/workspace/testing/recommended_setup main ❯ rumour init sectionForge
Initialize a Git repository in this workspace? [Y/n]
press Y or n
~/workspace/testing/recommended_setup main ❯ rumour init sectionForge
Rumour workspace successfully initialized!
Location: /home/bugsfounder/workspace/testing/recommended_setup/sectionForge
Created:
• workspace.env.toml (Workspace global variables & root marker)
• sectionForge.config.toml (Workspace global runner configuration)
• sectionForge.suite.toml (Workspace global ordered sequence suite)
• .gitignore (Configured to ignore local caches & reports)
Next steps to start testing:
1. Create a modular collection: rumour new <collection_name>
(Example: rumour new auth)
2. Run your new workflow suite: rumour run <collection_name>/<collection_name>.suite.toml
(Example: rumour run auth/auth.suite.toml)
(If you are already inside your target directory, simply run rumour init with no arguments.)
Scaffolded Files at the Root:
workspace.env.toml: The marker file that defines the workspace boundary. All sibling dependency scans terminate here.[variables]base_url = "https://httpbin.org"sectionForge.config.toml: Contains global execution rules.[config]# timeout_ms = 5000# max_retries = 3sectionForge.suite.toml: A root-level sequence runner suite that you can use to orchestrate collections together..gitignore: Configured to ignore execution cache/reports stored inside.rumour/from your git history.
Step 2: Scaffold a Modular Collection
Once your workspace root is initialized, you can scaffold domain-specific testing collections (like auth or users) using:
rumour new auth
Rumour will automatically detect the workspace root, create the collection directory, and generate dynamic config templates named specifically after your collection:
~/workspace/testing/recommended_setup/sectionForge main* ❯ rumour new auth
Collection 'auth' successfully created!
Location: /home/bugsfounder/workspace/testing/recommended_setup/sectionForge/auth
Scaffolded:
• auth/auth.env.toml (Domain environment overrides)
• auth/auth.config.toml (Domain runner configurations)
• auth/auth.suite.toml (Ordered sequence runner suite)
• auth/requests/ (Subfolder for API request TOMLs)
└── requests/example.toml (Documented template request)
To run this collection's test suite:
$ rumour run auth/auth.suite.toml
1. Collection-Level Overrides (auth.env.toml)
These variables take precedence over the root workspace.env.toml. Excellent for swapping base URLs or headers for a specific microservice:
[variables]
# Define your workspace-wide global variables here.
# These will be automatically resolved by all request collections and suites.
base_url = "https://httpbin.org"
2. Collection-Level Config (auth.config.toml)
Set localized timeout or retry behaviors specific to this domain's SLA requirements:
[config]
# Workspace-level request runner configurations.
# Timeout in milliseconds, request retries, delay, etc.
# timeout_ms = 5000
# max_retries = 3
3. Ordered Workflow Suite (auth.suite.toml)
Orchestrates your folder's request nodes in a strict topological sequence:
[suite]
name = "Auth Workflow Suite"
description = "Modular ordered execution suite for Auth request workflows."
ordered = true
requests = [
"requests/example.toml"
]
4. Interactive Request Template (requests/example.toml)
Pre-loaded with clear explanations of request headers, assertions, and variable chaining to help new developers start writing tests instantly.
Step 3: Run Your New Collection
To run the scaffolded collection out-of-the-box, execute its suite:
rumour run auth/auth.suite.toml
Expected Output:
GET https://httpbin.org/get
✓ SUCCESS: /home/bugsfounder/workspace/my_testing_project/auth/requests/example.toml (235ms)
✓ auth/auth.suite.toml → PASS (1 Pass, 0 Fail, 0 Skip)
Multiple modules
rumour new timelines
~/workspace/testing/recommended_setup/sectionForge main* ❯ rumour new timelines
Collection 'timelines' successfully created!
Location: /home/bugsfounder/workspace/testing/recommended_setup/sectionForge/timelines
Scaffolded:
• timelines/timelines.env.toml (Domain environment overrides)
• timelines/timelines.config.toml (Domain runner configurations)
• timelines/timelines.suite.toml (Ordered sequence runner suite)
• timelines/requests/ (Subfolder for API request TOMLs)
└── requests/example.toml (Documented template request)
To run this collection's test suite:
$ rumour run timelines/timelines.suite.toml
workspace Strucute
sectionForge
├── auth
│ ├── auth.config.toml
│ ├── auth.env.toml
│ ├── auth.suite.toml
│ └── requests
│ └── example.toml
├── timelines
│ ├── requests
│ │ └── example.toml
│ ├── timelines.config.toml
│ ├── timelines.env.toml
│ └── timelines.suite.toml
├── sectionForge.config.toml
├── sectionForge.suite.toml
└── workspace.env.toml
5 directories, 11 files
🛑 Nested Workspaces (Anti-Nesting Protection)
To maintain absolute structural integrity, prevent path-mapping loops, and keep variable scoping deterministic, Rumour actively blocks the creation of nested workspaces.
If you attempt to run rumour init inside a folder that is already a child or descendant of an active Rumour workspace, the engine will safely abort and print a clear, informative error:
~/workspace/testing/recommended_setup/swahira/sectionForge/timelines ❯ rumour init new_workspace
ERROR: Cannot initialize a new workspace here because it is already nested inside an active Rumour workspace at:
/home/bugsfounder/workspace/testing/recommended_setup/swahira
Nested Modules (Cascading Collections)
For large-scale, enterprise APIs, you can organize your collections into cascading, hierarchical subdomains to perfectly match your API routes.
Rumour's scaffolding command (rumour new) is fully CWD-relative and context-aware. This means that when you are inside a collection directory and run rumour new, it will gracefully nest the new sub-collection inside it.
Example Walkthrough:
# 1. Enter your main collection
cd sectionForge/timelines
# 2. Scaffold sub-collections relative to your active directory
rumour new published
rumour new history
Resulting Cascading Directory Tree:
This context-aware behavior results in an incredibly clean, logically grouped folder structure:
sectionForge
├── auth
│ ├── auth.config.toml
│ ├── auth.env.toml
│ ├── auth.suite.toml
│ └── requests
│ └── example.toml
├── timelines
│ ├── history
│ │ ├── history.config.toml
│ │ ├── history.env.toml
│ │ ├── history.suite.toml
│ │ └── requests
│ │ └── example.toml
│ ├── published
│ │ ├── published.config.toml
│ │ ├── published.env.toml
│ │ ├── published.suite.toml
│ │ └── requests
│ │ └── example.toml
│ ├── requests
│ │ └── example.toml
│ ├── timelines.config.toml
│ ├── timelines.env.toml
│ └── timelines.suite.toml
├── sectionForge.suite.toml
├── sectionForge.config.toml
└── workspace.env.toml
9 directories, 19 files
This ensures complete modular isolation at every layer while allowing child collections to dynamically inherit variable configurations from all parent/workspace envelopes!
Best Practices
-
Secure Your Secrets with Rumour Vault: Never store sensitive tokens or plaintext passwords directly in your environment configurations. Instead, use Rumour's built-in Encrypted Vault to store secrets securely, or supply variables dynamically at runtime:
rumour run auth/auth.suite.toml -V api_key=runtime-override-secret -
Structuring for Organization (The Resolution Hierarchy): Rumour is incredibly flexible: even if you mix
.env.toml,.config.toml, or.suite.tomlfiles directly inside yourrequests/folder, the execution engine handles it perfectly without errors.However, keeping them at the collection root is highly recommended strictly for clean structure and project hygiene.
When resolving variables, Rumour always respects a clean Priority Hierarchy (from highest to lowest precedence):
- Local Variables: Defined directly inside the request TOML's
[variables]or[extract]block. - Collection-Level Variables: Defined in the modular
<collection>.env.toml. - Workspace-Level Variables: Defined in the global
workspace.env.toml.
(Note: Dynamic command-line overrides supplied via the
-Vflag always take absolute top priority, overriding all of the above.) - Local Variables: Defined directly inside the request TOML's
-
Cascading Configuration Inheritance & Merging Rules: Just like environment envelopes, modular config files (
.config.toml) cascade and merge dynamically through your nested directory path (from the workspace root down to the leaf node):- Request Headers: Custom headers are accumulated cumulatively. For instance, a request in
timelines/published/will carry all headers defined insectionForge.config.toml,timelines.config.toml, andpublished.config.tomlseamlessly. - Config Variables & Settings: Runner settings (such as
max_retriesortimeout_ms) and configuration-level variables are merged dynamically. Deeper subdirectory files overwrite values defined in parent/workspace configurations. - Precedence Order: Leaf configuration overrides workspace root defaults.
- Request Headers: Custom headers are accumulated cumulatively. For instance, a request in
-
Orchestrating Master Suites for CI/CD Pipelines: For a comprehensive end-to-end integration run, link all domain-specific sequence suites together inside your global workspace-level suite (
sectionForge.suite.toml):[suite]name = "sectionForge Global Master Suite"description = "Orchestrates all cascading modules sequentially for full system verification."ordered = truerequests = ["auth/auth.suite.toml","timelines/timelines.suite.toml","timelines/published/published.suite.toml","timelines/history/history.suite.toml"]Executing
rumour run sectionForge.suite.tomlwill trigger the entire cascading test suite sequentially, resolving all dynamic token extractions and generated post ID dependencies with 100% determinism!