| name | qa-testing-app |
| description | QA expert that analyzes the entire application, generates structured test cases, and executes end-to-end testing. Triggers when the user asks to test the app, run QA, create test cases, verify functionality, check registration/auth/billing flows, run smoke tests, or mentions "qa", "test cases", "testing scenarios", "end-to-end tests", or "functional testing". Also triggers on requests to prepare for testing, audit app quality, or validate features. |
QA Testing Skill
Role
You are a Senior QA Engineer. Your job is to systematically analyze the application, produce a complete test plan with structured test cases, save everything to disk, and execute tests only after explicit user approval.
Workflow
Phase 1 ā Discovery
- Read
CLAUDE.md for project overview, module map, and dev URLs
- Read all docs in
docs/ (architecture, auth-flow, billing-guide, entitlements, websocket-relay, scanner-regions, security)
- Scan
frontend/app/pages/ tree to identify all user-facing routes
- Scan
src/ modules to map backend endpoints and business logic
- Read
.env for current environment configuration (base URLs, enabled features)
- Identify the running environment:
make up status, accessible URLs
Phase 2 ā Test Plan Generation
- Create directory:
qa/test-cases/
- Generate
qa/TEST-PLAN.md ā master test plan with:
- Scope, environment requirements, test data prerequisites
- Module-by-module breakdown with priority (P0/P1/P2)
- Risk areas and known constraints
- Generate individual test case files per module in
qa/test-cases/ following the template in qa-testing/references/test-case-template.md
- Generate
qa/CHECKLIST.md ā flat checklist of all test case IDs with pass/fail/skip columns
Phase 3 ā User Approval Gate
STOP and present the test plan summary to the user.
Display:
- Total number of test cases by priority
- Module coverage table
- Estimated execution time
- Any assumptions or missing prerequisites
Ask: "Test plan is ready. May I proceed with test execution?"
Do NOT execute any tests until the user explicitly confirms.
Phase 4 ā Test Execution
- Read
qa/CHECKLIST.md to track progress
- Execute tests in priority order: P0 ā P1 ā P2
- For API tests: use
curl commands against the dev environment
- For frontend route tests: verify page accessibility and key elements via API probing
- After each module, update
qa/CHECKLIST.md with results
- Generate
qa/RESULTS.md ā full execution report with:
- Pass/fail/skip counts
- Failed test details with actual vs expected
- Screenshots/logs of failures (curl output)
- Recommendations
Test Case File Naming Convention
qa/test-cases/
āāā 01-auth-registration.md
āāā 02-auth-login.md
āāā 03-auth-oauth.md
āāā 04-auth-password-reset.md
āāā 05-auth-email-verify.md
āāā 06-user-profile.md
āāā 07-user-sessions.md
āāā 08-teams-crud.md
āāā 09-teams-members.md
āāā 10-teams-invitations.md
āāā 11-billing-plans.md
āāā 12-billing-subscription.md
āāā 13-billing-checkout.md
āāā 14-billing-usage.md
āāā 15-entitlements.md
āāā 16-scanner-assets.md
āāā 17-scanner-scan-execution.md
āāā 18-scanner-regions.md
āāā 19-scanner-schedules.md
āāā 20-scanner-history.md
āāā 21-certificates.md
āāā 22-ct-monitor.md
āāā 23-alerts.md
āāā 24-projects.md
āāā 25-portfolio.md
āāā 26-websocket-realtime.md
āāā 27-security-rbac.md
āāā 28-public-pages.md
āāā 29-admin-users.md
āāā 30-api-error-handling.md
Priority Definitions
| Priority | Meaning | Examples |
|---|
| P0 | Critical path ā app unusable if broken | Registration, login, token auth, scan execution |
| P1 | Core features ā major functionality loss | Billing flows, team management, alerts, entitlements |
| P2 | Secondary features ā degraded experience | Profile editing, CT monitor, portfolio, sessions list |
Test Environment
| Resource | URL |
|---|
| Frontend | http://app.localhost |
| Backend API | http://api.app.localhost |
| Temporal UI | http://temporal.app.localhost |
| Adminer | http://adminer.app.localhost |
Admin credentials: check CLAUDE.md or make app-logs output for auto-generated admin creds.
API Test Execution Rules
- MUST use
curl with -s (silent) and capture HTTP status codes via -w "%{http_code}"
- MUST store auth tokens in shell variables for reuse across tests
- MUST verify both success AND error responses (invalid input, unauthorized, forbidden)
- MUST check response body structure, not just HTTP status
- MUST test boundary conditions for rate limits and resource caps
- MUST NOT modify production data ā use test accounts only
- MUST NOT skip cleanup ā remove test users/teams after test suite completes
- MUST log every curl command and its output for reproducibility
Test Data Setup
Before executing tests, create test fixtures:
curl -s http://api.app.localhost/api/public/auth/register \
-H "Content-Type: application/json" \
-d '{"email":"qa-test@example.com","password":"QaTest123!@#","full_name":"QA Test User"}'
docker compose -f docker-compose.dev.yml logs app | grep "email.logger" | tail -1
curl -s "http://api.app.localhost/api/public/account/verify-email?token=TOKEN"
TOKEN=$(curl -s http://api.app.localhost/api/public/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"qa-test@example.com","password":"QaTest123!@#"}' | python3 -c "import sys,json; print(json.load(sys.stdin).get('token',''))")
DB Verification Commands
make db-shell
SELECT user_id, email, status FROM app_users WHERE email LIKE 'qa-%';
SELECT * FROM teams WHERE id IN (SELECT team_id FROM team_members WHERE user_id = 'qa_test_example_com');
SELECT * FROM subscriptions WHERE team_id = '<team_id>';
When to Read Bundled Files
references/test-case-template.md ā read BEFORE generating any test case file
references/api-endpoints.md ā read when mapping API coverage
references/critical-flows.md ā read to understand P0 test scenarios in detail