Some checks failed
- Add Development URL Quick Reference section to url-routing overview with all login URLs, entry points, and full examples - Replace /shop/ path segments with /storefront/ across 50 docs files - Update file references: shop_pages.py → storefront_pages.py, templates/shop/ → templates/storefront/, api/v1/shop/ → api/v1/storefront/ - Preserve domain references (orion.shop) and /store/ staff dashboard paths - Archive docs left unchanged (historical) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
732 lines
19 KiB
Markdown
732 lines
19 KiB
Markdown
# Storefront Frontend Features - Testing Checklist
|
|
|
|
**Last Updated:** 2026-01-08
|
|
**Total Pages:** 15+
|
|
**Status:** All Working
|
|
|
|
---
|
|
|
|
## 1. Homepage
|
|
|
|
### Homepage Display
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| Load homepage | `/storefront/` | GET | Working |
|
|
|
|
**UI Elements to Test:**
|
|
- [ ] Hero section with store branding
|
|
- [ ] Store name and tagline display
|
|
- [ ] Store description
|
|
- [ ] Featured categories section
|
|
- [ ] Featured products section
|
|
- [ ] "Shop Now" call-to-action button
|
|
- [ ] Dark mode toggle in header
|
|
- [ ] Responsive layout (mobile/tablet/desktop)
|
|
|
|
---
|
|
|
|
## 2. Product Catalog
|
|
|
|
### Products List
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| Browse all products | `/storefront/products` | GET | Working |
|
|
| API: List products | `/api/v1/storefront/products` | GET | Working |
|
|
| Filter featured products | `/api/v1/storefront/products?is_featured=true` | GET | Working |
|
|
| Pagination | `/api/v1/storefront/products?skip=&limit=` | GET | Working |
|
|
|
|
**UI Elements to Test:**
|
|
- [ ] Product grid display (2-4 columns)
|
|
- [ ] Product cards with image, name, price
|
|
- [ ] Category filter dropdown
|
|
- [ ] Sort options (newest, price low-high, price high-low, popular)
|
|
- [ ] Search input
|
|
- [ ] Pagination controls
|
|
- [ ] Add to cart from product card
|
|
- [ ] Placeholder images fallback
|
|
|
|
**Query Parameters:**
|
|
- skip (pagination offset)
|
|
- limit (items per page, default: 100, max: 1000)
|
|
- search (product name search)
|
|
- is_featured (boolean filter)
|
|
|
|
---
|
|
|
|
## 3. Product Detail
|
|
|
|
### Product Detail Page
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| View product details | `/storefront/products/{product_id}` | GET | Working |
|
|
| API: Get product | `/api/v1/storefront/products/{product_id}` | GET | Working |
|
|
|
|
**UI Elements to Test:**
|
|
- [ ] Main product image
|
|
- [ ] Image gallery with thumbnails
|
|
- [ ] Thumbnail navigation
|
|
- [ ] Product title
|
|
- [ ] Brand display
|
|
- [ ] Category display
|
|
- [ ] SKU display
|
|
- [ ] Regular price
|
|
- [ ] Sale price (if applicable)
|
|
- [ ] Discount badge
|
|
- [ ] Product description
|
|
- [ ] Quantity selector (+/- buttons)
|
|
- [ ] Add to Cart button
|
|
- [ ] Breadcrumb navigation
|
|
- [ ] Related products (future)
|
|
|
|
---
|
|
|
|
## 4. Search
|
|
|
|
### Product Search
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| Search page | `/storefront/search` | GET | Working |
|
|
| Search with query | `/storefront/search?q=` | GET | Working |
|
|
| API: Search products | `/api/v1/storefront/products/search?q=` | GET | Working |
|
|
|
|
**UI Elements to Test:**
|
|
- [ ] Search input field
|
|
- [ ] Search button
|
|
- [ ] Result count display
|
|
- [ ] Search query in header
|
|
- [ ] Product grid for results
|
|
- [ ] Empty state (no query)
|
|
- [ ] No results state
|
|
- [ ] Pagination for results
|
|
|
|
**Search Fields (Backend):**
|
|
- Product names
|
|
- Descriptions
|
|
- SKUs
|
|
- Brands
|
|
- GTINs
|
|
|
|
**Query Parameters:**
|
|
- q (search query, required, min 1 char)
|
|
- skip (pagination offset)
|
|
- limit (items per page, default: 50, max: 100)
|
|
|
|
---
|
|
|
|
## 5. Shopping Cart
|
|
|
|
### Cart Management
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| View cart page | `/storefront/cart` | GET | Working |
|
|
| API: Get cart | `/api/v1/storefront/cart/{session_id}` | GET | Working |
|
|
| API: Add to cart | `/api/v1/storefront/cart/{session_id}/items` | POST | Working |
|
|
| API: Update quantity | `/api/v1/storefront/cart/{session_id}/items/{product_id}` | PUT | Working |
|
|
| API: Remove item | `/api/v1/storefront/cart/{session_id}/items/{product_id}` | DELETE | Working |
|
|
| API: Clear cart | `/api/v1/storefront/cart/{session_id}` | DELETE | Working |
|
|
|
|
**UI Elements to Test:**
|
|
- [ ] Cart item list
|
|
- [ ] Product image thumbnails
|
|
- [ ] Product names (clickable)
|
|
- [ ] Unit prices
|
|
- [ ] Quantity inputs
|
|
- [ ] Increment/decrement buttons
|
|
- [ ] Remove item button
|
|
- [ ] Line totals
|
|
- [ ] Cart subtotal
|
|
- [ ] Continue shopping link
|
|
- [ ] Proceed to checkout button
|
|
- [ ] Empty cart state
|
|
- [ ] Cart count badge in header
|
|
|
|
**Add to Cart Request:**
|
|
```json
|
|
{
|
|
"product_id": 123,
|
|
"quantity": 1
|
|
}
|
|
```
|
|
|
|
**Update Quantity Request:**
|
|
```json
|
|
{
|
|
"quantity": 2
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 6. Checkout
|
|
|
|
### Checkout Process
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| Checkout page | `/storefront/checkout` | GET | Working |
|
|
| API: Place order | `/api/v1/storefront/orders` | POST | Working |
|
|
|
|
### Step 1: Contact & Shipping
|
|
**Form Fields:**
|
|
- [ ] Email address (required)
|
|
- [ ] First name (required)
|
|
- [ ] Last name (required)
|
|
- [ ] Phone number
|
|
- [ ] Shipping address line 1 (required)
|
|
- [ ] Shipping address line 2
|
|
- [ ] Postal code (required)
|
|
- [ ] City (required)
|
|
- [ ] Country selector (required)
|
|
|
|
### Step 2: Billing & Shipping Method
|
|
**Form Fields:**
|
|
- [ ] Same as shipping checkbox
|
|
- [ ] Billing address line 1
|
|
- [ ] Billing address line 2
|
|
- [ ] Billing postal code
|
|
- [ ] Billing city
|
|
- [ ] Billing country
|
|
- [ ] Shipping method selector
|
|
|
|
### Step 3: Order Review
|
|
**UI Elements:**
|
|
- [ ] Order items summary
|
|
- [ ] Quantities and prices
|
|
- [ ] Subtotal
|
|
- [ ] Shipping cost
|
|
- [ ] Tax amount
|
|
- [ ] Order total
|
|
- [ ] Terms acceptance checkbox
|
|
- [ ] Place order button
|
|
- [ ] Loading state during submission
|
|
|
|
**Place Order Request:**
|
|
```json
|
|
{
|
|
"email": "customer@example.com",
|
|
"first_name": "John",
|
|
"last_name": "Doe",
|
|
"phone": "+352123456",
|
|
"ship_address_line_1": "123 Main St",
|
|
"ship_postal_code": "1234",
|
|
"ship_city": "Luxembourg",
|
|
"ship_country": "LU",
|
|
"bill_address_line_1": "123 Main St",
|
|
"bill_postal_code": "1234",
|
|
"bill_city": "Luxembourg",
|
|
"bill_country": "LU",
|
|
"session_id": "cart-session-id"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 7. Authentication
|
|
|
|
### Login
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| Login page | `/storefront/account/login` | GET | Working |
|
|
| API: Login | `/api/v1/storefront/auth/login` | POST | Working |
|
|
|
|
**Form Fields:**
|
|
- [ ] Email/username (required)
|
|
- [ ] Password (required)
|
|
- [ ] Forgot password link
|
|
- [ ] Register link
|
|
|
|
**Login Request:**
|
|
```json
|
|
{
|
|
"email_or_username": "customer@example.com",
|
|
"password": "password123"
|
|
}
|
|
```
|
|
|
|
**Response:**
|
|
- access_token
|
|
- token_type ("bearer")
|
|
- expires_in (seconds)
|
|
- user (profile object)
|
|
|
|
### Registration
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| Register page | `/storefront/account/register` | GET | Working |
|
|
| API: Register | `/api/v1/storefront/auth/register` | POST | Working |
|
|
|
|
**Form Fields:**
|
|
- [ ] First name (required)
|
|
- [ ] Last name (required)
|
|
- [ ] Email (required, unique per store)
|
|
- [ ] Password (required, min 8 chars, letter + digit)
|
|
- [ ] Confirm password (required, must match)
|
|
- [ ] Phone (optional)
|
|
- [ ] Login link
|
|
|
|
**Validation Tests:**
|
|
- [ ] Email already exists error
|
|
- [ ] Password too short error
|
|
- [ ] Password missing letter/digit error
|
|
- [ ] Passwords don't match error
|
|
|
|
**Registration Request:**
|
|
```json
|
|
{
|
|
"email": "newcustomer@example.com",
|
|
"password": "password123",
|
|
"first_name": "Jane",
|
|
"last_name": "Doe",
|
|
"phone": "+352123456"
|
|
}
|
|
```
|
|
|
|
### Forgot Password
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| Forgot password page | `/storefront/account/forgot-password` | GET | Working |
|
|
| API: Request reset | `/api/v1/storefront/auth/forgot-password` | POST | Working |
|
|
|
|
**Form Fields:**
|
|
- [ ] Email (required)
|
|
- [ ] Submit button
|
|
- [ ] Back to login link
|
|
|
|
**Request:**
|
|
```json
|
|
{
|
|
"email": "customer@example.com"
|
|
}
|
|
```
|
|
|
|
**Note:** Returns generic message regardless of email existence (security).
|
|
|
|
### Reset Password
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| Reset password page | `/storefront/account/reset-password` | GET | Working |
|
|
| API: Reset password | `/api/v1/storefront/auth/reset-password` | POST | Working |
|
|
|
|
**Form Fields:**
|
|
- [ ] Reset token (auto-filled from URL)
|
|
- [ ] New password (required)
|
|
- [ ] Confirm password (required)
|
|
|
|
**Request:**
|
|
```json
|
|
{
|
|
"reset_token": "token-from-email",
|
|
"new_password": "newpassword123"
|
|
}
|
|
```
|
|
|
|
**Validation Tests:**
|
|
- [ ] Invalid/expired token error
|
|
- [ ] Password too weak error
|
|
- [ ] Passwords don't match error
|
|
|
|
### Logout
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| API: Logout | `/api/v1/storefront/auth/logout` | POST | Working |
|
|
|
|
---
|
|
|
|
## 8. Customer Dashboard
|
|
|
|
### Account Dashboard
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| Dashboard page | `/storefront/account/dashboard` | GET | Working |
|
|
| API: Get profile | `/api/v1/storefront/profile` | GET | Working |
|
|
|
|
**UI Elements to Test:**
|
|
- [ ] Welcome message with name
|
|
- [ ] Orders card (count, link)
|
|
- [ ] Profile card (email, link)
|
|
- [ ] Addresses card (link)
|
|
- [ ] Messages card (unread count badge, link)
|
|
- [ ] Quick stats display
|
|
|
|
---
|
|
|
|
## 9. Customer Profile
|
|
|
|
### Profile Management
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| Profile page | `/storefront/account/profile` | GET | Working |
|
|
| API: Get profile | `/api/v1/storefront/profile` | GET | Working |
|
|
| API: Update profile | `/api/v1/storefront/profile` | PUT | Working |
|
|
|
|
**Profile Form Fields:**
|
|
- [ ] First name
|
|
- [ ] Last name
|
|
- [ ] Email (with uniqueness validation)
|
|
- [ ] Phone
|
|
- [ ] Preferred language selector (en, fr, de, lb)
|
|
- [ ] Marketing consent toggle
|
|
- [ ] Save button
|
|
|
|
**Update Profile Request:**
|
|
```json
|
|
{
|
|
"email": "newemail@example.com",
|
|
"first_name": "John",
|
|
"last_name": "Doe",
|
|
"phone": "+352123456",
|
|
"marketing_consent": true,
|
|
"preferred_language": "en"
|
|
}
|
|
```
|
|
|
|
### Change Password
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| API: Change password | `/api/v1/storefront/profile/password` | PUT | Working |
|
|
|
|
**Password Change Form:**
|
|
- [ ] Current password (required)
|
|
- [ ] New password (required, min 8 chars)
|
|
- [ ] Confirm password (required)
|
|
- [ ] Save button
|
|
|
|
**Request:**
|
|
```json
|
|
{
|
|
"current_password": "oldpassword123",
|
|
"new_password": "newpassword123",
|
|
"confirm_password": "newpassword123"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 10. Address Management
|
|
|
|
### Address List
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| Addresses page | `/storefront/account/addresses` | GET | Working |
|
|
| API: List addresses | `/api/v1/storefront/addresses` | GET | Working |
|
|
|
|
**UI Elements to Test:**
|
|
- [ ] Address cards grid
|
|
- [ ] Shipping/Billing type badges
|
|
- [ ] Default indicator
|
|
- [ ] Add address button
|
|
- [ ] Edit button per address
|
|
- [ ] Delete button per address
|
|
- [ ] Empty state
|
|
|
|
### Address CRUD
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| API: Get single address | `/api/v1/storefront/addresses/{address_id}` | GET | Working |
|
|
| API: Create address | `/api/v1/storefront/addresses` | POST | Working |
|
|
| API: Update address | `/api/v1/storefront/addresses/{address_id}` | PUT | Working |
|
|
| API: Set as default | `/api/v1/storefront/addresses/{address_id}/default` | PUT | Working |
|
|
| API: Delete address | `/api/v1/storefront/addresses/{address_id}` | DELETE | Working |
|
|
|
|
**Address Form Fields:**
|
|
- [ ] Address type (shipping/billing)
|
|
- [ ] First name (required)
|
|
- [ ] Last name (required)
|
|
- [ ] Merchant (optional)
|
|
- [ ] Address line 1 (required)
|
|
- [ ] Address line 2 (optional)
|
|
- [ ] Postal code (required)
|
|
- [ ] City (required)
|
|
- [ ] Country selector (required)
|
|
- [ ] Phone (optional)
|
|
- [ ] Set as default checkbox
|
|
|
|
**Create Address Request:**
|
|
```json
|
|
{
|
|
"address_type": "shipping",
|
|
"first_name": "John",
|
|
"last_name": "Doe",
|
|
"merchant": "ACME Inc",
|
|
"address_line_1": "123 Main St",
|
|
"address_line_2": "Apt 4",
|
|
"postal_code": "1234",
|
|
"city": "Luxembourg",
|
|
"country": "LU",
|
|
"phone": "+352123456",
|
|
"is_default": true
|
|
}
|
|
```
|
|
|
|
**Limit:** Max 10 addresses per customer
|
|
|
|
---
|
|
|
|
## 11. Order History
|
|
|
|
### Orders List
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| Orders page | `/storefront/account/orders` | GET | Working |
|
|
| API: List orders | `/api/v1/storefront/orders` | GET | Working |
|
|
|
|
**UI Elements to Test:**
|
|
- [ ] Order cards list
|
|
- [ ] Order number display
|
|
- [ ] Order date
|
|
- [ ] Order total
|
|
- [ ] Status badge (color-coded)
|
|
- [ ] View details button
|
|
- [ ] Download invoice button
|
|
- [ ] Pagination
|
|
- [ ] Empty state
|
|
|
|
**Order Statuses:**
|
|
- [ ] pending (yellow)
|
|
- [ ] processing (blue)
|
|
- [ ] shipped (purple)
|
|
- [ ] delivered (green)
|
|
- [ ] cancelled (red)
|
|
- [ ] refunded (gray)
|
|
|
|
### Order Detail
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| Order detail page | `/storefront/account/orders/{order_id}` | GET | Working |
|
|
| API: Get order | `/api/v1/storefront/orders/{order_id}` | GET | Working |
|
|
|
|
**UI Elements to Test:**
|
|
- [ ] Order header (number, date, status)
|
|
- [ ] Order items list
|
|
- [ ] Item names and quantities
|
|
- [ ] Unit prices
|
|
- [ ] Line totals
|
|
- [ ] Shipping address
|
|
- [ ] Order summary (subtotal, shipping, tax, total)
|
|
- [ ] Download invoice button
|
|
- [ ] Back to orders link
|
|
|
|
### Invoice Download
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| API: Download invoice | `/api/v1/storefront/orders/{order_id}/invoice` | GET | Working |
|
|
|
|
**Note:** Only available for orders with status: processing, partially_shipped, shipped, delivered, completed
|
|
|
|
---
|
|
|
|
## 12. Customer Messaging
|
|
|
|
### Messages List
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| Messages page | `/storefront/account/messages` | GET | Working |
|
|
| API: List conversations | `/api/v1/storefront/messages` | GET | Working |
|
|
| API: Get unread count | `/api/v1/storefront/messages/unread-count` | GET | Working |
|
|
|
|
**UI Elements to Test:**
|
|
- [ ] Conversation list
|
|
- [ ] Filter tabs (All, Open, Closed)
|
|
- [ ] Subject display
|
|
- [ ] Last message time
|
|
- [ ] Unread badge
|
|
- [ ] Participant name
|
|
- [ ] Pagination
|
|
- [ ] Empty state
|
|
|
|
### Conversation Detail
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| API: Get conversation | `/api/v1/storefront/messages/{conversation_id}` | GET | Working |
|
|
| API: Send message | `/api/v1/storefront/messages/{conversation_id}/messages` | POST | Working |
|
|
| API: Mark as read | `/api/v1/storefront/messages/{conversation_id}/read` | PUT | Working |
|
|
|
|
**UI Elements to Test:**
|
|
- [ ] Message thread display
|
|
- [ ] Sender names and timestamps
|
|
- [ ] Message content
|
|
- [ ] Attachments with download links
|
|
- [ ] Image thumbnails
|
|
- [ ] Reply text area
|
|
- [ ] File attachment button
|
|
- [ ] Send button
|
|
- [ ] Closed conversation indicator
|
|
|
|
**Send Message Request:**
|
|
```json
|
|
{
|
|
"content": "Hello, I have a question about my order..."
|
|
}
|
|
```
|
|
(with optional file attachments as multipart/form-data)
|
|
|
|
### Attachment Download
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| API: Download attachment | `/api/v1/storefront/messages/{conversation_id}/attachments/{attachment_id}` | GET | Working |
|
|
| API: Get thumbnail | `/api/v1/storefront/messages/{conversation_id}/attachments/{attachment_id}/thumbnail` | GET | Working |
|
|
|
|
---
|
|
|
|
## 13. Content Pages (CMS)
|
|
|
|
### CMS Pages
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| View content page | `/storefront/page/{slug}` | GET | Working |
|
|
| API: Get navigation | `/api/v1/storefront/content-pages/navigation` | GET | Working |
|
|
| API: Get page content | `/api/v1/storefront/content-pages/{slug}` | GET | Working |
|
|
|
|
**Common Pages to Test:**
|
|
- [ ] About Us (`/storefront/about`)
|
|
- [ ] Contact (`/storefront/contact`)
|
|
- [ ] Terms & Conditions (`/storefront/terms`)
|
|
- [ ] Privacy Policy (`/storefront/privacy`)
|
|
- [ ] Return Policy (`/storefront/returns`)
|
|
- [ ] FAQ (`/storefront/faq`)
|
|
|
|
**UI Elements to Test:**
|
|
- [ ] Page title
|
|
- [ ] Page content (HTML/Markdown rendered)
|
|
- [ ] Meta tags in head
|
|
- [ ] Breadcrumb navigation
|
|
- [ ] Last updated timestamp
|
|
- [ ] Navigation links in header/footer
|
|
|
|
---
|
|
|
|
## 14. Language Switching
|
|
|
|
### Language Selection
|
|
| Test Case | Route | Method | Status |
|
|
|-----------|-------|--------|--------|
|
|
| API: Set language | `/api/v1/language/set` | POST | Working |
|
|
|
|
**UI Elements to Test:**
|
|
- [ ] Language dropdown in header
|
|
- [ ] Current language flag/name
|
|
- [ ] Language options (EN, FR, DE, LB)
|
|
- [ ] Page reload after selection
|
|
|
|
**Supported Languages:**
|
|
- [ ] English (en) - GB flag
|
|
- [ ] French (fr) - FR flag
|
|
- [ ] German (de) - DE flag
|
|
- [ ] Luxembourgish (lb) - LU flag
|
|
|
|
---
|
|
|
|
## 15. Theme & Branding
|
|
|
|
### Visual Elements
|
|
**UI Elements to Test:**
|
|
- [ ] Dark/Light mode toggle
|
|
- [ ] Store logo display (light variant)
|
|
- [ ] Store logo display (dark variant)
|
|
- [ ] Custom favicon
|
|
- [ ] Primary brand color applied
|
|
- [ ] Hover states with dark variant
|
|
- [ ] Custom CSS applied
|
|
- [ ] Responsive design
|
|
- [ ] Mobile menu
|
|
|
|
---
|
|
|
|
## 16. Error Pages
|
|
|
|
### Error Handling
|
|
| Test Case | Route | Status |
|
|
|-----------|-------|--------|
|
|
| 400 Bad Request | Any invalid request | Working |
|
|
| 401 Unauthorized | Protected route without auth | Working |
|
|
| 403 Forbidden | Insufficient permissions | Working |
|
|
| 404 Not Found | Invalid URL | Working |
|
|
| 422 Unprocessable Entity | Validation errors | Working |
|
|
| 429 Too Many Requests | Rate limited | Working |
|
|
| 500 Server Error | Backend error | Working |
|
|
| 502 Bad Gateway | Proxy error | Working |
|
|
|
|
**Error Page Elements:**
|
|
- [ ] Error code display
|
|
- [ ] Error message
|
|
- [ ] Back to home link
|
|
- [ ] Consistent styling
|
|
|
|
---
|
|
|
|
## Summary
|
|
|
|
| Functional Area | Pages | Endpoints | Status |
|
|
|-----------------|-------|-----------|--------|
|
|
| Homepage | 1 | - | Working |
|
|
| Product Catalog | 1 | 2 | Working |
|
|
| Product Detail | 1 | 1 | Working |
|
|
| Search | 1 | 1 | Working |
|
|
| Shopping Cart | 1 | 5 | Working |
|
|
| Checkout | 1 | 1 | Working |
|
|
| Login | 1 | 1 | Working |
|
|
| Registration | 1 | 1 | Working |
|
|
| Password Reset | 2 | 2 | Working |
|
|
| Logout | - | 1 | Working |
|
|
| Dashboard | 1 | 1 | Working |
|
|
| Profile | 1 | 2 | Working |
|
|
| Addresses | 1 | 5 | Working |
|
|
| Orders | 2 | 3 | Working |
|
|
| Messages | 1 | 5 | Working |
|
|
| Content Pages | Dynamic | 2 | Working |
|
|
| Language | - | 1 | Working |
|
|
| Error Pages | 8 | - | Working |
|
|
| **TOTAL** | **15+** | **34** | **All Working** |
|
|
|
|
---
|
|
|
|
## Integration Test Flows
|
|
|
|
### Flow 1: Guest Checkout
|
|
1. [ ] Browse products on homepage
|
|
2. [ ] View product detail
|
|
3. [ ] Add to cart
|
|
4. [ ] View cart
|
|
5. [ ] Proceed to checkout
|
|
6. [ ] Fill shipping info
|
|
7. [ ] Fill billing info
|
|
8. [ ] Review order
|
|
9. [ ] Place order
|
|
10. [ ] Verify cart cleared
|
|
|
|
### Flow 2: Registered User Checkout
|
|
1. [ ] Register new account
|
|
2. [ ] Verify redirect to login
|
|
3. [ ] Login with new credentials
|
|
4. [ ] Add saved address
|
|
5. [ ] Browse and add products to cart
|
|
6. [ ] Checkout with saved address
|
|
7. [ ] Place order
|
|
8. [ ] View order in order history
|
|
9. [ ] Download invoice
|
|
|
|
### Flow 3: Password Reset
|
|
1. [ ] Go to forgot password
|
|
2. [ ] Submit email
|
|
3. [ ] Check for reset email
|
|
4. [ ] Click reset link
|
|
5. [ ] Enter new password
|
|
6. [ ] Verify redirect to login
|
|
7. [ ] Login with new password
|
|
|
|
### Flow 4: Customer Messaging
|
|
1. [ ] Login to account
|
|
2. [ ] Go to messages
|
|
3. [ ] View conversation
|
|
4. [ ] Send reply
|
|
5. [ ] Attach file
|
|
6. [ ] Verify message sent
|
|
7. [ ] Check unread count updates
|
|
|
|
### Flow 5: Search & Filter
|
|
1. [ ] Use search bar
|
|
2. [ ] Verify results
|
|
3. [ ] Apply sort option
|
|
4. [ ] Clear search
|
|
5. [ ] Use category filter
|
|
6. [ ] Verify filtered results
|