Integration modes:
- AI exploratory (this page): Automatic AI-powered PR reviews - GitHub only
- API-driven: Manual test plan triggers via GitHub Actions or GitLab CI
What It Does
| Feature | Description |
|---|---|
| ✅ Intelligent Test Selection | AI semantically matches PR changes to relevant tests (typically 5-15 tests selected) |
| ✅ Gap-Only Test Generation | Creates 1-3 tests only when coverage gaps exist; most PRs create zero new tests |
| ✅ Persistent Test Suite | Auto-generated tests become permanent regression tests for future PRs |
| ✅ Preview Environment Testing | Tests against PR preview deployments |
| ✅ Approval/Rejection | Posts reviews with pass/fail verdicts |
| ❌ Manual Control | Fully autonomous - use GitHub Actions for manual test selection |
| ❌ Backend-Only Testing | Requires UI access - can’t test microservices without frontend |
How PR Reviews Work
- Verdict: Pass/fail/unable to verify
- What was tested: Description of coverage
- Results summary: Patterns and themes
- Test details: Table with individual test results
Test Selection and Creation
How Tests Are Selected
The agent uses AI to semantically match PR changes to test goals - not keyword matching. Example: PR changes checkout payment flow- Runs ALL tests it determines are relevant (no arbitrary limits)
- Only considers tests with
status='enabled' - More intelligent than running all tests every time
When Tests Are Created
Tests are created only when coverage gaps exist, such as when you’re developing a new feature not yet covered by your testing suite.| PR Type | Existing Tests Selected | New Tests Created | Total |
|---|---|---|---|
| Bug fix in login | 3-7 | 0 (already covered) | 3-7 |
| Small feature | 5-10 | 1-2 (fill gaps) | 6-12 |
| Major feature | 15-25 | 3-5 (new functionality) | 18-30 |
| Refactor | 10-20 | 0 (no new behavior) | 10-20 |
| Docs/infra only | 0 | 0 (untestable via UI) | 0 |
- Stay in your suite labeled ‘ephemeral’
- Available for future PRs
- Manage in Settings → Test Cases (filter by ‘ephemeral’ to find them)
How to Set It Up
Install GitHub App
Go to Settings → Organization → Connections and add the GitHub App connection. Follow the OAuth flow to grant access to your repositories.
Configure Repository
Navigate to Settings → Integrations and select the repository you want to enable PR reviews for.PR reviews are enabled automatically once you select a repository.Optional: Add review context to guide the agent (e.g., “Focus on security vulnerabilities” or “Validate accessibility standards”). This appears in the integration settings.
Configure Preview Deployments (if needed)
If you use Vercel, Netlify, Render, Railway, or Fly.io, your preview deployments are detected automatically - skip to step 4.For CircleCI, Jenkins, GitLab CI, or custom CI/CD:QA.tech detects preview deployments using GitHub’s Deployments API. Your CI/CD needs to create deployment records after deploying.What QA.tech expects:
QA.tech automatically creates preview environment records in your project when it detects your preview deployments (from Vercel, Netlify, etc.). Your CI/CD platform handles the actual deployment - QA.tech just tests against the preview URLs. For more information, see Preview Environments.
- GitHub deployment created for the PR commit SHA
- Deployment status set to
success - Status includes
target_urlfield with your preview URL
- Create deployment with commit SHA and environment name
- Create deployment status with
state: "success"andtarget_url: "https://your-preview-url.com"
- CircleCI Environment Variables - Use
$CIRCLE_SHA1,$CIRCLE_PROJECT_USERNAME,$CIRCLE_PROJECT_REPONAME - GitLab CI/CD Variables - Use
$CI_COMMIT_SHA,$CI_PROJECT_NAMESPACE,$CI_PROJECT_NAME - Jenkins Credentials - Use
$GIT_COMMITand custom variables - GitHub Actions - Use
${{ github.sha }},${{ github.repository_owner }}
Map Environments (optional)
If you have multiple Applications (e.g., frontend + backend), map GitHub deployment environments to the correct QA.tech Applications.How it works:
- Your CI/CD deploys a PR and creates a GitHub environment (e.g., “Preview” or “pr-123”)
- QA.tech detects the deployment
- Tests run using the mapped Application’s URL from that environment
Without GitHub deployments, QA.tech can’t test against PR-specific URLs and will use your default environment.
Create a Pull Request
Once configured, the agent automatically runs on PRs:
- Detects code changes when PRs are opened or updated
- Determines which tests are relevant
- Creates new tests for untested functionality
- Runs all relevant tests against the PR preview
- Posts a review with approval or decline based on results
Common Questions
Will auto-generated tests pollute my test suite? No. The agent only creates tests for coverage gaps - most PRs (bug fixes, refactors) create zero new tests. Even major features typically add 3-5 focused tests. The system is self-limiting: better coverage → fewer gaps → less generation. Can I control which tests run? The GitHub App is fully autonomous. For manual test selection, use GitHub Actions instead. You can use both: automatic PR reviews + manual deep testing on-demand. PR reviews aren’t posting - what should I check?- Verify GitHub App is installed and has repository access
- Check repository is configured in QA.tech Settings → Integrations
- Ensure PR has user-facing changes (docs/infra-only PRs are skipped)
- Map GitHub environments to Applications in Settings → Integrations → GitHub App
- Verify your CI/CD creates GitHub deployment records
- Check environment names match between GitHub and QA.tech
- Add review context with specific guidelines in integration settings
- Update existing tests to better cover the functionality
- The agent learns from your existing test patterns
Related Documentation
- CI/CD Integration Overview - Learn about integration modes and capabilities
- GitHub Actions - API-driven testing with manual control over test plans
- Test Plans - Organize tests for API-driven runs