diff --git a/.planning/phases/14-auth-pages/14-VALIDATION.md b/.planning/phases/14-auth-pages/14-VALIDATION.md new file mode 100644 index 0000000..0250082 --- /dev/null +++ b/.planning/phases/14-auth-pages/14-VALIDATION.md @@ -0,0 +1,83 @@ +--- +phase: 14 +slug: auth-pages +status: compliant +nyquist_compliant: true +wave_0_complete: true +created: 2026-05-16 +--- + +# Phase 14 — Validation Strategy + +--- + +## Test Infrastructure + +| Property | Value | +|----------|-------| +| **Framework** | Go `testing` (stdlib) | +| **Config file** | `backend/go.mod` | +| **Quick run command** | `cd backend && go test ./templates/... -count=1` | +| **Full suite command** | `cd backend && go test ./... -count=1` | +| **Estimated runtime** | ~5 seconds | + +--- + +## Sampling Rate + +- **After every task commit:** `cd backend && go test ./templates/... -count=1` +- **After every plan wave:** `cd backend && go test ./... -count=1` +- **Before `/gsd-verify-work`:** Full suite must be green + +--- + +## Per-Task Verification Map + +| Task ID | Plan | Wave | Requirement | Test Type | Automated Command | File | Status | +|---------|------|------|-------------|-----------|-------------------|------|--------| +| 14-01-01 | 01 | 1 | AUTH-UI-01/02/03 | unit | `cd backend && go test ./templates/... -count=1 -run TestLoginPage_RendersAuthLayoutStructure` | `backend/templates/auth_login_test.go` | ✅ green | +| 14-01-02 | 01 | 1 | AUTH-UI-01 | unit | `cd backend && go test ./templates/... -count=1 -run TestLoginPage_HTMXFormAttributes` | `backend/templates/auth_login_test.go` | ✅ green | +| 14-01-03 | 01 | 1 | AUTH-UI-01 | unit | `cd backend && go test ./templates/... -count=1 -run TestLoginPage_DoesNotEchoPassword` | `backend/templates/auth_login_test.go` | ✅ green | +| 14-01-04 | 01 | 1 | AUTH-UI-03 | unit | `cd backend && go test ./templates/... -count=1 -run TestAnimatedBackground_Exactly35Elements` | `backend/templates/auth_components_test.go` | ✅ green | +| 14-01-05 | 01 | 1 | AUTH-UI-03 | unit | `cd backend && go test ./templates/... -count=1 -run TestGoogleButton_ConfiguredRendersLink` | `backend/templates/auth_components_test.go` | ✅ green | +| 14-01-06 | 01 | 1 | AUTH-UI-03 | unit | `cd backend && go test ./templates/... -count=1 -run TestGoogleButton_UnconfiguredRendersDisabledButton` | `backend/templates/auth_components_test.go` | ✅ green | +| 14-01-07 | 01 | 1 | AUTH-UI-03 | unit | `cd backend && go test ./templates/... -count=1 -run TestAuthDivider_RendersOrPill` | `backend/templates/auth_components_test.go` | ✅ green | +| 14-02-01 | 02 | 2 | AUTH-UI-02 | unit | `cd backend && go test ./templates/... -count=1 -run TestSignupPage_RendersForm` | `backend/templates/auth_signup_test.go` | ✅ green | +| 14-02-02 | 02 | 2 | AUTH-UI-02 | unit | `cd backend && go test ./templates/... -count=1 -run TestSignupFormFragment_RendersErrors` | `backend/templates/auth_signup_test.go` | ✅ green | +| 14-02-03 | 02 | 2 | AUTH-UI-02 | unit | `cd backend && go test ./templates/... -count=1 -run TestSignupPage_DoesNotEchoPassword` | `backend/templates/auth_signup_test.go` | ✅ green | +| 14-02-04 | 02 | 2 | AUTH-UI-03 | integration | `cd backend && go test ./internal/web/... -count=1 -run TestLoginProviderButtonsConfigured` | `backend/internal/web/handlers_auth_test.go` | ✅ green | +| 14-02-05 | 02 | 2 | AUTH-UI-03 | integration | `cd backend && go test ./internal/web/... -count=1 -run TestLoginProviderButtonsDisabledWhenConfigMissing` | `backend/internal/web/handlers_auth_test.go` | ✅ green | +| 14-02-06 | 02 | 2 | AUTH-UI-03 | integration | `cd backend && go test ./internal/web/... -count=1 -run TestSignupProviderButtonsConfigured` | `backend/internal/web/handlers_auth_test.go` | ✅ green | +| 14-02-07 | 02 | 2 | AUTH-UI-03 | integration | `cd backend && go test ./internal/web/... -count=1 -run TestSignupProviderButtonsDisabledWhenConfigMissing` | `backend/internal/web/handlers_auth_test.go` | ✅ green | + +*Status: ⬜ pending · ✅ green · ❌ red · ⚠️ flaky* + +--- + +## Manual-Only Verifications + +| Behavior | Requirement | Why Manual | Test Instructions | +|----------|-------------|------------|-------------------| +| Animated background renders with 35 floating logo icons visible in browser | AUTH-UI-01/02 | CSS animation + visual rendering cannot be asserted in Go template tests | `cd backend && just run` → visit http://localhost:8080/login → confirm floating logos animate across gradient background | +| Google button renders with Roboto Medium font and correct pill shape | AUTH-UI-03 | Font loading (Google Fonts CDN) cannot be tested in-process | Visit http://localhost:8080/login → inspect gsi-material-button renders with Roboto font and 20px border-radius pill shape | +| HTMX swap on login/signup form submission (inline error, no full reload) | AUTH-UI-01/02 | Requires browser + HTMX JS execution | Submit invalid credentials on /login → error appears inline within card without full page reload | + +--- + +## Sign-Off + +- **Automated:** 14/14 tests green (`cd backend && go test ./... -count=1`) +- **Manual:** 3 items verified at human-verify checkpoint (2026-05-16, approved) +- **Nyquist compliant:** Yes — all requirements have automated coverage; manual items are visual/browser-only behaviors that cannot be machine-tested + +--- + +## Validation Audit 2026-05-16 + +| Metric | Count | +|--------|-------| +| Requirements audited | 3 (AUTH-UI-01, AUTH-UI-02, AUTH-UI-03) | +| Gaps found | 3 | +| Resolved (automated) | 3 | +| Escalated to manual | 0 | +| Final status | COMPLIANT |