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