Files
gstack/qa/references/issue-taxonomy.md
Garry Tan f7b95329c1 feat: Phase 3.5 — cookie import, QA testing, team retro (v0.3.1) (#29)
* Phase 2: Enhanced browser — dialog handling, upload, state checks, snapshots

- CircularBuffer O(1) ring buffer for console/network/dialog (was O(n) array+shift)
- Async buffer flush with Bun.write() (was appendFileSync)
- Dialog auto-accept/dismiss with buffer + prompt text support
- File upload command (upload <sel> <file...>)
- Element state checks (is visible/hidden/enabled/disabled/checked/editable/focused)
- Annotated screenshots with ref labels overlaid (-a flag)
- Snapshot diffing against previous snapshot (-D flag)
- Cursor-interactive element scan for non-ARIA clickables (-C flag)
- Snapshot scoping depth limit (-d N flag)
- Health check with page.evaluate + 2s timeout
- Playwright error wrapping — actionable messages for AI agents
- Fix useragent — context recreation preserves cookies/storage/URLs
- wait --networkidle / --load / --domcontentloaded flags
- console --errors filter (error + warning only)
- cookie-import <json-file> with auto-fill domain from page URL
- 166 integration tests (was ~63)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Phase 2: Rewrite SKILL.md as QA playbook + command reference

Reorient SKILL.md files from raw command reference to QA-first playbook
with 10 workflow patterns (test user flows, verify deployments, dogfood
features, responsive layouts, file upload, forms, dialogs, compare pages).
Compact command reference tables at the bottom.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Phase 3: /qa skill — systematic QA testing with health scores

New /qa skill for systematic web app QA testing. Three modes:
- full: 5-10 documented issues with screenshots and repro steps
- quick: 30-second smoke test with health score
- regression: compare against saved baseline

Includes issue taxonomy (7 categories, 4 severity levels), structured
report template, health score rubric (weighted across 7 categories),
framework detection guidance (Next.js, Rails, WordPress, SPA).

Also adds browse/bin/find-browse (DRY binary discovery using git
rev-parse), .gstack/ to .gitignore, and updated TODO roadmap.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Bump to v0.3.0 — Phase 2 + Phase 3 changelog

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: cookie-import-browser — Chromium cookie decryption module + tests

Pure logic module for reading and decrypting cookies from macOS Chromium
browsers (Comet, Chrome, Arc, Brave, Edge). Supports v10 AES-128-CBC
encryption with macOS Keychain access, PBKDF2 key derivation, and
per-browser key caching. 18 unit tests with encrypted cookie fixtures.

* feat: cookie picker web UI + route handler

Two-panel dark-theme picker served from the browse server. Left panel
shows source browser domains with search and import buttons. Right panel
shows imported domains with trash buttons. No cookie values exposed.
6 API endpoints, importedDomains Set tracking, inline clearCookies.

* feat: wire cookie-import-browser into browse server

Add cookie-picker route dispatch (no auth, localhost-only), add
cookie-import-browser to WRITE_COMMANDS and CHAIN_WRITE, add serverPort
property to BrowserManager, add write command with two modes (picker UI
vs --domain direct import), update CLI help text.

* chore: /setup-browser-cookies skill + docs (Phase 3.5)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: bump version and changelog (v0.3.1)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* security: redact sensitive values from command output (PR #21)

type no longer echoes text (reports character count), cookie redacts
value with ****, header redacts Authorization/Cookie/X-API-Key/X-Auth-Token,
storage set drops value, forms redacts password fields. Prevents secrets
from persisting in LLM transcripts. 7 new tests.

Credit: fredluz (PR #21)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* security: path traversal prevention for screenshot/pdf/eval (PR #26)

Add validateOutputPath() for screenshot/pdf/responsive (restricts to
/tmp and cwd) and validateReadPath() for eval (blocks .. sequences and
absolute paths outside safe dirs). 7 new tests.

Credit: Jah-yee (PR #26)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: auto-install Playwright Chromium in setup (PR #22)

Setup now verifies Playwright can launch Chromium, and auto-installs
it via `bunx playwright install chromium` if missing. Exits non-zero
if build or Chromium launch fails.

Credit: AkbarDevop (PR #22)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* security: fix path validation bypass, CORS restriction, cookie-import path check

- startsWith('/tmp') matched '/tmpevil' — now requires trailing slash
- CORS Access-Control-Allow-Origin changed from * to http://127.0.0.1:<port>
- cookie-import now validates file paths (was missing validateReadPath)
- 3 new tests for prefix collision and cookie-import path traversal

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: address review informational issues + add regression tests

- Add cookie-import to CHAIN_WRITE set for chain command routing
- Add path validation to snapshot -a -o output path
- Fix package.json version to match 0.3.1
- Use crypto.randomUUID() for temp DB paths (unpredictable filenames)
- Add regression tests for chain cookie-import and snapshot path validation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add /qa, /setup-browser-cookies to README + update BROWSER.md

- Add /qa and /setup-browser-cookies to skills table, install/update/uninstall blurbs
- Add dedicated README sections for both new skills with usage examples
- Update demo workflow to show cookie import → QA → browse flow
- Update BROWSER.md: cookie import commands, new source files, test count (203)
- Update skill count from 6 to 8

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: team-aware /retro v2.0 — per-person praise and growth opportunities

- Identify current user via git config, orient narrative as "you" vs teammates
- Add per-author metrics: commits, LOC, focus areas, commit type mix, sessions
- New "Your Week" section with personal deep-dive for whoever runs the command
- New "Team Breakdown" with per-person praise and growth opportunities
- Track AI-assisted commits via Co-Authored-By trailers
- Personal + team shipping streaks
- Tone: praise like a 1:1, growth like investment advice, never compare negatively

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add Conductor parallel sessions section to README

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 00:31:41 -07:00

3.5 KiB

QA Issue Taxonomy

Severity Levels

Severity Definition Examples
critical Blocks a core workflow, causes data loss, or crashes the app Form submit causes error page, checkout flow broken, data deleted without confirmation
high Major feature broken or unusable, no workaround Search returns wrong results, file upload silently fails, auth redirect loop
medium Feature works but with noticeable problems, workaround exists Slow page load (>5s), form validation missing but submit still works, layout broken on mobile only
low Minor cosmetic or polish issue Typo in footer, 1px alignment issue, hover state inconsistent

Categories

1. Visual/UI

  • Layout breaks (overlapping elements, clipped text, horizontal scrollbar)
  • Broken or missing images
  • Incorrect z-index (elements appearing behind others)
  • Font/color inconsistencies
  • Animation glitches (jank, incomplete transitions)
  • Alignment issues (off-grid, uneven spacing)
  • Dark mode / theme issues

2. Functional

  • Broken links (404, wrong destination)
  • Dead buttons (click does nothing)
  • Form validation (missing, wrong, bypassed)
  • Incorrect redirects
  • State not persisting (data lost on refresh, back button)
  • Race conditions (double-submit, stale data)
  • Search returning wrong or no results

3. UX

  • Confusing navigation (no breadcrumbs, dead ends)
  • Missing loading indicators (user doesn't know something is happening)
  • Slow interactions (>500ms with no feedback)
  • Unclear error messages ("Something went wrong" with no detail)
  • No confirmation before destructive actions
  • Inconsistent interaction patterns across pages
  • Dead ends (no way back, no next action)

4. Content

  • Typos and grammar errors
  • Outdated or incorrect text
  • Placeholder / lorem ipsum text left in
  • Truncated text (cut off without ellipsis or "more")
  • Wrong labels on buttons or form fields
  • Missing or unhelpful empty states

5. Performance

  • Slow page loads (>3 seconds)
  • Janky scrolling (dropped frames)
  • Layout shifts (content jumping after load)
  • Excessive network requests (>50 on a single page)
  • Large unoptimized images
  • Blocking JavaScript (page unresponsive during load)

6. Console/Errors

  • JavaScript exceptions (uncaught errors)
  • Failed network requests (4xx, 5xx)
  • Deprecation warnings (upcoming breakage)
  • CORS errors
  • Mixed content warnings (HTTP resources on HTTPS)
  • CSP violations

7. Accessibility

  • Missing alt text on images
  • Unlabeled form inputs
  • Keyboard navigation broken (can't tab to elements)
  • Focus traps (can't escape a modal or dropdown)
  • Missing or incorrect ARIA attributes
  • Insufficient color contrast
  • Content not reachable by screen reader

Per-Page Exploration Checklist

For each page visited during a QA session:

  1. Visual scan — Take annotated screenshot (snapshot -i -a -o). Look for layout issues, broken images, alignment.
  2. Interactive elements — Click every button, link, and control. Does each do what it says?
  3. Forms — Fill and submit. Test empty submission, invalid data, edge cases (long text, special characters).
  4. Navigation — Check all paths in/out. Breadcrumbs, back button, deep links, mobile menu.
  5. States — Check empty state, loading state, error state, full/overflow state.
  6. Console — Run console --errors after interactions. Any new JS errors or failed requests?
  7. Responsiveness — If relevant, check mobile and tablet viewports.
  8. Auth boundaries — What happens when logged out? Different user roles?