44 lines
1.8 KiB
Markdown
44 lines
1.8 KiB
Markdown
# QA Checklist — 001 Public Grid Viewer
|
|
|
|
## Setup / Environment
|
|
- [ ] App boots locally (Sail up, migrations run)
|
|
- [ ] `npm run dev` works and page loads without console errors
|
|
- [ ] Storage is writable (local/s3) and master image is accessible
|
|
|
|
## Grid Rendering
|
|
- [ ] Master image renders at correct aspect ratio
|
|
- [ ] Grid overlay aligns with master image (no offset)
|
|
- [ ] Cell size matches config (e.g., 20px) and selection snaps to cell units
|
|
- [ ] Zoom in/out works (mouse wheel + pinch on mobile)
|
|
- [ ] Pan/drag works without jitter
|
|
|
|
## Selection Behavior
|
|
- [ ] Drag selection produces correct rectangle (top-left, bottom-right)
|
|
- [ ] Selection count equals `(w * h)` in cells
|
|
- [ ] Selection cannot go out of bounds (clamped)
|
|
- [ ] Clearing selection resets UI state cleanly
|
|
|
|
## Reservation Flow (if present)
|
|
- [ ] Reserve request succeeds for free area
|
|
- [ ] Conflict returns 409 and UI shows a clear error
|
|
- [ ] Reserved area is visibly blocked in the grid
|
|
- [ ] Holds expire after configured minutes (manual prune or scheduler)
|
|
|
|
## Status & Feedback
|
|
- [ ] Sidebar updates live (cells, price, status)
|
|
- [ ] User sees loading state while reserving/charging
|
|
- [ ] Success/failure toasts (or inline messages) appear appropriately
|
|
|
|
## Performance / Stability
|
|
- [ ] No “thousands of DOM nodes” grid rendering (canvas/konva only)
|
|
- [ ] Page remains responsive when zooming/panning rapidly
|
|
- [ ] No memory leak warnings in devtools during repeated interactions
|
|
|
|
## Security / Input Validation (basic)
|
|
- [ ] Server rejects invalid payloads (missing coords, negative sizes, too-large selection)
|
|
- [ ] Server maps pixels → cells consistently (tested)
|
|
|
|
## Regression
|
|
- [ ] `./vendor/bin/sail artisan test` passes
|
|
- [ ] `./vendor/bin/sail artisan pint` produces no unexpected changes (after formatting pass)
|