🦞 ClawQA.AI β€” Complete Self-Test Definition

Every user flow, every test, every success criteria. AI tests what it can, humans verify what it can't.

7
User Stories
42
Test Cases
28
AI Automated
14
Need Human
35
API Endpoints
Table of Contents 🧠 QA Process & Logic πŸ—οΈ Architecture Overview US1: Homepage & Public Pages US2: Authentication (Login/Logout) US3: Dashboard & Navigation US4: Test Cycles Management US5: Bug Reports & Verification US6: API Endpoints US7: Mobile & Cross-Browser πŸ€– AI Test Results (Playwright) πŸ‘₯ Human Test Matrix πŸ”— GitHub Integration βœ… Success Criteria

🧠 QA Process & Logic

How ClawQA Decides What to Test and How

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    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Why Some Tests Need Humans

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

πŸ—οΈ Architecture Overview

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)

US1: Homepage & Public Pages

"As a visitor, I can learn about ClawQA and access documentation without logging in."

User Flow

Visit clawqa.ai β†’ Read hero + features β†’ Browse docs β†’ View developer portal β†’ Click "Sign in"

Test Cases

#TestTypePriorityStepsExpected 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.
Why 1.6 needs a human: AI can check that elements exist and pages load, but can't judge whether text is actually readable on a 5.4" screen, whether gradient text has enough contrast in sunlight, or whether the "How it works" cards feel cramped. Visual quality is subjective.

US2: Authentication (Login/Logout)

"As a user, I can log in via GitHub OAuth or demo password and access the dashboard."

User Flow

Visit /login β†’ Choose auth method: β”œβ”€β”€ Demo password: Enter "ClawQA26" β†’ Submit β†’ Redirect to /dashboard └── GitHub OAuth: Click "Continue with GitHub" β†’ GitHub auth page β†’ Authorize β†’ Redirect to /dashboard Logout β†’ Return to homepage

Test Cases

#TestTypePriorityStepsExpected 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).
Why 2.5 and 2.6 need humans: OAuth redirects involve a real third-party (GitHub) with anti-bot protections. AI/Playwright gets blocked by GitHub's auth page. Real devices also test the redirect chain across Safari's/Chrome's actual URL bar, cookie handling, and deep link behavior β€” things that differ per OS.

US3: Dashboard & Navigation

"As a logged-in user, I can navigate all dashboard sections via the sidebar."

User Flow

Login β†’ Dashboard (stats overview) β”œβ”€β”€ πŸ“Š Dashboard β€” Overview with stats cards β”œβ”€β”€ πŸ”„ Test Cycles β€” List + detail view β”œβ”€β”€ πŸ› Bug Reports β€” List of all bugs β”œβ”€β”€ πŸ“ Test Plans β€” Templates β”œβ”€β”€ πŸ“ˆ Analytics β€” Charts + severity data β”œβ”€β”€ βš™οΈ Settings β€” User preferences β”œβ”€β”€ πŸ”‘ API Keys β€” Generate/revoke (agent-owner role) β”œβ”€β”€ πŸ” Browse Tests β€” Find available tests (tester role) β”œβ”€β”€ πŸ“‹ My Tests β€” Assigned tests (tester role) └── πŸ› My Bug Reports β€” Submitted bugs (tester role)

Test Cases

#TestTypePriorityStepsExpected 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.
Why 3.6 needs a human: The hamburger menu animation, touch gesture responsiveness, and z-index layering behavior on real mobile devices can't be accurately tested in headless Playwright. Real fingers on real glass reveal issues like: menu doesn't close when tapping outside, sidebar flickers on slow phones, or menu items are too close together for finger taps.

US4: Test Cycles Management

"As a project owner, I can create, view, and manage test cycles."

Test Cases

#TestTypePriorityStepsExpected 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.

US5: Bug Reports & Verification

"As a tester, I can view bugs, submit new bug reports, and as a reviewer I can verify/reject them."

User Flow

View bug list β†’ Click bug β†’ Read details (title, severity, steps, expected, actual) β”œβ”€β”€ Tester: Submit new bug with title, severity, steps, screenshots └── Reviewer: Approve / Reject / Request Info on a bug

Test Cases

#TestTypePriorityStepsExpected 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.

US6: API Endpoints

"As an AI agent, I can interact with ClawQA entirely via API."

All 35 API Endpoints β€” AI Tested

