Every page of your app, checked as every kind of user.
Paste your address: EveryRole opens your live app as each kind of user (visitors, members, admins…), suggests tests, and runs the ones you add after every deploy.
300 free credits every monthNo cardIt never sees your code
The board is a real run, not a mock-up: EveryRole testing everyrole.dev itself, as a visitor, on Nov 15, 2026. Visitor only for now: the signed-in kinds of user come with its next run. Click any tag to see the page.
Passed is a test result. A gap is a page a kind of user saw with no test yet.
4 of 4 tests passed, each in two passes in a row.
| Page | VisitorSigned out |
|---|---|
/Every page of your app, checked as every kind of user. |
|
/loginWelcome back |
|
/signupStart free |
|
/forgotReset your password |
|
/legal/termsTerms of Service |
|
/legal/privacyPrivacy Policy |
|
/pricingPay for what gets checked, nothing else. |
|
/legal/cookiesCookie Policy |
|
/legal/subprocessorsSub-processors |
|
/legal/refundsRefund Policy |
|
/legal/acceptable-useAcceptable Use |
|
/legal/data-deletionData Deletion |
|
/docsDocs |

/ as Visitor Passed
- A visitor can paste their app's address and start a free first look

/login as Visitor Passed
- A visitor can submit the log-in form with email and password

/signup as Visitor Passed
- A visitor can request a sign-up link with their email

/forgot as Visitor Passed
- A visitor can request a password reset link

/legal/terms as Visitor Gap
A gap: visitors saw this page, and no test covers it yet. EveryRole can suggest one.

/legal/privacy as Visitor Gap
A gap: visitors saw this page, and no test covers it yet. EveryRole can suggest one.

/pricing as Visitor Gap
A gap: visitors saw this page, and no test covers it yet. EveryRole can suggest one.

/legal/cookies as Visitor Gap
A gap: visitors saw this page, and no test covers it yet. EveryRole can suggest one.

/legal/subprocessors as Visitor Gap
A gap: visitors saw this page, and no test covers it yet. EveryRole can suggest one.

/legal/refunds as Visitor Gap
A gap: visitors saw this page, and no test covers it yet. EveryRole can suggest one.

/legal/acceptable-use as Visitor Gap
A gap: visitors saw this page, and no test covers it yet. EveryRole can suggest one.

/legal/data-deletion as Visitor Gap
A gap: visitors saw this page, and no test covers it yet. EveryRole can suggest one.

/docs as Visitor Gap
A gap: visitors saw this page, and no test covers it yet. EveryRole can suggest one.
Every test shows what it did.
A real test from the same run. It is a “fills a form” test: it fills in the form like a real user, EveryRole stops the save before it reaches the app, and the test checks that the form tried to save. It ran twice, and passed both times.

