- Run
python scripts/setup.py - Run
npm run dev - Open http://localhost:5173
TC-1-01: Homepage renders correctly Steps:
- Open http://localhost:5173
- Observe the page Expected: Dark navy background, "Stop arguing. Start voting. Just go." headline, two CTAs ("Create a Trip" primary button, "Join a Trip" secondary button), 3 feature cards below fold Status: [ ] Pass [ ] Fail Notes:
TC-1-02: Create Trip form — validation Steps:
- Click "Create a Trip"
- Leave all fields empty and click "Create Trip →" Expected: Red error messages appear under Trip name and Destination fields; form does not submit Status: [ ] Pass [ ] Fail Notes:
TC-1-03: Create Trip — successful submission Steps:
- Go to http://localhost:5173/create
- Enter: Trip name = "Test Trip 🌴", Destination = "Bali, Indonesia", Start = 2026-06-01, End = 2026-06-07, Travelers = 5
- Click "Create Trip →" Expected: Page redirects to /trip/[6-char-code]/dashboard; sidebar shows "Test Trip 🌴", "Bali, Indonesia", correct dates Status: [ ] Pass [ ] Fail Notes:
TC-1-04: Trip persists after refresh Steps:
- Create a trip (TC-1-03)
- Note the URL: /trip/[CODE]/dashboard
- Refresh the browser (F5) Expected: Dashboard still shows the same trip data; no white screen or "Trip not found" Status: [ ] Pass [ ] Fail Notes:
TC-1-05: Join Trip — invalid code Steps:
- Go to http://localhost:5173/join
- Enter code "XXXXXX" (any non-existent code) and name "Priya"
- Click "Join Trip →" Expected: Red error message: "Trip not found. Check the code and try again." Status: [ ] Pass [ ] Fail Notes:
TC-1-06: Join Trip — valid code Steps:
- Create a trip and note the 6-char code
- Go to http://localhost:5173/join
- Enter the correct code and name "Priya"
- Click "Join Trip →" Expected: Redirects to /trip/[CODE]/dashboard; "Priya" appears in the member list in the sidebar Status: [ ] Pass [ ] Fail Notes:
TC-1-07: Join via URL parameter Steps:
- Create a trip and note the code
- Navigate directly to http://localhost:5173/join/[CODE] Expected: Join page loads with the trip code pre-filled in the code input Status: [ ] Pass [ ] Fail Notes:
TC-1-08: Dashboard — trip info in sidebar Steps:
- Create a trip with known details
- View the dashboard Expected: Sidebar shows trip name, destination, date range, member count (e.g., "1/4"), countdown badge, trip code widget Status: [ ] Pass [ ] Fail Notes:
TC-1-09: Trip code copy button Steps:
- On the dashboard, click "Copy link" in the trip code widget Expected: A URL like http://localhost:5173/join/[CODE] is copied to clipboard; button briefly shows "Copied!" Status: [ ] Pass [ ] Fail Notes:
TC-1-10: Unknown route redirects home Steps:
- Navigate to http://localhost:5173/this-does-not-exist Expected: Redirects to the homepage (/) Status: [ ] Pass [ ] Fail Notes:
TC-1-11: Trip not found page Steps:
- Navigate to http://localhost:5173/trip/ZZZZZZ/dashboard (non-existent code) Expected: "Trip not found" message with a "Go home" button Status: [ ] Pass [ ] Fail Notes:
TC-1-12: validate.py passes Steps:
- Run
python scripts/validate.pyExpected: All three checks pass:
- ✓ All required files present
- ✓ .gitignore correctly excludes instruction files
- ✓ Build passed Status: [ ] Pass [ ] Fail Notes: