- 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>
19 KiB
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:
{
"product_id": 123,
"quantity": 1
}
Update Quantity Request:
{
"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:
{
"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:
{
"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:
{
"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:
{
"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:
{
"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:
{
"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:
{
"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:
{
"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:
{
"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
- Browse products on homepage
- View product detail
- Add to cart
- View cart
- Proceed to checkout
- Fill shipping info
- Fill billing info
- Review order
- Place order
- Verify cart cleared
Flow 2: Registered User Checkout
- Register new account
- Verify redirect to login
- Login with new credentials
- Add saved address
- Browse and add products to cart
- Checkout with saved address
- Place order
- View order in order history
- Download invoice
Flow 3: Password Reset
- Go to forgot password
- Submit email
- Check for reset email
- Click reset link
- Enter new password
- Verify redirect to login
- Login with new password
Flow 4: Customer Messaging
- Login to account
- Go to messages
- View conversation
- Send reply
- Attach file
- Verify message sent
- Check unread count updates
Flow 5: Search & Filter
- Use search bar
- Verify results
- Apply sort option
- Clear search
- Use category filter
- Verify filtered results