A visitor can submit the log-in form with email and password
- 1Clicked “Sign in”
- 2Typed into “Email”
- 3Typed into “Password Forgot it?”
- 4Clicked “Log in”
- 5Checked that the form tried to saveSave request seen and stopped: FORM https://everyrole.dev/login
Built for the bugs that quietly lose users.
An uptime checker
Knows a page loaded. Not that a member can still use it, or that a visitor is kept out of the dashboard.
Playwright you write
Tests what you scripted, as long as you keep writing and fixing the scripts after every change.
EveryRole
Suggests tests from your live site, as each kind of user, each tried twice for real. Nothing runs as a test until you add it, one by one or all at once. It says when it’s the test, not your app, that needs updating.
Every kind of user, and who may open what
Give one test login per kind of user: member, admin, paying customer. EveryRole signs in as each and checks that every page opens for the people it should, and sends everyone else away.
Your data stays as it is, unless you say otherwise
While exploring, every request that would save is blocked in the browser. Each suggested test is one of three kinds, and you see which before you keep it.
Never-click words (“Delete”, “Pay”…) are refused before every click, while exploring and in every test.
The one exception is clean-up: after a change about new accounts, EveryRole deletes the test accounts it created itself, through your app’s own settings. It never touches your test logins or real users, and if your app has no way to delete an account, it says so instead of leaving junk behind.
The journey that loses new users
Start the main action signed out, hit the sign-up wall, confirm the email, come back to what you were doing with nothing lost. EveryRole finds each stage on your live site and tests it. When it breaks, one sentence says where.
Signing up makes a new account, so this runs only where you allow new accounts.
- Start the main action, signed out
- Meet the sign-up wall
- Confirm the email (EveryRole opens it itself)
- Back where you were, nothing lost
- The first real result
Your coding agent says what changed. EveryRole proves it.
Claude Code or Cursor describes the change in plain words. EveryRole plans every path that proves it, plus the variants that usually break (a refresh after signing in, a button pressed twice), runs them with a screenshot per step, and keeps them as tests after the merge. Indie, Pro and Team.
# connect it once, in Claude Code
claude mcp add --transport http \
everyrole http://staging.everyrole.dev/mcp \
--header "Authorization: Bearer $KEY"Five test results. Each one says what to do next.
Pass or fail comes from checks on the loaded page: the text it shows, the address it reached, a button that is there.
The page showed what the test expects, as that kind of user.
Nothing to do. A run where nothing changed sends no alert.
Your app didn’t do what the test expects. The only red result.
An alert on the Alerts page, and by email or Slack on Indie, Pro and Team, with the step it stopped at, the screenshot and the replay.
Your app worked, but the test asked for something that can’t happen.
EveryRole suggests the fix to the test. You approve it or keep the old check.
A problem on our side, not in your app: the network failed, a browser stopped answering.
It costs no credits, never alerts you, and runs again next time.
Something it needs failed first, usually signing in as that kind of user.
The run says which sign-in failed, so you fix the test login, not each test.
After every deploy, and every morning.
Your deploy calls a private link when it finishes, and the new version is tested as every kind of user. A daily run catches what breaks without a deploy.
The ready-to-paste snippets for GitHub Actions, Vercel, Netlify and any pipeline are in the docs.
# .github/workflows/everyrole.yml # tests production after each successful deploy (Vercel and Netlify report theirs to GitHub) name: EveryRole on: deployment_status jobs: test: if: >- github.event.deployment_status.state == 'success' && github.event.deployment_status.environment == 'Production' runs-on: ubuntu-latest steps: - run: >- curl -fsS -X POST "${{ secrets.EVERYROLE_DEPLOY_HOOK }}" -d "commit=${{ github.sha }}"
# Pro, Team: also test each preview deploy at its own address # (on other plans an address other than your app's is refused: use the first tab) name: EveryRole on: deployment_status jobs: test: if: github.event.deployment_status.state == 'success' runs-on: ubuntu-latest steps: - run: >- curl -fsS -X POST "${{ secrets.EVERYROLE_DEPLOY_HOOK }}" -d "base_url=${{ github.event.deployment_status.environment_url }}" -d "commit=${{ github.sha }}"
# Site settings, Deploy notifications: add an outgoing webhook # for "Deploy succeeded" with your deploy link as the URL http://staging.everyrole.dev/hooks/deploy/YOUR-SECRET
# the last step of your deploy
curl -X POST \
http://staging.everyrole.dev/hooks/deploy/YOUR-SECRET
- After every deployTwo deploys in a row while a run waits start one run, on the newest version.Indie, Pro and Team. Preview and staging deploys: Pro and Team.
- Every day at the hour you pickIn your own time zone, on every plan.
- Alerts only when something changesA test that broke or needs updating, or one that works again. Always on the Alerts page in the app, and a check-up email that proves your apps are watched: weekly on every plan.Email and Slack alerts, and a daily or only-when-something-changes check-up email: Indie, Pro and Team.
Start free. Pay when it has proved itself.
Compare plans and estimate your monthFree
- 300 credits a month
- 1 app, 1 person
- 2 kinds of user per app, plus the visitor
Indie
- 2,000 credits a month
- 3 apps, 1 person
- 4 kinds of user per app, plus the visitor
Pro
- 8,000 credits a month
- 10 apps, 3 people
- 8 kinds of user per app, plus the visitor
Team
- 25,000 credits a month
- 30 apps, 10 people
- Any number of kinds of user per app
You see what a run costs before anything is spent, and anything we couldn’t check is free.
See your own app checked, page by page.
The first look is free and needs nothing but the address. You see your pages before you set anything up.
Already have an account? Sign in