Docs · Troubleshooting
Troubleshooting
Common issues and solutions for Exolar integration. Can't find your issue? Open an issue on GitHub.
Quick Diagnostic
First, check your CI logs for these messages:
# ✅ Good - Reporter initialized
[Exolar] Initialized - will send results to dashboard
[Exolar] Sending 15 results to dashboard...
[Exolar] Results sent successfully - execution_id: 123
# ❌ Bad - API key missing
[Exolar] EXOLAR_API_KEY not set, reporter disabled
# ❌ Bad - Auth failed
[Exolar] Failed to send results: 401 UnauthorizedNo results appearing in dashboard
Symptoms
- •Tests run successfully but nothing shows in Exolar
- •No errors in CI logs
- •Dashboard shows empty or stale data
Solutions
Check that EXOLAR_API_KEY is properly set in your GitHub Secrets and passed to the test job.
# In your workflow
env:
EXOLAR_API_KEY: ${{ secrets.EXOLAR_API_KEY }}Look for the Exolar reporter initialization message in your CI output.
[Exolar] Initialized - will send results to dashboardMake sure your API key starts with 'exolar_' and hasn't been revoked.
Results are scoped to the organization that owns the API key. Make sure you're viewing the correct organization in the dashboard.
Authentication failed / 401 error
Symptoms
- •CI logs show 'Unauthorized' or '401' error
- •Results not being uploaded
Solutions
Go to Settings > API Keys and create a fresh key.
Replace the old secret with the new API key in your repository settings.
Ensure the secret name matches exactly: EXOLAR_API_KEY
Screenshots/videos not uploading
Symptoms
- •Test results appear but no artifacts
- •Artifact links missing or broken
- •Logs show 'Skipping artifact'
Solutions
Add artifact capture settings to your playwright.config.ts:
use: {
screenshot: "only-on-failure",
video: "retain-on-failure",
trace: "retain-on-failure",
}Default limit is 5MB. Increase if needed:
[exolar, {
apiKey: process.env.EXOLAR_API_KEY,
maxArtifactSize: 10 * 1024 * 1024, // 10MB
}]Make sure you haven't disabled artifact uploads:
[exolar, {
apiKey: process.env.EXOLAR_API_KEY,
includeArtifacts: true, // default
}]Reporter disabled / not running in CI
Symptoms
- •No Exolar messages in CI logs
- •Reporter works locally but not in CI
Solutions
The reporter checks for CI=true or GITHUB_ACTIONS=true. Make sure these are set.
# Should be automatic in GitHub Actions, but you can force it:
env:
CI: trueEnsure disabled is not set to true:
[exolar, {
apiKey: process.env.EXOLAR_API_KEY,
disabled: false, // or remove this line
}]Run with CI=true to test:
CI=true npx playwright testWhere are local AI context files?
Symptoms
- •Want to use AI-enriched failure context locally
- •Looking for JSON files for debugging
Solutions
When tests fail, the reporter creates JSON files in:
test-results/ai-failures/These files contain structured error context that AI coding assistants can use for intelligent debugging. Point your AI assistant to these files when asking about test failures.
CI analysis webhook not firing
Symptoms
- •No webhook deliveries in Settings > Webhooks > Recent Deliveries
- •ci.run.failed event never received
- •Analysis never triggers after a failed run
Solutions
Go to Settings > Webhooks and click your webhook. The Recent Deliveries tab shows every attempt and the HTTP response code.
Exolar must be able to POST to your URL. Use a service like ngrok for local testing:
ngrok http 3000
# Use the ngrok HTTPS URL as your webhook endpointEnsure you subscribed to ci.run.failed (not just ci.run.fixed). You can update this in Settings > Webhooks.
If you set a branch_filter when creating the webhook, only runs on that branch will trigger it. Remove or update the filter if needed.
CI analysis returns empty or low-confidence result
Symptoms
- •classification is MANUAL_REVIEW
- •confidence is below 0.70
- •action_plan is null or missing
Solutions
The reporter logs the execution_id after a successful upload. Use this for more accurate analysis:
# Good: use the reporter execution_id
curl -X POST .../api/ci/analyze \
-d '{"execution_id": "exec_abc123"}'
# Fallback: use GitHub run_id (less context)
curl -X POST .../api/ci/analyze \
-d '{"run_id": "${{ github.run_id }}"}'Go to Settings > AI Embeddings and check embedding coverage. If coverage is low, trigger a backfill so the classifier has historical context.
Classification accuracy improves with more historical data. After 10+ runs, confidence scores typically stabilize.
Auto-heal classified as HEALABLE but no PR was opened
Symptoms
- •analysis returns classification: HEALABLE
- •No draft PR visible in the repository
- •action_plan is present but nothing happened
Solutions
Ensure autoHeal is enabled in your reporter config:
[exolar, {
apiKey: process.env.EXOLAR_API_KEY,
autoHeal: {
enabled: true,
confidenceThreshold: 0.85,
},
}]If confidence is below your threshold (default 0.85), the PR will not be opened. Lower the threshold or wait for more data.
At most 5 auto-heal PRs are opened per repo per day. Check your repository for recently opened draft PRs from the exolar bot.
Results showing wrong branch name
Symptoms
- •Branch shows as 'merge' or PR number
- •Expected branch name not appearing
Solutions
The reporter prefers GITHUB_HEAD_REF (the actual source branch for PRs) over GITHUB_REF_NAME. If you're still seeing issues, check your workflow is running on the PR event.
GITHUB_REF_NAME is used, which should be the correct branch name.
Still need help?
If you can't find a solution here, please:
- Check your CI logs for any error messages
- Verify your API key is correctly set
- Open an issue on GitHub with:
- Your reporter configuration (without the API key)
- Relevant CI logs
- Playwright version