QualityPilot

Platform

Troubleshooting

The questions we get most often, with the actual checks that fix them. Read top-down — the order roughly matches how often each issue surfaces.

My run isn't showing up on the dashboard

  1. Search your CI logs for [qlens]. If you see no output at all, the reporter isn't loading — re-check jest.config.js or playwright.config.ts.
  2. If you see [qlens] skipping upload — no QLENS_API_KEY, the env var isn't reaching the runner.
  3. If you see [qlens] upload failed (401), the key has been rotated or revoked. Generate a new one at /dashboard/keys.
  4. If you see [qlens] uploaded N tests, the run reached us. Refresh /dashboard; if it's still missing after 30s, check the status page.

Auto-fix is on but no PRs are opening

This usually has one of three root causes:

  • Confidence floor too high. Pro plans default to 7. If your repo's failures are noisy, most proposals will land at 5–6 and get dropped. Lower the floor incrementally and watch Proposed but skipped on the dashboard.
  • Daily cap reached. Pro is 5 PRs/day per repo, Team is 25. Hit the cap and remaining proposals queue silently until tomorrow.
  • GitHub App not installed. Without the app installed on the repo, we have no permission to open a PR. Re-check the install status from /dashboard/settings.

Webhook receiver returns 401

Almost always: signature mismatch. Three things to verify, in order:

  1. You're hashing the raw request body, not the parsed JSON. Express's body-parser rewrites object key order — verify before parsing.
  2. The shared secret matches. Rotate via /dashboard/settings; old secrets keep working for 24h to give you a window.
  3. You're using the literal header name X-QLens-Signature, and treating the value as sha256=<hex> (strip the prefix before comparing).

Working sample code is on the security page.

Slack notifications aren't firing

  • Open /dashboard/settings and confirm the Slack webhook URL hasn't expired (Slack rotates incoming-webhook URLs when channels are deleted/recreated).
  • Check the per-event toggles — Slack is split into fix opened, fix merged, and regression channels. Silence on one doesn't mean silence on all.
  • Click Send test notificationin settings. If the test fires but real events don't, the issue is upstream — most likely a confidence-floor or daily-cap drop.

Confidence is consistently low across all proposals

Three usual culprits, easy to check:

  • Tiny test files.If your tests don't import the code under test (or import only mocked versions), the proposer has no signal to work with.
  • Missing source upload. Make sure sendCases: true is in your reporter config — without per-case data we can't locate the failing source.
  • Truly hard failures. Some bugs are race conditions in third-party libraries — those deserve to score low. Better to skip than to open a junk PR.

Still stuck?

Open an issue on GitHub with your run URL (no secrets), or write us via the contact form. We read everything.