# Bug Fixing / QA / Regression Specification

## Goal

The site has many existing bugs. Fix them systematically instead of patching random symptoms.

## Phase 1 — Establish a reproducible baseline

Run locally and capture:
- Laravel logs
- PHP errors/warnings
- browser console errors
- network failures
- failed API/AJAX requests
- broken images
- broken links
- JS exceptions
- database exceptions
- queue/job failures
- scheduled task failures

Create a bug register with:
- ID
- URL/feature
- steps to reproduce
- expected behavior
- actual behavior
- error message
- probable root cause
- severity
- fix
- test added
- verification status

## Priority definitions

P0:
- data loss
- order/payment corruption
- authentication/security
- checkout completely broken

P1:
- major cart/product/admin/SEO failure
- common user path broken

P2:
- feature-level bug with workaround

P3:
- cosmetic/minor UX defect

## High-risk areas to test

### Auth
- login
- logout
- registration
- password reset
- authorization boundaries

### Catalog
- category
- subcategory
- product detail
- variants
- stock
- pricing
- inactive products

### Cart
- guest
- authenticated
- add/update/remove
- cookie/session/database synchronization
- quantity limits
- merge guest cart after login

### Checkout
- address
- shipping
- coupon
- inventory
- price calculation
- order creation
- payment
- failure/retry paths

### Admin
- CRUD
- validation
- permissions
- file uploads
- sorting
- filters
- bulk actions

### Blog
- draft/published
- editor
- images
- slug collisions
- SEO

### Navigation
- menu tree
- category tree
- mobile menu

## Laravel-specific audit

Inspect:
- N+1 queries
- mass assignment
- validation gaps
- authorization
- route model binding
- null handling
- missing indexes
- transaction boundaries
- race conditions around stock/order creation
- queue retries
- cache invalidation
- filesystem permissions
- config/cache mismatch
- environment assumptions

## Error handling

- Do not show stack traces to end users
- Log actionable context
- Use friendly Persian messages
- Preserve exception details in local/dev
- Use correct HTTP status codes
- AJAX endpoints should return predictable JSON

## Testing strategy

Prioritize feature tests for:
- cart
- checkout
- wholesale carton validation
- category hierarchy
- menus
- blog publishing
- SEO metadata
- sitemap
- redirects

Use unit tests for domain/service calculations such as wholesale rule evaluation.

Use browser/E2E tests for critical flows if project infrastructure supports them.

## Performance checks

Look for:
- repeated database queries in loops
- loading full models when only a few columns are needed
- missing indexes on foreign keys/search fields
- oversized images
- unbounded admin queries
- unnecessary API requests

## Final QA gate

Do not mark complete until:
- no known P0/P1 issues remain in changed areas
- regression suite passes
- migrations run from clean DB
- critical user flows pass
- no new console errors
- no new server errors
- production-sensitive changes are documented
