Commit Graph

9 Commits

Author SHA1 Message Date
Savannah Savings 9a30b4bd44 fix(GRO-2180): portal Appointments handles ISO startTime shape
CI / Test (pull_request) Failing after 14m48s
CI / Lint & Typecheck (pull_request) Failing after 14m48s
CI / Build & Push Docker Image (pull_request) Has been skipped
The /api/portal/appointments contract returns ISO `startTime`/`endTime`
and no `date`/`time` fields. `isUpcoming()` read `appt.date`/`appt.time`
and called `parseTimeTo24Hour(undefined)` → `undefined.split(' ')` →
TypeError. The throw was swallowed by the fetch `try/catch`, surfacing
"Failed to load appointments" and making "Book New" unreachable for
every signed-in customer.

- Add `getAppointmentStart()` helper: prefers ISO `startTime`, falls
  back to legacy `date` + `time`, returns null on missing/unparseable
  input so callers never throw.
- Rewrite `isUpcoming()` on top of the helper.
- Add `formatAppointmentDate()` / `formatAppointmentTime()` and use them
  at all date/time display sites (list row + RescheduleFlow header).
- Guard `parseTimeTo24Hour(undefined)`.
- Mark `date`/`time` optional and add `startTime`/`endTime` to the
  `Appointment` type to match the API contract.
- Tests: API-shape fixtures + regression guards (no throw on startTime
  shape, undefined-safe parse, helper resolution/formatting).
- Update UAT_PLAYBOOK.md §5.12 (customer portal appointments).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 02:59:31 +00:00
groombook-engineer[bot] 90f6a30b74 docs(GRO-1289): add UAT_PLAYBOOK.md with auth base URL test cases (#5)
* docs(GRO-1289): add UAT_PLAYBOOK.md with auth base URL test cases

Add UAT_PLAYBOOK.md covering VITE_API_URL auth resolution:
- TC-AUTH-4.1.x: Tests for when VITE_API_URL is set
- TC-AUTH-4.2.x: Tests for when VITE_API_URL is unset (window.location.origin fallback)
- TC-AUTH-4.3.x: Session persistence tests

Updated UAT_PLAYBOOK.md §4 — auth base URL resolution test cases.

GRO-1289

* docs(GRO-1289): restore full UAT_PLAYBOOK with auth base URL test cases

- Restored Pre-conditions section (§3)
- Restored original §5.1 Authentication UI test cases
- Inserted new auth base URL resolution test cases (§5.2–§5.4):
  - TC-AUTH-5.2.x: VITE_API_URL set scenarios
  - TC-AUTH-5.3.x: VITE_API_URL unset fallback scenarios
  - TC-AUTH-5.4.x: Session persistence scenarios
- Restored all other feature test sections (§5.5–§5.17)
- Restored broader Update Policy (§7)

Updated UAT_PLAYBOOK.md §5.2–§5.4 — auth base URL resolution test cases

Co-Authored-By: Paperclip <noreply@paperclip.ing>

---------

Co-authored-by: Chris Farhood <chris@farhood.org>
Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-05-14 21:10:35 +00:00
the-dogfather-cto[bot] 727e1db632 docs: add UAT_PLAYBOOK.md for web app (#2)
docs: add UAT_PLAYBOOK.md for web app
2026-05-11 13:19:19 +00:00
Chris Farhood e34bfc2933 docs: add UAT_PLAYBOOK.md for web app
Add comprehensive UAT playbook covering all 14 test sections for the React 19 PWA frontend.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-11 13:14:34 +00:00
Chris Farhood 9408ccff3e fix: add workspace config and remove --filter for extracted repo
The extracted repo is no longer a monorepo — pnpm --filter doesn't match
the root package. Add pnpm-workspace.yaml for packages/types, add
@groombook/types as workspace dep, and run commands directly at root.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-10 23:47:26 +00:00
groombook-engineer[bot] 00fb7accbd fix: add id-token write permission for OIDC ghcr.io auth
Docker build push was failing with permission_denied: write_package.
The build-push-action v6 uses OIDC for authentication which requires id-token: write.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-02 21:51:00 +00:00
groombook-engineer[bot] 7ee08d42b3 fix: add @types/node to resolve typecheck failures
Vitest globals require @types/node for process.env in test setup.
Tests pass in CI but typecheck fails without it.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-02 21:40:29 +00:00
groombook-engineer[bot] 45ed3587ba feat: extract groombook/web from monorepo
- Copy apps/web/ with all src, components, pages, portal
- Inline packages/types/ as local packages/types module
- Add tsconfig path aliases for @groombook/types
- Port Dockerfile and CI workflow
- Image name: ghcr.io/groombook/web

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-02 21:38:42 +00:00
the-dogfather-cto[bot] e03d052ec6 Initial commit 2026-05-02 21:35:00 +00:00