New · v2 TestingForge v2 is livetwice the functionality at the same subscription price. See what's new →
Product overview

You give us the repo. We build your API workflows.

TestingForge reads your repository, maps the real flows through your APIs, and generates a complete, editable test suite — scenarios, groups, bricks, variables, and assertions. No empty collection to fill in by hand. On day one you have something to run.

1

Point us at your repository Connect

Paste a GitHub or GitLab URL and pick the environments you already have. That's all we ask for — TestingForge figures the rest out from your code, OpenAPI, and real HTTP traffic.

🔒testingforge.io/onboarding/connect
Step 1 of 2

Connect a repository

We read your code, OpenAPI, and recorded traffic — nothing is pushed, nothing is changed.

GitHub GitLab Bitbucket
https://github.com/ acme/storefront-api ✓ readable
main
/docs/openapi.yaml✓ found
Devapi.dev.acme.testdetected
Stageapi.stage.acme.testdetected
Prodapi.acme.testread-only
We only need read access. You stay in control of the secrets. Connect & analyze →
2

We build your suite — not you Auto-generate

In a few minutes you have real scenarios, groups, bricks, variables, secrets and assertions — all wired together. You review and tweak; you don't start from an empty collection.

🔒testingforge.io/onboarding/analyze
Step 2 of 2 · Analysis complete

github.com/acme/storefront-api

Finished in 3m 12s · nothing pushed to your repo

Open your workspace →
147endpoints found
12scenarios built
184bricks wired
38variables captured
214assertions proposed
What we did
  • Discovered 147 endpoints from OpenAPI + 23 more by static analysis of your handlers.
  • Clustered them into 12 scenarios — Checkout, Auth, Catalog, Payments, Admin, Webhooks…
  • Wired 38 runtime variables (accessToken, userId, cartId, orderId…) between calls automatically.
  • Synthesized 214 assertions — status codes, JSON shape, response time, key headers.
  • Linked 6 secrets from your vault (API keys, service tokens) — values stay masked.
Generated scenarios
  • Auth flows14 bricks
  • Catalog & search22 bricks
  • Checkout smoke8 bricks
  • Payments & refund17 bricks
  • Admin & orders31 bricks
  • Webhooks9 bricks · async
  • + 6 more scenarios
Everything we generated is a regular, editable record — you can rename, reorder, tweak, or fork any part of it at any time.
3

Sign in to the workspace we prepared Login

Your team members log in to a workspace that's already populated — scenarios, bricks, environments, secrets. Nothing blank, nothing to set up by hand.

🔒testingforge.io/login
4

Command Center, already wired up Dashboard

From the first login: driver status, live KPIs, 24-hour activity and a plain-English health verdict. This data is flowing because your scenarios are already running — they didn't wait for you to write them.

🔒testingforge.io/dashboard
TestingForge Acme Dashboard
Testing Forge · Command Center

Acme

Driver ready Tue, Apr 21 · 14:32 UTC
▶ Run Test ☰ Logs
Runs (30d)
1,284
finished automation runs
↗ 12% vs prev 30d
Success rate
96.4%
across all scenarios
↗ 2.1 pts
Avg duration
1:24
per finished run
↘ 9s faster
Active bricks
147
in 12 scenarios
4 disabled · 3 flaky
Current status Healthy

Main issue None in the last 6h.

Impact No critical flows affected.

Suggested action Keep nightly regression scheduled.

0 failed · success rate 98% · last 6h

Recent activity (24h)

  • 42 runs finished
  • 2 failed
  • 95% success rate (finished)

Trend vs prior 24h: improving

5

Every run of your generated suite Logs

CI, schedule, manual — every execution of the suite we built for you lands here. Filter by status, date or text; jump into any run's full trace in one click.

🔒testingforge.io/logs
TestingForge Acme Logs
6

Your generated bricks — editable, not frozen Bricks

The bricks below aren't something you wrote. We wrote them for your repo. But — unlike a generated black-box — every brick is a plain record you can rename, reorder, tweak, disable or fork. The amber groups are ones your team edited on top of our baseline.

🔒testingforge.io/workspace/bricks
TestingForge Acme Bricks

Bricks

147 active · 12 scenarios · 4 disabled

Checkout smoke

scenario · 8 bricks · env: stage
+ Add brick ▶ Run
Auth · 2 bricks
Sort Rename
⋮⋮ 01 POST
Login
{option.API_HOST}/v1/auth/login
Edit Delete
⋮⋮ 02 GET
Fetch profile
{option.API_HOST}/v1/me
Edit Delete
Checkout custom · 4 bricks · forked from template
Diff upstream Sort
⋮⋮ 03 POST
Add items to cart
{option.API_HOST}/v1/cart/items
Edit Delete
⋮⋮ 04 POST
Create order
{option.API_HOST}/v1/orders/checkout
Edit Delete
⋮⋮ 05 GET
Poll until paid
{option.API_HOST}/v1/orders/{orderId}
Edit Delete
⋮⋮ 06 PUT
Update shipping (legacy) disabled
{option.API_HOST}/v1/orders/{orderId}/shipping
Edit Delete
7

Trace every call, not just the last error Run

Each row is a real HTTP call in Swagger-UI verb colors. Expand a failing brick to see the request, the response, and the exact assertions that broke — then copy as cURL or re-run just the failed ones. This is what "transparent, not a black-box" actually looks like.

🔒testingforge.io/runs/5127
TestingForge Acme Logs Run #5127

Checkout smoke · Run #5127

stage · api.stage.acme.test · triggered by anna@acme.test
1 failure · auto-retry
POST 200 128 ms Auth · login /v1/auth/login
GET 200 76 ms Fetch profile /v1/me
POST 201 214 ms Cart · add items /v1/cart/items
POST 422 389 ms Create order /v1/orders/checkout checks failed
Response body · brick "Create order"
{
  "error": "promo_invalid",
  "message": "Promo code EXPIRED has expired",
  "status": "rejected"
}
Failed checks
status is 201 — got 422
$.data.status equals confirmed — got "rejected"
response time < 800ms (389 ms)
Copy cURL Re-run failed only Open brick Diff vs last green
GET Poll until paid /v1/orders/{orderId}

Point us at your repo — and see it running by tomorrow morning

Connect a GitHub or GitLab repository, and on the other side you get a structured suite of scenarios, bricks and assertions that's actually runnable. No collection-building homework. You still own it — every brick is a plain, editable record.