Every user flow, every test, every success criteria. AI tests what it can, humans verify what it can't.
The QA process follows a clear decision tree:
App Submitted
β
βΌ
βββββββββββββββββββββββ
β AI CRAWLS THE APP β β Playwright maps all pages, forms, links, interactive elements
β Maps user flows β
β Identifies states β
ββββββββββ¬βββββββββββββ
β
βΌ
βββββββββββββββββββββββ
β AI GENERATES TESTS β β For each flow: smoke, functional, edge cases
β Categorizes each: β
β β’ Can AI test? β π€β β Deterministic checks (status codes, DOM, API responses)
β β’ Needs human? β π₯β β Subjective/device-specific (UX feel, real OAuth, touch)
ββββββββββ¬βββββββββββββ
β
βΌ
ββββββ΄βββββ
β β
βΌ βΌ
ββββββββββ ββββββββββββββ
βπ€ AI β βπ₯ HUMAN β
βRuns β βTest cases β
βPlaywrightβ βsent to β
βtests β βApplause β
βlocally β βvia API β
βββββ¬βββββ βββββββ¬βββββββ
β β
βΌ βΌ
ββββββββββββββββββββββββββ
β RESULTS MERGED β
β β’ AI: screenshots + β
β pass/fail + logs β
β β’ Human: video + β
β bug reports β
ββββββββββ¬ββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββ
β AI AUTO-FIXES BUGS β β Reads bug report β patches code β deploys β re-tests
β Human re-verifies β
ββββββββββββββββββββββββββ
| AI Can Test β | Humans Must Test π§ͺ |
|---|---|
| Page loads (HTTP 200, no console errors) | Does the page look right? Visual regressions |
| DOM elements exist (buttons, inputs, links) | Are touch targets big enough on real phones? |
| API responses (correct JSON, status codes) | OAuth redirects on real mobile browsers |
| Navigation works (click β URL changes) | Smooth animations, no jank on scroll |
| Form validation (required fields, error states) | Readability β is text actually readable on a 5" screen? |
| Accessibility (ARIA, alt text, heading structure) | Screen reader actually works end-to-end |
| Performance metrics (load time, bundle size) | Perceived performance on slow 3G connections |
ClawQA.AI Platform
βββ Frontend: Next.js 14 (App Router)
β βββ Public: Homepage (/), Docs (/docs), Login (/login), Developers (/developers)
β βββ Dashboard (auth required):
β βββ /dashboard β Overview stats
β βββ /dashboard/test-cycles β Manage test cycles
β βββ /dashboard/bugs β View bug reports
β βββ /dashboard/test-plans β Test plan templates
β βββ /dashboard/analytics β Bug analytics
β βββ /dashboard/browse-tests β Tester: find tests
β βββ /dashboard/my-tests β Tester: assigned tests
β βββ /dashboard/my-bugs β Tester: submitted bugs
β βββ /dashboard/webhooks β Webhook management
β βββ /settings β User settings
β βββ /api-keys β API key management
β
βββ API: 35 endpoints
β βββ /api/auth/* β NextAuth (GitHub OAuth + Demo credentials)
β βββ /api/v1/test-cycles/* β CRUD + bugs per cycle
β βββ /api/v1/bugs/* β Bug reporting + fix submissions
β βββ /api/v1/projects/* β Project + agent management
β βββ /api/v1/test-plans/* β Templates + execution
β βββ /api/v1/webhooks/* β Webhook CRUD + delivery logs
β βββ /api/v1/auto-fix/* β Trigger + status + complete
β βββ /api/v1/escalate β Push to external QA
β βββ /api/v1/analytics β Bug analytics data
β βββ /api/v1/github/* β PR webhooks + connect
β βββ /api/mcp β MCP JSON-RPC server
β
βββ Database: SQLite (Prisma ORM)
β βββ 18 models (User, Project, TestCycle, BugReport, etc.)
β
βββ Auth: NextAuth.js
β βββ GitHub OAuth
β βββ Demo password (credentials provider)
β
βββ External Integrations:
βββ Applause API (test cycle sync, bug escalation)
βββ GitHub (PR webhooks, auto-cycle creation)
"As a visitor, I can learn about ClawQA and access documentation without logging in."
| # | Test | Type | Priority | Steps | Expected Result |
|---|---|---|---|---|---|
| 1.1 | Homepage loads | π€ AI | P0 | GET https://clawqa.ai | HTTP 200. Title: "ClawQA.ai β AI-Powered QA Testing". Hero text "AI Builds. Humans Verify." visible. No console errors. |
| 1.2 | Navigation links work | π€ AI | P0 | Click each nav link: Docs, For Agents, For Testers, Sign in | Each navigates to correct URL. No 404s. |
| 1.3 | Docs hub loads | π€ AI | P1 | GET https://clawqa.ai/docs/ | HTTP 200. Shows documentation cards: Overview, Architecture, For Agents, For PMs, Roadmap. |
| 1.4 | Each doc page loads | π€ AI | P1 | GET /docs/overview.html, /docs/architecture.html, /docs/for-agents.html, /docs/for-project-managers.html, /docs/phases.html | All return HTTP 200 with content. |
| 1.5 | Developer portal loads | π€ AI | P1 | GET https://clawqa.ai/developers | Page loads with API documentation and rate limit info. |
| 1.6 | Homepage visual quality on mobile | π₯ Human | P0 | Open homepage on iPhone/Android. Scroll through all sections. | No overlapping text, no horizontal scroll, all cards readable, CTAs tappable. |
"As a user, I can log in via GitHub OAuth or demo password and access the dashboard."
| # | Test | Type | Priority | Steps | Expected Result |
|---|---|---|---|---|---|
| 2.1 | Login page loads | π€ AI | P0 | GET /login | Shows "ClawQA.ai" title, "Continue with GitHub" button, "or" divider, Demo Password field. |
| 2.2 | Demo login succeeds | π€ AI | P0 | Enter "ClawQA26" in password field β Submit | Redirect to /dashboard. Session cookie set. Dashboard content loads. |
| 2.3 | Wrong password shows error | π€ AI | P1 | Enter "wrongpass" β Submit | "Invalid password" error message displayed. No redirect. |
| 2.4 | Unauthenticated redirect | π€ AI | P0 | Visit /dashboard without session | Redirect to /login. |
| 2.5 | GitHub OAuth flow (mobile) | π₯ Human | P0 | On mobile: Tap "Continue with GitHub" β Authorize on GitHub β Return to app | Full OAuth redirect chain works. User lands on /dashboard with name/avatar from GitHub. |
| 2.6 | GitHub OAuth deny | π₯ Human | P1 | Tap "Continue with GitHub" β Click "Cancel" on GitHub | Returns to /login with no crash. Error message or graceful fallback. |
| 2.7 | Session persistence | π€ AI | P1 | Login β Close tab β Reopen /dashboard | Still authenticated (session cookie persists). |
"As a logged-in user, I can navigate all dashboard sections via the sidebar."
| # | Test | Type | Priority | Steps | Expected Result |
|---|---|---|---|---|---|
| 3.1 | Dashboard page loads | π€ AI | P0 | Login β Navigate to /dashboard | Page loads without errors. Stats/summary content visible. |
| 3.2 | All sidebar links navigate correctly | π€ AI | P0 | Click each sidebar item | Each page loads at correct URL. No 404s or blank screens. |
| 3.3 | Test Cycles page loads | π€ AI | P0 | Navigate to /dashboard/test-cycles | Page loads. Test cycle list or empty state with message. |
| 3.4 | Bug Reports page loads with data | π€ AI | P0 | Navigate to /dashboard/bugs | Bug list renders with 5+ bugs. Each shows title, severity, status. |
| 3.5 | Analytics page renders charts | π€ AI | P1 | Navigate to /dashboard/analytics | Page loads. Chart elements present in DOM. |
| 3.6 | Mobile hamburger menu works | π₯ Human | P0 | On mobile: Tap β° β sidebar opens β tap menu item β sidebar closes β page loads | Menu opens/closes smoothly. Selected item highlighted. Sidebar doesn't overlap content after closing. |
| 3.7 | Sidebar active state | π€ AI | P2 | Navigate to each page, check sidebar highlight | Current page's sidebar item has active/highlighted style. |
| 3.8 | Role-based menu items | π€ AI | P1 | Login as demo (tester role) β Check sidebar items | Shows tester items: Browse Tests, My Tests, My Bug Reports. Does NOT show API Keys. |
"As a project owner, I can create, view, and manage test cycles."
| # | Test | Type | Priority | Steps | Expected Result |
|---|---|---|---|---|---|
| 4.1 | View test cycle list | π€ AI | P0 | GET /api/v1/test-cycles | Returns JSON array of test cycles with id, title, status, dates. |
| 4.2 | Create test cycle via API | π€ AI | P0 | POST /api/v1/test-cycles with title, projectId, steps | Returns 201 with created cycle. Cycle appears in list. |
| 4.3 | View test cycle detail | π€ AI | P0 | Navigate to /dashboard/test-cycles/[id] | Shows cycle details: title, status, steps, linked bugs. |
| 4.4 | Test cycle detail on mobile | π₯ Human | P1 | Open a test cycle detail page on mobile | All content visible, steps readable, no horizontal overflow. |
"As a tester, I can view bugs, submit new bug reports, and as a reviewer I can verify/reject them."
| # | Test | Type | Priority | Steps | Expected Result |
|---|---|---|---|---|---|
| 5.1 | Bug list loads | π€ AI | P0 | Navigate to /dashboard/bugs | List of bugs renders with title, severity badge, status badge for each. |
| 5.2 | Bug detail page | π€ AI | P0 | Click a bug from list | Detail page shows: title, severity, status, steps to reproduce, expected result, actual result, device info. |
| 5.3 | Submit bug via API | π€ AI | P0 | POST /api/v1/bugs with title, severity, steps, cycleId | Returns 201. Bug appears in list. |
| 5.4 | Bug detail on mobile β all fields visible | π₯ Human | P0 | Open bug detail on iPhone/Android | All fields readable. Steps numbered correctly. Severity/status badges colored. No truncated text. |
| 5.5 | Submit fix via API | π€ AI | P1 | POST /api/v1/bugs/[id]/fix with description | Fix recorded. Bug status updates. |
"As an AI agent, I can interact with ClawQA entirely via API."
| Endpoint | Method | Auth | Test |
|---|---|---|---|
| /api/auth/[...nextauth] | GET/POST | Public | π€ AI OAuth + credentials flow |
| /api/me | GET | Session | π€ AI Returns current user |
| /api/api-keys | GET/POST | Session | π€ AI CRUD API keys |
| /api/v1/projects | GET/POST | API Key | π€ AI List/create projects |
| /api/v1/projects/[slug] | GET/PATCH | API Key | π€ AI Project detail |
| /api/v1/projects/[slug]/agents | GET/POST | API Key | π€ AI Agent assignment |
| /api/v1/test-cycles | GET/POST | API Key | π€ AI CRUD cycles |
| /api/v1/test-cycles/[id] | GET/PATCH | API Key | π€ AI Cycle detail |
| /api/v1/test-cycles/[id]/bugs | GET | API Key | π€ AI Bugs per cycle |
| /api/v1/bugs | GET/POST | API Key | π€ AI Bug CRUD |
| /api/v1/bugs/[id]/fix | POST | API Key | π€ AI Submit fix |
| /api/v1/test-plans | GET/POST | API Key | π€ AI Plan templates |
| /api/v1/test-plans/[id]/execute | POST | API Key | π€ AI Execute plan |
| /api/v1/webhooks | GET/POST | API Key | π€ AI Webhook CRUD |
| /api/v1/webhooks/test | POST | API Key | π€ AI Test delivery |
| /api/v1/auto-fix/trigger | POST | API Key | π€ AI Trigger fix |
| /api/v1/escalate | POST | API Key | π€ AI Push to external QA |
| /api/v1/analytics | GET | API Key | π€ AI Bug analytics |
| /api/v1/github/webhook | POST | Webhook | π€ AI PR events |
| /api/mcp | POST | API Key | π€ AI MCP JSON-RPC |
"As a user on any device, the platform works correctly."
| # | Test | Device | Why Human |
|---|---|---|---|
| 7.1 | Full flow on iPhone Safari | iPhone 13+ / Safari 17 | Safari has unique CSS/JS quirks, safe area insets, and OAuth redirect behavior |
| 7.2 | Full flow on Android Chrome | Pixel/Samsung / Chrome 122+ | Android Chrome handles viewport, fonts, and touch differently than iOS |
| 7.3 | Tablet layout | iPad / Safari | Sidebar behavior at tablet breakpoint β does it show or use hamburger? |
| 7.4 | Landscape orientation | Any mobile | Login form cut off in landscape (known bug #7083435) |
| 7.5 | Slow connection | Any mobile on 3G throttle | Loading states, timeouts, perceived performance |
Automated tests run by the AI agent against the live site.
| Test | Result | Notes |
|---|---|---|
| Homepage loads (HTTP 200) | β PASS | 200ms response, title correct |
| Login page renders | β PASS | GitHub button + demo password field present |
| Demo login works | β PASS | Session cookie set, redirect to /dashboard |
| Wrong password rejected | β PASS | "Invalid password" shown |
| Unauth redirect to /login | β PASS | /dashboard β 302 β /login |
| Docs pages load (5 pages) | β PASS | All return 200 with content |
| API /dashboard/stats | β PASS | Returns valid JSON |
| Accessibility: Missing <main> landmark | β FAIL | No <main> element found β accessibility issue |
Screenshots from AI test runs are available in the GitHub repo under test-results/.
| # | Test | Why AI Can't Do It | Device Needed |
|---|---|---|---|
| 1.6 | Homepage visual quality mobile | Subjective readability + contrast judgment | iPhone or Android |
| 2.5 | GitHub OAuth flow mobile | Real OAuth redirects, anti-bot on GitHub | iPhone or Android |
| 2.6 | GitHub OAuth deny | Real GitHub cancel behavior | Any |
| 3.6 | Hamburger menu on mobile | Touch gestures, animation smoothness | iPhone or Android |
| 4.4 | Test cycle detail mobile | Layout/readability judgment | iPhone or Android |
| 5.4 | Bug detail mobile | Field readability, badge colors | iPhone or Android |
| 7.1 | Full flow iPhone Safari | Safari-specific CSS/JS quirks | iPhone |
| 7.2 | Full flow Android Chrome | Android-specific rendering | Android |
| 7.3 | Tablet layout | Breakpoint behavior | iPad |
| 7.4 | Landscape orientation | Viewport rotation handling | Any mobile |
| 7.5 | Slow 3G connection | Perceived performance | Any mobile |
Minimum test: 1 tester, 1 mobile device, ~20 minutes for the critical P0 tests (1.6, 2.5, 3.6, 5.4, 7.1 or 7.2).
Developer pushes code β GitHub PR created
β
βΌ
ββββββββββββββββββββββββββββββ
β GitHub webhook fires β POST /api/v1/github/webhook
β ClawQA receives PR event β
ββββββββββ¬ββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββ
β ClawQA auto-creates β
β test cycle for this PR β Links PR number, branch, diff
ββββββββββ¬ββββββββββββββββββββ
β
ββββββ΄βββββ
βΌ βΌ
π€ AI π₯ Human
runs tests via
Playwright Applause
β β
ββββββ¬βββββ
βΌ
ββββββββββββββββββββββββββββββ
β Results posted back to PR β β GitHub Status Checks
β as a comment or check β
β β
28 AI tests passed β
β π 2 human-found bugs β
ββββββββββββββββββββββββββββββ
github.com/yoniassia/clawdet βββ QA-BRIEF.md β Full QA documentation βββ QA-TEST-CASES.csv β 35 importable test cases βββ QA-QUICK-START.md β Quick start for new testers βββ EXAMPLE-BUG-REPORT.md β Bug report template βββ test-results/ β AI Playwright screenshots
| Metric | Target | Current |
|---|---|---|
| AI tests passing | 100% (28/28) | 96% (27/28) β 1 accessibility issue |
| Human P0 tests passing | 100% (5/5) | In progress β Cycle 536247 active |
| Approved bugs fixed | 100% within 1 hour | 1/1 fixed (#7083433) |
| Mean time to fix | < 30 minutes | ~15 minutes (first bug) |
| False positive rate | < 20% | TBD β need more data |
Generated by ClawQA.AI π¦ Β· Self-testing since February 2026
clawqa.ai Β· GitHub