Complete guide to using the QAAI (QA AI) platform for automated E2E testing.
- Getting Started
- Creating Your First Project
- Test Generation
- Running Tests
- Analytics & Insights
- GitHub Integration
- Test Configuration
- Test Data Management
- Best Practices
- Troubleshooting
- GitHub account
- Access to QAAI platform
- Application to test (with URL)
- Sign in to QAAI using your GitHub account
- Create an organization or join an existing one
- Set up your first project
1. Navigate to "Organizations" → "New Organization"
2. Enter organization name
3. Click "Create Organization"
1. Go to "Projects" → "New Project"
2. Fill in project details:
- Name: Your project name
- Repository URL: GitHub repository URL
- Base URL: Application URL to test
3. Click "Create Project"
1. Go to Project Settings → GitHub
2. Install QAAI GitHub App
3. Configure webhook settings
4. Set up issue labels (optional)
QAAI can generate tests from multiple sources:
1. Open a Pull Request in your repository
2. QAAI automatically detects changes
3. AI generates relevant test cases
4. Review and approve generated tests
1. Navigate to Project → "Generate Tests"
2. Paste specification or requirements
3. Click "Generate"
4. Review generated test plan
5. Approve or modify tests
1. Go to Project → "Test Suites"
2. Click "New Test Suite"
3. Add test cases manually
4. Define test steps and assertions
1. Navigate to Project → "Runs"
2. Click "New Run"
3. Select test suite(s)
4. Configure run settings
5. Click "Start Run"
Tests run automatically when:
- Pull request is opened
- Pull request is updated
- Manual rerun requested
1. Go to Project Settings → "Schedules"
2. Click "New Schedule"
3. Configure cron expression
4. Select test suites
5. Save schedule
Access: Project → Analytics → Flakes
Features:
- Flake rate calculation
- Statistical confidence intervals
- Pattern detection
- Recommendations
Interpreting Results:
- High Risk (>30%): Immediate attention required
- Medium Risk (15-30%): Monitor and investigate
- Low Risk (5-15%): Keep watching
- Stable (<5%): Healthy test
Access: Project → Coverage
Features:
- Route coverage tracking
- API endpoint testing status
- Coverage by category
- Trend analysis
Using Coverage Data:
- Identify untested routes
- Prioritize critical paths
- Track coverage improvements
- Discover new endpoints
Metrics Available:
- Pass/fail rates over time
- Average test duration
- Flake rate trends
- Coverage progression
QAAI posts test results as GitHub check runs:
✓ QAAI Tests - 45/50 passed
- View detailed results
- See failed test details
- Access artifacts
Configuration:
Project Settings → GitHub → Auto-create Issues
- Enable/disable
- Set failure threshold
- Configure labels
Issue Types:
- Single test failure
- Multiple test failures
- Flaky test detection
- Manual issues
Supported Events:
pull_request- PR opened/updatedcheck_suite- Check suite requestedcheck_run- Check run rerequested
Access: Project → Settings → Retry Configuration
Options:
- Number of retries (0-5)
- Retry on failure only
- Retry delay
Recommendations:
- Start with 2 retries
- Enable "failure only" mode
- Adjust based on flake rate
Access: Project → Settings → Timeout Configuration
Settings:
- Test Timeout: Maximum time for entire test (default: 30s)
- Action Timeout: Time for individual actions (default: 10s)
- Navigation Timeout: Time for page loads (default: 30s)
Guidelines:
- Increase for slow applications
- Decrease for fast, responsive apps
- Monitor timeout failures
Parallel Execution:
✓ Enable parallel execution
Workers: 4
Browser Configuration:
Browsers: [Chromium, Firefox, WebKit]
Headless: ✓ Enabled
Trace: Detailed execution trace
- Off
- Always On
- On First Retry ✓
- Retain on Failure
Screenshots: Visual captures
- Off
- Always On
- Only on Failure ✓
Videos: Test recordings
- Off
- Always On
- Retain on Failure ✓
- On First Retry
API Endpoint: POST /api/test-data/seed
Example:
curl -X POST https://qaai.example.com/api/test-data/seed \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{
"project_id": "uuid",
"users": {
"count": 5,
"templates": ["admin", "user", "viewer"]
}
}'Creating Header Sets:
{
"name": "Bearer Token",
"headers": {
"Authorization": "Bearer test-token"
}
}Manual Cleanup:
Project → Test Data → Cleanup
- Select data types
- Set age threshold
- Confirm cleanup
Automated Cleanup:
// Before each test run
cleanup: true- Group by Feature: Create suites per feature
- Use Tags: Tag tests for easy filtering
- Prioritize: Mark critical tests
- Keep Small: Aim for focused, atomic tests
- Use Explicit Waits: Wait for elements
- Avoid Hard Delays: Use
waitForinstead ofsleep - Handle Async: Properly await async operations
- Isolate Tests: Each test should be independent
- Monitor Regularly: Check analytics weekly
- Fix High-Risk First: Prioritize >30% flake rate
- Investigate Patterns: Look for timing issues
- Add Retries Judiciously: Don't mask problems
- Start with Critical Paths: Auth, payment, core features
- Expand Gradually: Add coverage incrementally
- Track Progress: Monitor coverage trends
- Review Regularly: Update route definitions
Possible Causes:
- Environment differences
- Timing issues
- Data dependencies
Solutions:
- Check environment variables
- Increase timeouts
- Verify test data setup
- Review CI logs
Investigation Steps:
- Check flake heatmap
- Review failure patterns
- Analyze timing issues
- Verify test isolation
Common Fixes:
- Add explicit waits
- Increase timeouts
- Fix race conditions
- Improve selectors
Checklist:
- GitHub App installed
- Webhook configured
- Secrets set correctly
- Repository permissions granted
Debug Steps:
- Check webhook deliveries
- Verify signature validation
- Review API logs
- Test with manual trigger
Optimization Tips:
- Enable parallel execution
- Reduce unnecessary waits
- Optimize selectors
- Use headless mode
- Minimize artifact collection
Possible Issues:
- Routes not defined
- Logs not captured
- HAR files missing
Solutions:
- Define routes in project settings
- Enable trace collection
- Verify log output
- Check HAR file generation
All API requests require authentication:
Authorization: Bearer YOUR_TOKENGET /api/analytics/flakes?project_id={id}
GET /api/analytics/coverage?project_id={id}
POST /api/test-data/seed
Body: { project_id, users, headers, suites }
POST /api/runs
Body: { project_id, suite_ids, trigger }
- Documentation: https://docs.qaai.example.com
- GitHub Issues: https://github.com/qaai/qaai/issues
- Community: https://discord.gg/qaai
- Email: support@qaai.example.com
When reporting bugs, include:
- Steps to reproduce
- Expected vs actual behavior
- Screenshots/videos
- Test logs
- Environment details
- Flake: Test that exhibits non-deterministic behavior
- Coverage: Percentage of routes/endpoints tested
- Artifact: Test output (trace, screenshot, video)
- Suite: Collection of related test cases
- Run: Execution of one or more test suites
- Check Run: GitHub status check for PR
- Retry: Re-execution of failed test
Features:
- ✅ AI-powered test generation
- ✅ Automated PR testing
- ✅ Flake detection & analytics
- ✅ Route coverage tracking
- ✅ GitHub integration
- ✅ Test data seeding
- ✅ Configurable retry/timeout
- ✅ CI/CD pipeline
Coming Soon:
- 🔄 Multi-browser testing
- 🔄 Visual regression testing
- 🔄 Performance testing
- 🔄 API testing
- 🔄 Mobile testing
Last Updated: 2025-11-02