Common Issues
Troubleshooting by area: sign-in, scans, AI tests, runs, visual regression, notifications, billing, CI/API, performance.
Common Issues
If something's not behaving the way you expect, check here first. The list is organized by where in the workflow you'd encounter the issue. If your problem isn't covered, email support with your project ID and run/scan ID — that's enough for us to start digging.
Sign in & account
I forgot my password.
Use /forgot-password. Reset link is valid for 1 hour. If your account uses SSO, you don't have a password — sign in via your IdP instead.
2FA codes are being rejected.
Phone clock drift is the most common cause. Set your phone to network-provided time. We accept 30 seconds of drift; anything beyond rejects.
I lost my authenticator and backup codes.
Email support with proof of identity. We can disable 2FA on your account so you can sign back in. Manual process, takes time.
SSO redirect loop.
Either your IdP cert rotated and AegisRunner has the old one, or audience/entity ID mismatch. Owners can always sign in directly to fix the SSO config. See SSO Setup.
Scans
The scan finds fewer pages than I expected.
- You hit your plan's max-pages cap. Banner on the result page tells you so.
- Link depth was set too low (default is 5). Bump it.
- Auth-gated pages aren't reachable without a login script.
robots.txtexclusions if you have Respect Robots.txt enabled.- Some single-page apps' navigation isn't standard
<a>tags — try enabling Submit forms too.
The scan finds too many pages — duplicates or pagination bloat.
- Add exclude patterns for query strings:
.*\?(page|sort|filter)=.*. - Pagination is intentionally capped at 20 pages by default to avoid infinite-list situations.
- Use Single Page mode if you only care about one URL.
"Bot block detected" — Cloudflare or similar.
Some sites block automated traffic. AegisRunner uses stealth browsers, but defenses vary. Two paths: allowlist us in your WAF for staging, or configure a bypass token under Test Environment → Tokens.
Scan never finishes / stuck in "running".
Most scans finish in 1–10 minutes. If a scan is stuck for 30+ minutes, the underlying browser likely crashed (rare on small sites, more common on 50+ page scans). Cancel and retry; if it persists, contact support.
Scan login fails.
- Selectors in the login script no longer match. Open the script under Project Config → Test Environment → Login and update them.
- Tokens (
{{LOGIN_USER}},{{LOGIN_PASSWORD}}) aren't set or have wrong values. - Captcha on login. Use a bypass token or pre-auth cookies instead.
AI test generation
"AI tests cover 0 of N pages" or coverage seems too low.
- Free plan: only the entry page gets full AI tests. Other pages get smoke fillers.
- AI generation runs after the scan; for large scans, coverage rises over the next minute or two.
- Pages with no actionable elements (pure text) get only the smoke fallback.
- If coverage is stuck after 10 minutes on a large scan, AI generation may have errored — contact support.
Generated tests look generic / not what I wanted.
Use a custom prompt under Project Config → AI Config → Custom prompt. Examples that work: "Always assert visibility of the cart badge", "Never assert on user-generated content". Then regenerate.
Tests use bad locators that break easily.
Enable Accessibility snapshots (Pro+) on the scan. AI then prefers role+text locators that survive class renames.
Test runs
"Element not found" on every step.
- The base URL points to the wrong environment (staging when you wanted prod, or vice versa).
- Login script is failing silently — check the run logs.
- Page didn't fully load before tests started — bump waits.
Tests pass locally but fail in AegisRunner.
- Stage mismatch — local probably has different data than the URL AegisRunner is hitting.
- Anti-bot middleware blocks AegisRunner but not your local browser.
- Auth: cookies that work locally aren't valid for AegisRunner.
"Element not found" — but auto-heal didn't fire.
Auto-heal needs accessibility snapshot data, which requires the page to fully load. If the navigation timed out, heal had nothing to match against. Check the run log for navigation errors right before the failed step.
Run is stuck in "queued".
- You're at your concurrent-runs cap. Other runs in flight; this one waits.
- If it's the only run and it's been queued for 5+ minutes, contact support.
Tests redirect to /login.
Session expired or wasn't set up. AegisRunner has auto-login fallback if the project has a login script. If the test is intentionally testing the unauthenticated state, tag with negative, unauthenticated, or *-negative to suppress auto-login.
Visual regression
Every step shows a diff.
Browser or viewport mismatch with the baseline. Check both. If intentional, accept all to seed new baselines.
Diff on a region with timestamps or other dynamic content.
Visual regression doesn't currently support per-region masking. Workarounds: raise the project's diff threshold, or accept the diff once the dynamic content stabilizes for a known-good run.
Notifications
Slack/Discord/Teams isn't getting messages.
- Click Test on the channel — does the test message land?
- Check the per-channel filter: maybe only
run_failedis enabled but the runs are passing. - Webhook URL might be revoked on the Slack/Discord/Teams side.
Email isn't arriving.
- Check spam.
- Email comes from
noreply@aegisrunner.com. Whitelist if your filter is aggressive. - For free scans specifically, check Free Scan — there's an emailed_at timestamp visible in the DB if support needs to verify.
Billing
I was charged tax I didn't expect.
Most likely missing or invalid tax ID. Add a valid one under Billing → Tax Settings — see Usage & Billing.
Invoice currency isn't what I expected.
Paddle settles in your local currency where supported. Pricing is shown in USD; your invoice may be in EUR / GBP / INR / etc. Both are correct — what differs is display.
CI / API
CI trigger returns 401.
Token is invalid or revoked. Generate a new one under Project → Integrations → CI/CD and update the CI secret.
CI trigger returns 402.
You're at your monthly run or scan cap. Upgrade or wait for the cycle reset.
GitHub PR comment isn't appearing.
Token has insufficient scope. Need pull_requests: write for App tokens, repo for classic PATs.
Rate limited (429).
Honor Retry-After; back off exponentially. See API Overview for limits per plan.
Performance
Scans take a long time.
Larger scans use parallel browser contexts and finish faster than they would sequentially, but big sites with deep navigation are inherently slow. Use Max pages to cap, or Single Page mode for one-URL refreshes.
Test runs are slow.
- Long flow tests are inherently slow. Split into smaller tests.
- Visual regression adds ~1s per step (screenshot + diff). Disable for tests where it doesn't add value.
- Auto-heal is fast but adds latency on locator drift. Update locators to remove repeated heal.
Still stuck?
Email support@aegisrunner.com with:
- Your project ID (visible in URLs).
- The relevant scan or run ID.
- What you expected vs what happened.
- Any error messages from the UI.
Pro and above get faster-response support. Business+ have access to chat.