- Add global-error.tsx at app root (inline styles, wraps html/body) - Add group-level error.tsx for (public) — catches all unguarded public routes - Add per-route error.tsx for high-traffic public segments: listings, listings/[id], du-an, du-an/[slug], khu-cong-nghiep, khu-cong-nghiep/[slug], agents, agents/[id], payment - Add auth/callback/error.tsx for OAuth callback failures - Commit coverage table to apps/web/docs/error-boundary-coverage.md Pre-existing API test failures unrelated to this change (broker-cert, update-listing-status, mcp.module) were already failing on master. Closes GOO-115 Co-Authored-By: Paperclip <noreply@paperclip.ing>
94 lines
4.9 KiB
Markdown
94 lines
4.9 KiB
Markdown
# Error Boundary Coverage
|
|
|
|
Audited: 2026-04-24 | Issue: [GOO-115](/GOO/issues/GOO-115)
|
|
|
|
## Summary
|
|
|
|
| Route group | Segment | `error.tsx` | Notes |
|
|
|---|---|:---:|---|
|
|
| root | `app/` | ✅ | `app/error.tsx` |
|
|
| root global | `app/` | ✅ | `app/global-error.tsx` — added GOO-115 |
|
|
| locale root | `app/[locale]/` | ✅ | `app/[locale]/error.tsx` |
|
|
| **(admin)** group | `(admin)/` | ✅ | covers all admin sub-routes |
|
|
| **(auth)** group | `(auth)/` | ✅ | covers login / register |
|
|
| auth callback | `[locale]/auth/callback/` | ✅ | added GOO-115 |
|
|
| **(dashboard)** group | `(dashboard)/` | ✅ | covers all dashboard sub-routes |
|
|
| **(public)** group | `(public)/` | ✅ | added GOO-115 — fallback for uncovered public routes |
|
|
| public — search | `(public)/search/` | ✅ | existed pre-audit |
|
|
| public — listings | `(public)/listings/` | ✅ | added GOO-115 |
|
|
| public — listings detail | `(public)/listings/[id]/` | ✅ | added GOO-115 |
|
|
| public — du-an | `(public)/du-an/` | ✅ | added GOO-115 |
|
|
| public — du-an detail | `(public)/du-an/[slug]/` | ✅ | added GOO-115 |
|
|
| public — khu-cong-nghiep | `(public)/khu-cong-nghiep/` | ✅ | added GOO-115 |
|
|
| public — khu-cong-nghiep detail | `(public)/khu-cong-nghiep/[slug]/` | ✅ | added GOO-115 |
|
|
| public — agents | `(public)/agents/` | ✅ | added GOO-115 |
|
|
| public — agent profile | `(public)/agents/[id]/` | ✅ | added GOO-115 |
|
|
| public — payment | `(public)/payment/` | ✅ | added GOO-115 |
|
|
|
|
## Routes covered by group boundary (no per-route file needed)
|
|
|
|
These routes fall under a group-level `error.tsx` that handles them:
|
|
|
|
| Route | Covered by |
|
|
|---|---|
|
|
| `(public)/bao-cao/` | `(public)/error.tsx` |
|
|
| `(public)/bao-cao/[id]/` | `(public)/error.tsx` |
|
|
| `(public)/bao-cao/tao-moi/` | `(public)/error.tsx` |
|
|
| `(public)/chuyen-nhuong/` | `(public)/error.tsx` |
|
|
| `(public)/chuyen-nhuong/[id]/` | `(public)/error.tsx` |
|
|
| `(public)/chuyen-nhuong/dang-tin/` | `(public)/error.tsx` |
|
|
| `(public)/compare/` | `(public)/error.tsx` |
|
|
| `(public)/design-system/` | `(public)/error.tsx` |
|
|
| `(public)/khu-cong-nghiep/cho-thue/` | `(public)/khu-cong-nghiep/error.tsx` |
|
|
| `(public)/khu-cong-nghiep/so-sanh/` | `(public)/khu-cong-nghiep/error.tsx` |
|
|
| `(public)/payment/return/` | `(public)/payment/error.tsx` |
|
|
| `(public)/pricing/` | `(public)/error.tsx` |
|
|
| `(admin)/admin/accounts/developers/` | `(admin)/error.tsx` |
|
|
| `(admin)/admin/accounts/park-operators/` | `(admin)/error.tsx` |
|
|
| `(admin)/admin/audit-log/` | `(admin)/error.tsx` |
|
|
| `(admin)/admin/kyc/` | `(admin)/error.tsx` |
|
|
| `(admin)/admin/moderation/` | `(admin)/error.tsx` |
|
|
| `(admin)/admin/settings/ai/` | `(admin)/error.tsx` |
|
|
| `(admin)/admin/users/` | `(admin)/error.tsx` |
|
|
| `(auth)/login/` | `(auth)/error.tsx` |
|
|
| `(auth)/register/` | `(auth)/error.tsx` |
|
|
| `(dashboard)/dashboard/kyc/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/dashboard/payments/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/dashboard/profile/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/dashboard/reports/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/dashboard/reports/[id]/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/dashboard/reports/new/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/dashboard/saved-searches/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/dashboard/subscription/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/dashboard/valuation/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/dev/tokens/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/industrial-parks/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/industrial-parks/[id]/edit/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/industrial-parks/new/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/inquiries/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/leads/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/my-listings/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/my-listings/[id]/edit/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/my-listings/new/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/projects/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/projects/[id]/edit/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/projects/new/` | `(dashboard)/error.tsx` |
|
|
| `(dashboard)/analytics/` | `(dashboard)/error.tsx` |
|
|
| `[locale]/auth/callback/google/` | `auth/callback/error.tsx` |
|
|
| `[locale]/auth/callback/zalo/` | `auth/callback/error.tsx` |
|
|
|
|
## Files added in GOO-115
|
|
|
|
- `apps/web/app/global-error.tsx`
|
|
- `apps/web/app/[locale]/(public)/error.tsx`
|
|
- `apps/web/app/[locale]/(public)/listings/error.tsx`
|
|
- `apps/web/app/[locale]/(public)/listings/[id]/error.tsx`
|
|
- `apps/web/app/[locale]/(public)/du-an/error.tsx`
|
|
- `apps/web/app/[locale]/(public)/du-an/[slug]/error.tsx`
|
|
- `apps/web/app/[locale]/(public)/khu-cong-nghiep/error.tsx`
|
|
- `apps/web/app/[locale]/(public)/khu-cong-nghiep/[slug]/error.tsx`
|
|
- `apps/web/app/[locale]/(public)/agents/error.tsx`
|
|
- `apps/web/app/[locale]/(public)/agents/[id]/error.tsx`
|
|
- `apps/web/app/[locale]/(public)/payment/error.tsx`
|
|
- `apps/web/app/[locale]/auth/callback/error.tsx`
|