Environment: Vercel Preview only (not production)
URL: https://stathoops-git-feat-organizatio-0a2374-hallucination-engineering.vercel.app
Branch: feat/organizations-phase-1
Auth: Clerk test/dev accounts only
Prerequisite: Apply migration 20250101000117_registration_status_token.sql on shared Supabase before status-link tests.
Testers: Brian (director) · Aidin (coach / parent / UI)
How to use: Copy each scenario into Notion as a checkbox task. Mark Pass / Fail / Blocked. Note exact URL, account, and screenshot for Failures.
- Preview URL loads (hard refresh)
- Can sign in with Clerk test account
- Migration 117 applied (status tokens)
- Stripe test keys still on Preview env (for paid scenarios only)
- Have at least 3 test emails ready: director, coach, parent
Goal: Director launches a live team registration parents can complete.
| # | Steps | Expected | Pass |
|---|---|---|---|
| A1 | Sign up / sign in → choose Club / League Organizer | Lands on Organizations | [ ] |
| A2 | Create organization → type AAU / Travel | Org opens; Overview shows setup rail Team → Coach → Registration | [ ] |
| A3 | Sidebar | Shows Overview, Registrations, Teams, People, Settings. No Seasons & Leagues | [ ] |
| A4 | Create team (e.g. 14U Black) |
Team appears on Teams; setup Team step completes | [ ] |
| A5 | Assign coach with existing user email | Coach shows as assigned (green); Coach step completes | [ ] |
| A6 | Create & open registration on that team | Success shows live /register/... link; status Open on card |
[ ] |
| A7 | Open registration link signed out / as parent | Form loads (not “currently closed”) | [ ] |
| A8 | Submit free registration | Confirmation shows; View Registration Status CTA present | [ ] |
| A9 | Open status link | Shows Under Review; no fake team placement | [ ] |
| A10 | Director Registrations → Needs review → Approve + assign team | Row updates; parent email sent (if Resend configured) | [ ] |
| A11 | Refresh status page | Shows Approved + team name | [ ] |
| A12 | Overview | “To Review” pending count drops | [ ] |
Notes / bugs:
| # | Steps | Expected | Pass |
|---|---|---|---|
| B1 | Assign coach with email that has no StatHoops account | Card shows pending invite (amber/clock), not green assigned | [ ] |
| B2 | Setup Coach step | Stays incomplete until coach accepts / joins | [ ] |
| B3 | Rescind invite | Invite disappears; can re-invite | [ ] |
| B4 | Change / remove assigned coach | Previous coach removed; new assign works | [ ] |
Notes / bugs:
| # | Steps | Expected | Pass |
|---|---|---|---|
| C1 | Copy registration link | Clipboard works | [ ] |
| C2 | Open in new tab | Public form loads | [ ] |
| C3 | Close registration | Public form says closed | [ ] |
| C4 | Re-open registration | Form works again | [ ] |
| C5 | Optional: attach existing org waiver when creating | Waiver checkbox required on public form | [ ] |
| C6 | Create with no waivers | Allowed; note about no waivers is clear | [ ] |
Notes / bugs:
| # | Steps | Expected | Pass |
|---|---|---|---|
| D1 | Parent must sign in to submit | Redirect to sign-in then back | [ ] |
| D2 | Free registration confirmation | Org name, registration name, payment free, next-step copy | [ ] |
| D3 | Paid registration (Stripe test 4242…) |
Checkout → return → confirmation + status link | [ ] |
| D4 | Cancel Stripe checkout | Does not claim paid; can retry (note current limitation) | [ ] |
| D5 | Status page without login | Works via token URL only | [ ] |
| D6 | Rejected registration | Status + email show rejected; no team | [ ] |
Notes / bugs:
| # | Steps | Expected | Pass |
|---|---|---|---|
| E1 | Filter Needs review | Only pending | [ ] |
| E2 | Filter Incomplete payment | Unpaid paid-offerings | [ ] |
| E3 | Filter Approved / Placed / Rejected / All | Correct subsets | [ ] |
| E4 | Expand row detail | Payment, waiver, DOB, team, submitted time | [ ] |
| E5 | Approve without team | Approved, not placed | [ ] |
| E6 | Approve with team | Placed chip + optional player create | [ ] |
| E7 | Reject | Status rejected | [ ] |
| E8 | Approve + Mark Paid (unpaid paid reg) | Paid + approved | [ ] |
| E9 | CSV export | Includes Team Assigned column; matches filtered rows | [ ] |
Notes / bugs:
| # | Steps | Expected | Pass |
|---|---|---|---|
| F1 | Create / open Rec org | Sidebar includes Seasons & Leagues | [ ] |
| F2 | Setup rail | Rec steps (league → season → …), not AAU 3-step | [ ] |
| F3 | Create league | Appears under Seasons | [ ] |
| F4 | Add season (presets / dates) | Season created; checklist advances | [ ] |
| F5 | Assign commissioner (optional) | Commissioner listed; can remove | [ ] |
| F6 | Create program + registration (Rec path) | Uses Registration language, not “offering” | [ ] |
| F7 | Open registration; parent submit | Same parent confirmation/status behavior | [ ] |
| F8 | People still says Staff (not Coaches) | Copy correct for Rec | [ ] |
Notes / bugs:
| # | Steps | Expected | Pass |
|---|---|---|---|
| G1 | Overview setup mode | One primary next action; not Manage accordion wall | [ ] |
| G2 | Overview after setup | Stats + pending review meaningful | [ ] |
| G3 | Teams / People / Settings / Registrations | Each loads without blank/crash | [ ] |
| G4 | Settings → View public page | /o/[slug] shows org, teams, open regs |
[ ] |
| G5 | Logo upload / remove | Updates header | [ ] |
| G6 | Change org type Rec ↔ AAU | Sidebar / setup adapt; no crash | [ ] |
| G7 | People invite staff | Invitation or membership works | [ ] |
| G8 | Cannot demote/remove last director | Error/toast | [ ] |
Notes / bugs:
| # | Steps | Expected | Pass |
|---|---|---|---|
| H1 | /o/[slug] not logged in |
Renders org profile | [ ] |
| H2 | Open regs listed | Links to /register/[slug] |
[ ] |
| H3 | Closed regs not listed | Hidden from public profile | [ ] |
| H4 | 404 bogus slug | Friendly not found | [ ] |
Notes / bugs:
| # | Steps | Expected | Pass |
|---|---|---|---|
| I1 | Register when capacity full | Blocked with clear message | [ ] |
| I2 | Duplicate submit same child (if possible) | Sensible behavior / no silent double | [ ] |
| I3 | Staff (non-director) opens Registrations | Can view; cannot decide (or as designed) | [ ] |
| I4 | Coach without org membership | Can use team workspace; no org admin sidebar | [ ] |
| I5 | Create registration before coach | Allowed; setup still shows Coach incomplete | [ ] |
| I6 | Invalid status token URL | Clear error, not crash | [ ] |
Notes / bugs:
Use preview URL above. Brian gets you logged in.
- Go to Organizations → open the AAU test org (or create one).
- Create a team.
- Assign a coach (your email or a test email).
- Create registration on that team → copy the link.
- Open the link → fill the form → submit.
- Click View Registration Status and bookmark it.
- Tell Brian to approve you.
- Refresh status page / check email.
- Reply on Discord: what was confusing, broken, or slow.
Do not look for a “Program” step. Ignore Stripe/paid unless Brian asks.
- No tryouts evaluation / offer board yet
- No bulk approve API
- No roster/family CSV import
- No persistent parent portal beyond status token page
- Stripe cancel does not resume same session cleanly
- Inline waiver builder still Settings/API-only (attach existing works)
Scenario: (e.g. A8)
Account / role:
Exact URL:
Steps:
Expected:
Actual:
Screenshot:
Severity: blocker / major / minor
| Area | Tester | Date | Result |
|---|---|---|---|
| AAU happy path | |||
| Coach invite | |||
| Parent status / email | |||
| Rec regression | |||
| Public pages |