Skip to content

feat: browser pre-verification for /gsd:verify-work#819

Open
ethan-hurst wants to merge 7 commits intogsd-build:mainfrom
ethan-hurst:feat/browser-pre-verification
Open

feat: browser pre-verification for /gsd:verify-work#819
ethan-hurst wants to merge 7 commits intogsd-build:mainfrom
ethan-hurst:feat/browser-pre-verification

Conversation

@ethan-hurst
Copy link
Contributor

What

Add opt-in browser pre-verification to /gsd:verify-work that auto-tests UI deliverables via chrome-devtools-mcp before human UAT (#201).

Why

Users currently test every UI deliverable manually one-by-one. Browser automation can auto-pass obvious tests, enrich failures with diagnostics, and only send ambiguous tests to the human — cutting UAT time significantly.

Testing

  • Tested on macOS
  • Tested on Windows
  • Tested on Linux

Verification steps:

  1. Without chrome-devtools-mcp: /gsd:verify-work skips browser step with info message, proceeds to manual UAT as before
  2. With chrome-devtools-mcp + browser.enabled: true + running dev server: attempts browser verification, produces auto_pass/needs_human results
  3. node bin/gsd-tools.cjs config-ensure-section includes browser section with enabled: false
  4. node bin/gsd-tools.cjs init verify-work <phase> includes browser_enabled field
  5. npm test — 498/498 passing (7 new tests, 0 regressions)

Checklist

  • Follows GSD style (no enterprise patterns, no filler)
  • Updates CHANGELOG.md for user-facing changes
  • No unnecessary dependencies added
  • Works on Windows (backslash paths tested)

Breaking Changes

None — feature is opt-in (browser.enabled: false by default). Zero behavioral change when disabled.

Files Changed (13)

New:

  • agents/gsd-browser-verifier.md — Browser verification agent definition
  • get-shit-done/references/browser-setup.md — Setup guide

Config layer:

  • get-shit-done/bin/lib/config.cjs — Browser defaults + deep-merge for nested auth
  • get-shit-done/bin/lib/core.cjsbrowser field in loadConfig() return
  • get-shit-done/bin/lib/init.cjsbrowser_enabled/browser_base_url in verify-work init

Workflow:

  • get-shit-done/workflows/verify-work.mdbrowser_pre_verify step + auto_pass skip + auto_note display

Docs/Templates:

  • get-shit-done/templates/UAT.mdauto_pass, auto_evidence, auto_note fields
  • get-shit-done/references/planning-config.md — Browser config reference
  • get-shit-done/workflows/settings.md — Browser toggle (8th setting)
  • CHANGELOG.md + docs/USER-GUIDE.md

Tests:

  • tests/config.test.cjs — Browser defaults + auth deep-merge (2 tests)
  • tests/init.test.cjscmdInitVerifyWork suite (5 tests)

Ethan Hurst added 7 commits February 28, 2026 20:28
Command shipped in a92512a but was missing from all documentation.
Added to help.md (full reference + common workflows), README.md
command table, and USER-GUIDE.md command reference.
Add centralized path resolution layer (paths.cjs) that enables
milestone-scoped directories for parallel milestone work. All 11 lib
files refactored to use resolvePlanningPaths() instead of hardcoded
.planning/ paths.

Key changes:
- New paths.cjs: resolvePlanningPaths(cwd, milestoneOverride) resolves
  abs/rel paths based on ACTIVE_MILESTONE file or --milestone CLI flag
- --milestone <name> CLI flag parsed in gsd-tools.cjs
- New commands: milestone create/switch/list/status
- All init commands output milestone, is_multi_milestone, planning_base
- Legacy mode (no ACTIVE_MILESTONE) returns identical paths to before
- Auto-migration: first milestone create copies existing global state
- 25 new tests for paths and milestone commands (457 total, 0 failures)
Replace hardcoded .planning/ paths in bash commands and commit
file lists with init JSON variables ({state_path}, {roadmap_path},
{planning_base}/...). Workflows without init calls gain appropriate
init calls. Global paths (PROJECT.md, codebase/) left unchanged.
…tusline, and docs (gsd-build#291)

Phase 5: polish for concurrent milestone execution.
- Milestone-scoped commit prefixes in execute-plan.md (v2.0/08-02)
- cmdMilestoneSwitch warns about in-progress work before switching
- /gsd:switch-milestone workflow and command
- Statusline shows active milestone in cyan [v2.0]
- new-milestone.md calls milestone create for multi-milestone mode
- Help and README updated with switch-milestone and concurrent docs
…itch-warning tests (gsd-build#291)

- USER-GUIDE: add /gsd:switch-milestone, concurrent milestones section,
  multi-milestone directory layout
- CHANGELOG: add [Unreleased] entry for concurrent milestone execution
- planner-subagent-prompt.md: replace hardcoded .planning/ paths with
  milestone-aware template variables
- 4 new tests: switch in-progress warning, idle switch, same-milestone
  switch, and auto-migration on first milestone create (461 total)
…ration (gsd-build#99)

Add structured bug reporting lifecycle: report → triage → investigate → fix → resolve.

- Skill file, workflow, and bug-report template
- CLI commands: bug list/update/resolve, init bugs, scaffold bugs
- Severity inference from keywords (critical/high/medium/low)
- Diagnostic log capture (git state, error output, log files)
- Optional GitHub issue creation via gh CLI
- 13 new tests across 4 test suites
- Registered in help, README, USER-GUIDE, CHANGELOG
- STATE.md and progress workflow track active bugs
Spawn a gsd-browser-verifier agent via chrome-devtools-mcp to auto-test
UI deliverables before human UAT. Tests that auto-pass get skipped,
tests that auto-fail get enriched with diagnostics, and only ambiguous
tests reach the user. Opt-in via browser.enabled config; degrades
gracefully when MCP is not configured.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant