Looking to manually trigger tests from CI/CD workflows? See GitHub Actions instead.
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
1
Install GitHub App
Go to Settings → Organization → Connections and add the GitHub App connection. Follow the OAuth flow to grant access to your repositories.
2
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.
3
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:
- 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 }}
4
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.
5
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
Need manual control? See GitHub Actions for triggering specific test plans, testing preview deployments with environment overrides, or on-demand exploratory testing via
@qatech mentions.