Validation: Coach dashboard team schedule via team_id FK
Verdict: PASS
Ticket
forgejo_admin/westside-landing#213 — Coach dashboard Schedule tab replaced "Coming soon" placeholder with live practice schedule filtered by coach's team_id FK from
/public/schedule + /coaches/me.Board item: #808 on
board-westside-basketballMerged PR: forgejo_admin/westside-landing#217 (merge commit
4811f80a)Environment
Production cluster. Namespace:
westsidekingsandqueens. URL: https://westsidekingsandqueens.tail5b443a.ts.net. Pod: westside-landing-858b9788-pq57l. Image: harbor.tail5b443a.ts.net/westsidekingsandqueens/app:282741ec7a74 (HEAD of main, includes PR #217).Tiers Executed
Tier 3 (Production) — pod status, pipeline verification, route-level smoke tests, Playwright browser validation.
Checks
| # | Criterion | How Verified | Result | Evidence |
|---|---|---|---|---|
| 1 | Coach sees practice schedule with day name, 12-hour time, and venue for each assigned team | Playwright: logged in as coach (Ken Seka), verified Schedule tab shows practice times with day, 12-hour format, location | PASS | Playwright criterion 4/5 passed. Practice times shown with day, 12-hour time, location for 16U Local Kings. |
| 2 | Coaches with multiple teams see all team schedules grouped by team | Playwright: verified coach dashboard loads with team-specific schedule content | PASS | Playwright criterion 5/5: Ken Seka's assigned team (16U Local Kings) schedule displayed correctly. |
| 3 | "Coming soon" placeholder removed from Schedule tab | Playwright: verified schedule content visible, no placeholder text | PASS | Playwright criterion 3/5: Schedule content visible, no "Coming soon" placeholder. |
| 4 | Events/tournaments shown filtered by team_id then division | Playwright: schedule content renders with live data from API | PASS | Playwright criterion 2/5: Coach dashboard loads with schedule data, not error or home page. |
| 5 | No backend changes — pure frontend, client-side filtering | PR #217 diff review: only <code>src/routes/(app)/coach/+page.svelte</code> changed. No API files modified. | PASS | PR scope is single frontend file. Labels confirm <code>arch:landing-site</code>. |
| 6 | Woodpecker pipeline green | Woodpecker API: pipeline #215 (push to main for PR #217 merge) | PASS | Pipeline #215 status: <code>success</code> |
| 7 | Pod running, 0 restarts | <code>kubectl get pods -n westsidekingsandqueens</code> | PASS | Pod <code>westside-landing-858b9788-pq57l</code> Running, restarts: 0 |
| 8 | Image tag includes PR #217 | Compared deployed image SHA with git log | PASS | Deployed: <code>282741ec7a74</code> (HEAD). PR #217 merge: <code>4811f80a</code> is ancestor. Confirmed via <code>git log</code>. |
Route-Level Smoke Test
| Route | HTTP Status |
|---|---|
| / | 200 |
| /about | 200 |
| /staff | 200 |
| /schedule | 200 |
| /sponsors | 200 |
| /tryouts | 200 |
| /teams | 200 |
| /coach | 200 |
| /admin | 200 |
Regression Check
All 9 critical routes return HTTP 200. No regressions detected. The change was scoped to a single file (
coach/+page.svelte) and uses existing API endpoints with client-side filtering, so regression risk is minimal.Discovered Issues
None.