# S06: App Footer with Version Info — UAT

**Milestone:** M006
**Written:** 2026-03-30T12:07:16.783Z

# S06 UAT: App Footer with Version Info

## Preconditions
- Chrysopedia web UI accessible at http://ub01:8096
- Frontend builds without errors (`cd frontend && npm run build`)

## Test Cases

### TC1: Footer visible on home page
1. Navigate to http://ub01:8096
2. Scroll to bottom of page
3. **Expected:** Footer is visible with version number (e.g. "v0.1.0"), build date, commit SHA, and "GitHub" link

### TC2: Footer visible on all routes
1. Navigate to http://ub01:8096/topics
2. **Expected:** Footer visible at bottom
3. Navigate to http://ub01:8096/creators
4. **Expected:** Footer visible at bottom
5. Navigate to any technique page
6. **Expected:** Footer visible at bottom

### TC3: Footer pushed to bottom on short pages
1. Navigate to a page with minimal content (e.g. /topics with few items)
2. **Expected:** Footer is at the bottom of the viewport, not floating mid-page. The .app container uses flex-column with min-height: 100vh.

### TC4: Commit SHA links to GitHub
1. On any page, locate the commit SHA in the footer (e.g. "08d7d19")
2. Click the SHA link
3. **Expected:** Opens https://github.com/xpltdco/chrysopedia/commit/08d7d19 (or current SHA)

### TC5: GitHub repo link works
1. In the footer, click the "GitHub" link
2. **Expected:** Opens https://github.com/xpltdco/chrysopedia

### TC6: Build-time constants substituted in production bundle
1. SSH to ub01
2. Run: `docker exec chrysopedia-web-8096 grep -o '0.1.0' /usr/share/nginx/html/assets/index-*.js`
3. **Expected:** Returns "0.1.0" — the version was substituted at build time, not showing __APP_VERSION__ literal

### TC7: Local dev build includes constants
1. Run `cd frontend && npm run build`
2. Check dist/assets/index-*.js for version string
3. **Expected:** Contains "0.1.0" and a git commit SHA (not "dev" when built locally with git available)

### TC8: Docker build with custom SHA
1. On ub01: `GIT_COMMIT_SHA=abc1234 docker compose build chrysopedia-web-8096`
2. Deploy and check footer
3. **Expected:** Footer shows "abc1234" as commit SHA

### Edge Cases

### EC1: Build without git available
1. In a directory without .git, set `VITE_GIT_COMMIT=test123`
2. Run `npm run build`
3. **Expected:** Build succeeds, commit shows "test123" (env var fallback)

### EC2: Build without VITE_GIT_COMMIT and without git
1. In a directory without .git, unset VITE_GIT_COMMIT
2. Run `npm run build`
3. **Expected:** Build succeeds, commit shows "dev" (final fallback)
