This guide helps you diagnose and resolve common issues when using QA Studio.
Symptoms:
- CloudFront URL returns 404 or Access Denied
- Page loads but shows blank screen
Solutions:
-
Verify deployment completed successfully:
cd web-app npm run deploy -
Check CloudFront distribution status:
- Log into AWS Console
- Navigate to CloudFront
- Verify distribution is "Deployed" (not "In Progress")
-
Clear browser cache:
- Hard refresh: Ctrl+Shift+R (Windows/Linux) or Cmd+Shift+R (Mac)
- Or clear browser cache completely
-
Check S3 bucket:
- Verify frontend files were uploaded to S3
- Check bucket policy allows CloudFront access
Symptoms:
- Redirected to Cognito but login fails
- "User does not exist" error
- Infinite redirect loop
Solutions:
-
Check Cognito user exists:
- Log into AWS Console → Cognito
- Verify user exists in user pool
- Check user status is "CONFIRMED"
-
Reset password:
- Use "Forgot password" flow
- Or reset via AWS Console
-
Verify Cognito configuration:
- Check callback URLs match CloudFront URL
- Verify OAuth scopes are configured
- Check app client settings
-
Clear browser cookies:
- Cognito stores session in cookies
- Clear cookies for your domain
Symptoms:
- Test starts but never completes
- Test fails immediately
- No artifacts generated
Solutions:
-
Check ECS task logs:
- AWS Console → ECS → Clusters
- Find your worker task
- View CloudWatch logs
-
Verify SQS queue:
- Check messages are being processed
- Look for dead letter queue messages
-
Check Nova Act configuration:
- Verify Bedrock model access
- Check IAM permissions for worker role
- Verify VPC configuration if using private network
-
Review test steps:
- Check for invalid instructions
- Verify URLs are accessible
- Test manually in browser first
Symptoms:
- Videos/screenshots show "Access Denied"
- Artifacts missing from execution details
Solutions:
-
Check S3 bucket permissions:
- Verify bucket policy allows CloudFront access
- Check CORS configuration
-
Verify presigned URLs:
- URLs expire after 1 hour
- Refresh the page to get new URLs
-
Check artifact upload:
- Review worker logs for upload errors
- Verify S3 bucket exists and is accessible
Symptoms:
pip installfails with errors- Import errors when running commands
Solutions:
-
Check Python version:
python3 --version # Should be 3.11+ -
Use virtual environment:
python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -e ./qa-studio-cli
-
Install runner dependencies (for local execution):
pip install -e "./qa-studio-cli[runner]" -
Check for conflicting packages:
pip list | grep qa-studio # Uninstall old versions if found pip uninstall qa-studio-cli
Symptoms:
qa-studio loginfails- Browser doesn't open
- "Invalid credentials" error
Solutions:
-
Verify configuration:
qa-studio status # Check API URL, Cognito domain, client ID -
Reconfigure:
qa-studio configure # Enter correct values -
Check network connectivity:
# Test if you can reach Cognito curl https://{domain}.auth.{region}.amazoncognito.com/.well-known/openid-configuration -
Clear cached tokens:
rm ~/.qa-studio/tokens.json qa-studio login -
Check firewall/proxy:
- Ensure outbound HTTPS (port 443) is allowed
- Configure proxy if needed
Symptoms:
qa-studio runcommand fails- "Module not found" errors
- Browser fails to start
Solutions:
-
Install runner dependencies:
pip install -e "./qa-studio-cli[runner]" -
Check Nova Act SDK installation:
python3 -c "import nova_act; print(nova_act.__version__)" -
Verify Playwright installation:
playwright install chromium
-
Check AWS credentials (for Bedrock access):
aws configure list # Ensure credentials are configured -
Enable debug logging:
qa-studio run --usecase-id test-123 --verbose
Symptoms:
qa-studio: command not found
Solutions:
-
Verify installation:
pip show qa-studio-cli
-
Check PATH:
# Find where pip installs scripts python3 -m site --user-base # Add to PATH if needed export PATH="$PATH:$(python3 -m site --user-base)/bin"
-
Use python -m:
python3 -m qa_studio_cli --help
-
Reinstall in editable mode:
pip install -e ./qa-studio-cli
Symptoms:
- API requests return 401
- "Invalid token" error
Solutions:
-
Re-authenticate:
qa-studio logout qa-studio login -
Check token expiration:
- Access tokens expire after 1 hour
- CLI automatically refreshes tokens
- If refresh fails, login again
-
Verify OAuth client:
- Check client exists in web UI
- Verify client has required scopes
Symptoms:
- API requests return 403
- "Missing required scopes" error
Solutions:
-
Check user permissions:
- Verify user has access to the resource
- Check Cognito group memberships
-
Verify OAuth scopes:
- For CLI: User must have appropriate permissions
- For API clients: Client must have required scopes
-
Contact administrator:
- Request access to the resource
- Or create new OAuth client with correct scopes
Symptoms:
- Resource not found errors
- Invalid ID errors
Solutions:
-
Verify resource exists:
- Check ID is correct
- Verify resource wasn't deleted
- Check you have access to the resource
-
Check API endpoint:
qa-studio status # Verify API URL is correct
Symptoms:
- API returns 500 error
- Unexpected errors
Solutions:
-
Retry the request:
- Temporary issues often resolve automatically
-
Check CloudWatch logs:
- AWS Console → CloudWatch → Log Groups
- Look for Lambda function errors
-
Contact support:
- Provide error details
- Include request ID if available
Symptoms:
- "Session failed to reach RUNNING state after 300 seconds"
- "Unknown error with device"
Solutions:
-
Try a different device: Some devices may be temporarily unavailable. Use auto-selection (leave device_arn empty) or pick a device marked "Highly available" in the device picker.
-
Check Device Farm service status: Visit the AWS Console → Device Farm → us-west-2 to verify the service is operational.
-
Verify app binary compatibility: Ensure the
.ipa/.apkis compatible with the selected device's OS version. Older devices may not support newer app formats.
Symptoms:
- "App with bundle identifier 'com.example.app' unknown"
- App fails to launch after session starts
Solutions:
-
Verify app binary was uploaded: Check that the use case has an app binary uploaded via the web UI, or use
--app-pathwith the CLI. -
Check app identifiers: Ensure
app_package/app_activity(Android) orbundle_id(iOS) match exactly what's in the app binary. -
Re-upload the binary: The Device Farm upload may have expired. Upload a fresh copy via the web UI or CLI.
Symptoms:
- "Failed to load recording" in the UI
- Recording section shows error after test completes
Solutions:
-
Wait 5-10 minutes: Device Farm recordings are downloaded asynchronously. The recording Lambda retries every 3 minutes for up to 30 minutes.
-
Check the recording download Lambda logs: In CloudWatch, look for the
download_device_farm_recordingLambda to see if it's retrying or encountered an error. -
Verify IAM permissions: The recording Lambda needs
devicefarm:ListArtifactsanddevicefarm:GetRemoteAccessSessionpermissions.
Symptoms:
- "iOS mobile: type fallback failed"
- Text input doesn't work on iOS devices
Solutions:
-
Retry the test: This can be a transient Appium/XCUITest issue.
-
Simplify the step instruction: Instead of "Type 'JFK' in the search field", try "Tap the search field and enter JFK".
-
Check the device OS version: Some XCUITest commands behave differently across iOS versions.
Symptoms:
- Tests take longer than expected
- Timeouts occur frequently
Solutions:
-
Check target application performance:
- Test manually in browser
- Verify application is responsive
-
Optimize test steps:
- Remove unnecessary waits
- Use more specific selectors
- Reduce number of steps
-
Check network latency:
- Test from same region as target application
- Verify network connectivity
-
Review Nova Act model:
- Try different model if available
- Check Bedrock service limits
Symptoms:
- Unexpected AWS bills
- High ECS or Bedrock costs
Solutions:
-
Review execution frequency:
- Reduce unnecessary test runs
- Use test suites instead of individual tests
-
Optimize test suites:
- Remove duplicate tests
- Combine similar tests
-
Check artifact retention:
- Configure S3 lifecycle policies
- Delete old artifacts
-
Monitor usage:
- Set up CloudWatch alarms
- Review Cost Explorer regularly
Web Application:
- Open browser developer console (F12)
- Check Console tab for errors
- Check Network tab for API requests
CLI:
qa-studio run --usecase-id test-123 --verboseWorker Logs:
- AWS Console → ECS → Tasks
- Click on task → Logs tab
- View CloudWatch logs
Successful Execution:
INFO: Fetching test steps...
INFO: Executing step 1: Navigate to login page
INFO: Step completed successfully
INFO: Executing step 2: Enter credentials
INFO: Step completed successfully
INFO: Execution completed: success
Authentication Error:
ERROR: Authentication failed: Invalid credentials
API Error:
ERROR: API request failed: 404 - Resource not found
Network Error:
ERROR: Connection timeout: Unable to reach API endpoint
- GitHub Issues: Report bugs and request features
- Documentation: Complete documentation
- AWS Support: For AWS service issues
When requesting support, include:
- Error message: Full error message from logs
- Steps to reproduce: What you were trying to do
- Environment: OS, Python version, browser
- Logs: Relevant logs with sensitive data redacted
- Configuration: API endpoint, region (no secrets!)
Example:
Subject: CLI authentication failing
Description:
I'm unable to authenticate with the CLI. The browser opens but returns an error.
Error message:
ERROR: Authentication failed: Invalid redirect URI
Environment:
- OS: macOS 14.0
- Python: 3.11.5
- CLI version: 1.0.0
Steps to reproduce:
1. Run `qa-studio configure`
2. Enter API URL and Cognito domain
3. Run `qa-studio login`
4. Browser opens but shows error
Configuration:
- API URL: https://api.example.com
- Cognito domain: myapp.auth.us-east-1.amazoncognito.com
- Client ID: 7abc123def456
I've verified:
- API URL is correct
- Cognito domain is correct
- Client ID exists in Cognito
Use the "Forgot password" link on the login page, or contact your administrator.
Yes, use qa-studio run --usecase-id test-123 --local-only
Export tests as JSON and share the file, or grant team members access to your QA Studio instance.
QA Studio uses Chromium via Playwright. Other browsers are not currently supported.
Use appropriate wait conditions in your test steps, or add explicit wait steps.
Yes, test suites execute tests in parallel automatically. For CLI, run multiple commands in separate terminals.
Configure S3 lifecycle policies to set retention period. Default is indefinite.
Yes, configure a custom domain for CloudFront in the CDK stack.
Export tests as JSON files regularly, or enable DynamoDB point-in-time recovery.
No hard limit, but we recommend keeping tests focused and under 20 steps each.