Skip to main content

Suite Files

A suite file (*.suite.toml) is a curated list of requests that Rumour executes as a single named workflow. Suites let you define smoke tests, regression runs, or any ordered collection without manually listing files on the command line.

File Format

Suite files use the .suite.toml extension and contain two top-level sections:

[suite]
name = "Smoke Test Suite"
description = "Quick health check for auth and posts endpoints"
ordered = true

requests = [
"auth/login.toml",
"users/get_profile.toml",
"posts/list.toml",
]

[variables]
test_env = "staging"

[suite] Fields

FieldTypeDefaultDescription
namestringrequiredHuman-readable name for the suite
descriptionstringoptionalShort description shown in reports
orderedbooltrueWhether requests execute in list order (sequential)
requestsstring[]requiredPaths to .toml request files, directories, or nested .suite.toml files

[variables]

An optional map of key-value strings injected into every request in the suite. See Suite Variables for full details.

Running a Suite

rumour run ./smoke.suite.toml

Rumour detects the .suite.toml extension automatically and enters suite execution mode.

Common flags

# Verbose summary
rumour run ./smoke.suite.toml -v

# Parallel (only effective when ordered = false)
rumour run ./smoke.suite.toml -p

# With healing enabled
rumour run ./smoke.suite.toml -H

# JUnit output for CI
rumour run ./smoke.suite.toml --junit results.xml

Path Resolution

Paths in the requests array are resolved relative to the suite file's location:

requests = [
"auth/login.toml", # → <suite-dir>/auth/login.toml
"posts/create.toml", # → <suite-dir>/posts/create.toml
"../shared/setup.toml", # → parent directory
]

If a relative path is not found, Rumour falls back to the workspace root (the directory containing workspace.env.toml).

The .toml extension is optional in path entries:

requests = [
"auth/login", # resolved as auth/login.toml
"posts/create",
]

Directory References

You can list a directory instead of individual files:

requests = [
"auth/", # all *.toml files in auth/ (alphabetical, recursive)
"posts/",
]

Rumour discovers all .toml files recursively, sorted alphabetically, while automatically excluding *.env.toml, *.config.toml, *.suite.toml, collection.toml, and _collection.toml.

Example

Verified against the local mock server.

File Layout

suite_examples/01_suite_files/
├── workspace.env.toml
├── smoke.suite.toml
├── auth/
│ └── get_user.toml
└── posts/
└── get_post.toml

smoke.suite.toml

[suite]
name = "Smoke Test Suite"
description = "Quick health check for auth and posts endpoints"
ordered = true

requests = [
"auth/get_user.toml",
"posts/get_post.toml",
]

auth/get_user.toml

name = "get_user"

[request]
method = "GET"
url = "{{base_url}}/users/1"

[assert]
status = 200

[assert.json."id"]
equal = 1

posts/get_post.toml

name = "get_post"

[request]
method = "GET"
url = "{{base_url}}/users/2"

[assert]
status = 200

[assert.json."id"]
equal = 2

Run

rumour run ./suite_examples/01_suite_files/smoke.suite.toml -v

Output

~/workspace/testing main ❯ rumour run ./suite_examples/01_suite_files/smoke.suite.toml -v
GET http://localhost:4000/api/v2/users/1
URL: http://localhost:4000/api/v2/users/1
✓ SUCCESS: /home/bugsfounder/workspace/testing/suite_examples/01_suite_files/auth/get_user.toml (2ms)
GET http://localhost:4000/api/v2/users/2
URL: http://localhost:4000/api/v2/users/2
✓ SUCCESS: /home/bugsfounder/workspace/testing/suite_examples/01_suite_files/posts/get_post.toml (1ms)
✓ /home/bugsfounder/workspace/testing/suite_examples/01_suite_files/smoke.suite.toml → PASS (2 Pass, 0 Fail, 0 Skip)
╭──────────────────────────────────────────────────────────────────────────╮
│ RUMOUR EXECUTION REPORT │
├──────────────────────────────────────────────────────────────────────────┤
│ Total Requests: 2
│ Successful: 2
│ Failed: 0
│ Skipped: 0
│ Success Rate: 100.0% │
│ Total Time: 5ms │
╰──────────────────────────────────────────────────────────────────────────╯

✓ Successful Requests:
- /home/bugsfounder/workspace/testing/suite_examples/01_suite_files/auth/get_user.toml [200] [3ms]
- /home/bugsfounder/workspace/testing/suite_examples/01_suite_files/posts/get_post.toml [200] [1ms]

Actionable Recommendations:
→ Run with --json to export this report for your CI/CD pipeline.

Explanation

When you execute a .suite.toml file:

  • Rumour parses the requests array relative to the suite file's directory.
  • Because ordered = true is set in smoke.suite.toml, the requests are executed sequentially in the declared order: get_user.toml first, then get_post.toml.
  • If one request fails, the execution stops immediately (unless healing -H or specific skip policies are active).