Documentation
Everything you need to get Stillworks running on your app.
Getting started
Connect your repo in under 2 minutes. No config files, no CI setup.
https://myapp.vercel.app).Route statuses
Each route gets one of five statuses after a run.
Page loads, HTTP 200, content rendered, no fatal errors.
Page loads but has JS errors, a slow response, or minor issues worth watching.
Page is accessible but an AI-detected interaction is broken — a button or form that doesn't work as expected.
Page is inaccessible — HTTP 404, 500, blank content, or network error.
Route redirects to login. Provide test credentials in Settings to test it fully.
The overall run status is the worst status across all routes — one Failed route turns the whole run red.
AI interaction tests
Beyond checking if a page loads, Stillworks reads your component source code and generates real interaction tests — filling forms, clicking buttons, verifying success messages.
What it tests
Result states
All steps completed successfully.
A step couldn't run — element not found. Our selector was wrong, not your app.
Static page with no interactions to test. This is a positive signal.
An assertion failed — button didn't work, success message never appeared. This is a real app bug.
AI_FAIL turns the route Degraded (orange). The page is still accessible but an interaction is broken. It does not count as a full failure in the pass/total metric.
Test credentials
Protected routes redirect to login. To test them, add a dedicated test account in your repo settings.
test@yourapp.com — never your personal account. Make sure it has access to the routes you want tested.Notifications
Get alerted when a route breaks, by email, Slack, or Discord.
Enabled by default. A report is sent after every run that has at least one failure. Configure the recipient in Settings → Notifications.
Slack
Paste your Slack Incoming Webhook URL in Repo → Configure → Slack webhook. Stillworks posts a message in your chosen channel after each run.
❌ 23/25 routes passing — 2 failed
✅ /checkout — Accessible
❌ /dashboard — Server error (5xx)
Discord
Same as Slack — paste your Discord Webhook URL in Repo → Configure → Discord webhook. Stillworks sends an embed with the full run summary.
GitHub integration
Commit status check
After each run, Stillworks posts a stillworks/routes status on your commit. It appears directly on the pull request as a green checkmark or red cross.
To block merges when tests fail, go to your GitHub repo → Settings → Branches → Branch protection rules → enable Require status checks to pass → search for stillworks/routes.
PR comment
When a push is linked to an open pull request, Stillworks automatically posts a comment with the full route summary — no need to open the dashboard.
❌ /checkout — page vide (composant crash)
⚠️ /login — JS errors détectées
API reference
Trigger runs, read results, and manage repos programmatically. All endpoints are at https://stillworks-production.up.railway.app.
Authentication
All API calls require your personal token in the request header.
X-Stillworks-Token: YOUR_TOKENGet your token at Settings → API tokens. You can create multiple tokens and revoke them at any time.
User endpoints (token auth)
Get your API token
Go to Settings → API tokens to create a personal token. Tokens can be revoked at any time.
SDK
Use the SDK to trigger runs, read results, and integrate Stillworks into your own scripts — without writing HTTP calls manually.
Both SDKs use your personal API token and wrap the same endpoints as the API reference above.
Python
JavaScript / TypeScript
Errors
Both SDKs raise typed exceptions:
StillworksErrorBase class — any API error. Has a .status_code attribute.UnauthorizedErrorToken missing or invalid (HTTP 401).RateLimitErrorMonthly run limit reached (HTTP 402). Upgrade to Pro.