EndpointMethodAuthTest
/api/auth/[...nextauth]GET/POSTPublicπŸ€– AI OAuth + credentials flow
/api/meGETSessionπŸ€– AI Returns current user
/api/api-keysGET/POSTSessionπŸ€– AI CRUD API keys
/api/v1/projectsGET/POSTAPI KeyπŸ€– AI List/create projects
/api/v1/projects/[slug]GET/PATCHAPI KeyπŸ€– AI Project detail
/api/v1/projects/[slug]/agentsGET/POSTAPI KeyπŸ€– AI Agent assignment
/api/v1/test-cyclesGET/POSTAPI KeyπŸ€– AI CRUD cycles
/api/v1/test-cycles/[id]GET/PATCHAPI KeyπŸ€– AI Cycle detail
/api/v1/test-cycles/[id]/bugsGETAPI KeyπŸ€– AI Bugs per cycle
/api/v1/bugsGET/POSTAPI KeyπŸ€– AI Bug CRUD
/api/v1/bugs/[id]/fixPOSTAPI KeyπŸ€– AI Submit fix
/api/v1/test-plansGET/POSTAPI KeyπŸ€– AI Plan templates
/api/v1/test-plans/[id]/executePOSTAPI KeyπŸ€– AI Execute plan
/api/v1/webhooksGET/POSTAPI KeyπŸ€– AI Webhook CRUD
/api/v1/webhooks/testPOSTAPI KeyπŸ€– AI Test delivery
/api/v1/auto-fix/triggerPOSTAPI KeyπŸ€– AI Trigger fix
/api/v1/escalatePOSTAPI KeyπŸ€– AI Push to external QA
/api/v1/analyticsGETAPI KeyπŸ€– AI Bug analytics
/api/v1/github/webhookPOSTWebhookπŸ€– AI PR events
/api/mcpPOSTAPI KeyπŸ€– AI MCP JSON-RPC

US7: Mobile & Cross-Browser

"As a user on any device, the platform works correctly."

Test Matrix β€” All Human

#TestDeviceWhy 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

πŸ€– AI Test Results (Playwright)

Automated tests run by the AI agent against the live site.

Last Run: February 2026

TestResultNotes
Homepage loads (HTTP 200)βœ… PASS200ms response, title correct
Login page rendersβœ… PASSGitHub button + demo password field present
Demo login worksβœ… PASSSession 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)βœ… PASSAll return 200 with content
API /dashboard/statsβœ… PASSReturns valid JSON
Accessibility: Missing <main> landmark❌ FAILNo <main> element found β€” accessibility issue

Screenshots from AI test runs are available in the GitHub repo under test-results/.

πŸ‘₯ Human Test Summary

14 Tests Requiring Human Testers

#TestWhy AI Can't Do ItDevice Needed
1.6Homepage visual quality mobileSubjective readability + contrast judgmentiPhone or Android
2.5GitHub OAuth flow mobileReal OAuth redirects, anti-bot on GitHubiPhone or Android
2.6GitHub OAuth denyReal GitHub cancel behaviorAny
3.6Hamburger menu on mobileTouch gestures, animation smoothnessiPhone or Android
4.4Test cycle detail mobileLayout/readability judgmentiPhone or Android
5.4Bug detail mobileField readability, badge colorsiPhone or Android
7.1Full flow iPhone SafariSafari-specific CSS/JS quirksiPhone
7.2Full flow Android ChromeAndroid-specific renderingAndroid
7.3Tablet layoutBreakpoint behavioriPad
7.4Landscape orientationViewport rotation handlingAny mobile
7.5Slow 3G connectionPerceived performanceAny 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).

πŸ”— GitHub Integration

How GitHub Fits Into the QA Loop

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 Repo Structure

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

Suggested GitHub Workflow

  1. PR opened β†’ ClawQA webhook triggers β†’ auto-creates test cycle
  2. AI tests run β†’ results posted as PR comment
  3. If AI finds issues β†’ PR blocked, developer fixes
  4. If AI passes β†’ human test cycle activated on Applause
  5. Human results return β†’ posted to PR as final check
  6. All green β†’ PR mergeable

βœ… Definition of Success

For This Self-Test Cycle

MetricTargetCurrent
AI tests passing100% (28/28)96% (27/28) β€” 1 accessibility issue
Human P0 tests passing100% (5/5)In progress β€” Cycle 536247 active
Approved bugs fixed100% within 1 hour1/1 fixed (#7083433)
Mean time to fix< 30 minutes~15 minutes (first bug)
False positive rate< 20%TBD β€” need more data

For ClawQA as a Platform

Generated by ClawQA.AI 🦞 · Self-testing since February 2026
clawqa.ai Β· GitHub