# Store Frontend Features - Testing Checklist **Last Updated:** 2026-01-08 **Total Pages:** 28 **Total API Endpoints:** 127+ **Status:** All Working (except Slice 5 stubs) --- ## 1. Authentication ### Login & Logout | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Store login with valid credentials | `/api/v1/store/auth/login` | POST | Working | | Store logout | `/api/v1/store/auth/logout` | POST | Working | | Invalid credentials error | `/api/v1/store/auth/login` | POST | Working | **Form Fields:** - [ ] Email/username (required) - [ ] Password (required) **Validation:** - [ ] Error message on invalid credentials - [ ] Redirect to dashboard on success - [ ] Session cookie set properly --- ## 2. Dashboard ### Dashboard Overview | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Load dashboard with metrics | `/api/v1/store/dashboard` | GET | Working | | Refresh dashboard data | Click refresh | - | Working | **UI Elements to Test:** - [ ] Total products count displays - [ ] Total orders count displays - [ ] Total customers count displays - [ ] Total revenue displays - [ ] Feature tier badge shows correct tier - [ ] Monthly orders usage bar - [ ] Products limit usage bar - [ ] Team members limit usage bar - [ ] Email settings warning (if not configured) - [ ] Recent orders table (5 most recent) - [ ] Getting started section (for new stores) --- ## 3. Product Management ### Products List | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | List all products | `/api/v1/store/products` | GET | Working | | Filter by active status | `/api/v1/store/products?is_active=` | GET | Working | | Filter by featured status | `/api/v1/store/products?is_featured=` | GET | Working | | Search products | `/api/v1/store/products?search=` | GET | Working | | Pagination | `/api/v1/store/products?skip=&limit=` | GET | Working | **UI Elements to Test:** - [ ] Product grid displays correctly - [ ] Active/Inactive filter dropdown - [ ] Featured filter - [ ] Search input with debounce - [ ] Product statistics cards - [ ] Create product button - [ ] Refresh button ### Product Detail | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Get product details | `/api/v1/store/products/{product_id}` | GET | Working | | Toggle active status | `/api/v1/store/products/{product_id}/toggle-active` | PUT | Working | | Toggle featured status | `/api/v1/store/products/{product_id}/toggle-featured` | PUT | Working | ### Create Product | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Create new product | `/api/v1/store/products/create` | POST | Working | **Form Fields:** - [ ] Product title (required) - [ ] Brand - [ ] Store SKU - [ ] GTIN (barcode) - [ ] Price (required) - [ ] Currency (default: EUR) - [ ] Availability dropdown - [ ] Active toggle - [ ] Featured toggle - [ ] Digital product toggle - [ ] Description ### Product Actions | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Add marketplace product to catalog | `/api/v1/store/products` | POST | Working | | Publish from import | `/api/v1/store/products/from-import/{marketplace_product_id}` | POST | Working | | Update product | `/api/v1/store/products/{product_id}` | PUT | Working | | Delete product | `/api/v1/store/products/{product_id}` | DELETE | Working | --- ## 4. Marketplace Integration ### Marketplace Import | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Start marketplace import | `/api/v1/store/marketplace/import` | POST | Working | | Get import job status | `/api/v1/store/marketplace/imports/{job_id}` | GET | Working | | List import jobs | `/api/v1/store/marketplace/imports` | GET | Working | **Form Fields:** - [ ] Marketplace selection - [ ] CSV source URL - [ ] Language selection (en, fr, de) - [ ] Batch size **UI Elements to Test:** - [ ] Import progress indicator - [ ] Job status updates - [ ] Error reporting - [ ] Rate limiting message (10/hour) --- ## 5. Order Management ### Orders List | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | List all orders | `/api/v1/store/orders` | GET | Working | | Filter by status | `/api/v1/store/orders?status=` | GET | Working | | Filter by customer | `/api/v1/store/orders?customer_id=` | GET | Working | | Pagination | `/api/v1/store/orders?skip=&limit=` | GET | Working | **Order Statuses to Test:** - [ ] pending - [ ] processing - [ ] shipped - [ ] partially_shipped - [ ] delivered - [ ] cancelled - [ ] refunded ### Order Detail | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Get order details | `/api/v1/store/orders/{order_id}` | GET | Working | | Update order status | `/api/v1/store/orders/{order_id}/status` | PUT | Working | | Get shipment status | `/api/v1/store/orders/{order_id}/shipment-status` | GET | Working | | Ship item (partial) | `/api/v1/store/orders/{order_id}/items/{item_id}/ship` | POST | Working | **UI Elements to Test:** - [ ] Order header info - [ ] Order items list - [ ] Shipping address display - [ ] Status update dropdown - [ ] Tracking number input - [ ] Ship button for each item - [ ] Partial shipment quantities ### Order Exceptions | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | List order item exceptions | `/api/v1/store/order-item-exceptions` | GET | Working | --- ## 6. Inventory Management ### Inventory List | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | List inventory | `/api/v1/store/inventory` | GET | Working | | Filter by location | `/api/v1/store/inventory?location=` | GET | Working | | Filter low stock | `/api/v1/store/inventory?low_stock=` | GET | Working | | Get product inventory | `/api/v1/store/inventory/product/{product_id}` | GET | Working | ### Inventory Operations | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Set inventory quantity | `/api/v1/store/inventory/set` | POST | Working | | Adjust inventory (+/-) | `/api/v1/store/inventory/adjust` | POST | Working | | Reserve inventory | `/api/v1/store/inventory/reserve` | POST | Working | | Release reservation | `/api/v1/store/inventory/release` | POST | Working | | Fulfill inventory | `/api/v1/store/inventory/fulfill` | POST | Working | | Update inventory entry | `/api/v1/store/inventory/{inventory_id}` | PUT | Working | | Delete inventory entry | `/api/v1/store/inventory/{inventory_id}` | DELETE | Working | ### Inventory Transactions | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | List transactions | `/api/v1/store/inventory/transactions` | GET | Working | | Product transactions | `/api/v1/store/inventory/transactions/product/{product_id}` | GET | Working | | Order transactions | `/api/v1/store/inventory/transactions/order/{order_id}` | GET | Working | --- ## 7. Customer Management ### Customers List | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | List customers | `/api/v1/store/customers` | GET | Working | | Search customers | `/api/v1/store/customers?search=` | GET | Working | | Filter by active | `/api/v1/store/customers?is_active=` | GET | Working | ### Customer Detail | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Get customer details | `/api/v1/store/customers/{customer_id}` | GET | Working | | Get customer orders | `/api/v1/store/customers/{customer_id}/orders` | GET | Working | | Get customer stats | `/api/v1/store/customers/{customer_id}/stats` | GET | Working | | Update customer | `/api/v1/store/customers/{customer_id}` | PUT | Working | | Toggle customer status | `/api/v1/store/customers/{customer_id}/status` | PUT | Working | --- ## 8. Invoicing ### Invoices List | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | List invoices | `/api/v1/store/invoices` | GET | Working | | Get invoice stats | `/api/v1/store/invoices/stats` | GET | Working | ### Invoice Operations | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Get invoice details | `/api/v1/store/invoices/{invoice_id}` | GET | Working | | Create invoice from order | `/api/v1/store/invoices` | POST | Working | | Update invoice status | `/api/v1/store/invoices/{invoice_id}/status` | PUT | Working | | Download PDF | `/api/v1/store/invoices/{invoice_id}/pdf` | GET | Working | | Generate/regenerate PDF | `/api/v1/store/invoices/{invoice_id}/pdf` | POST | Working | ### Invoice Settings | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Get invoice settings | `/api/v1/store/invoices/settings` | GET | Working | | Create invoice settings | `/api/v1/store/invoices/settings` | POST | Working | | Update invoice settings | `/api/v1/store/invoices/settings` | PUT | Working | **Invoice Settings Form Fields:** - [ ] Merchant name - [ ] Merchant address - [ ] Postal code - [ ] Country - [ ] VAT number - [ ] VAT registered toggle - [ ] Invoice prefix - [ ] Payment terms - [ ] Bank name - [ ] IBAN - [ ] BIC - [ ] Footer text - [ ] Default VAT rate --- ## 9. Team Management ### Team Members | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | List team members | `/api/v1/store/team/members` | GET | Working | | Invite team member | `/api/v1/store/team/members/invite` | POST | Working | | Accept invitation | `/api/v1/store/team/members/{user_id}/accept-invitation` | POST | Working | | Update member role | `/api/v1/store/team/members/{user_id}/role` | PUT | Working | | Remove team member | `/api/v1/store/team/members/{user_id}` | DELETE | Working | | Bulk remove members | `/api/v1/store/team/members/bulk-remove` | POST | Working | ### Roles & Permissions | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Get available roles | `/api/v1/store/team/roles` | GET | Working | | Get user permissions | `/api/v1/store/team/permissions` | GET | Working | **UI Elements to Test:** - [ ] Team member cards - [ ] Invite button - [ ] Role dropdown - [ ] Remove confirmation dialog - [ ] Permission matrix display --- ## 10. Settings ### General Settings | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Get store settings | `/api/v1/store/settings` | GET | Working | | Update general settings | `/api/v1/store/settings` | PUT | Working | **General Settings Fields:** - [ ] Subdomain - [ ] Active toggle (read-only) - [ ] Store code (read-only) ### Business Information | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Update business info | `/api/v1/store/settings/business-info` | PUT | Working | **Business Info Form Fields:** - [ ] Store/brand name - [ ] Store description - [ ] Contact email (with inheritance indicator) - [ ] Contact phone (with inheritance) - [ ] Website URL (with inheritance) - [ ] Business address (with inheritance) - [ ] Tax/VAT number (with inheritance) - [ ] Merchant name (read-only) - [ ] Reset to merchant inheritance button ### Localization Settings | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Update localization | `/api/v1/store/settings/localization` | PUT | Working | **Localization Form Fields:** - [ ] Default language (en, fr, de, lb) - [ ] Dashboard UI language - [ ] Storefront default language - [ ] Enabled storefront languages (multi-select) - [ ] Storefront locale (fr-LU, de-LU, de-DE, fr-FR, en-GB) ### Letzshop/Marketplace Settings | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Update Letzshop settings | `/api/v1/store/settings/letzshop` | PUT | Working | **Letzshop Form Fields:** - [ ] CSV Feed URL - French - [ ] CSV Feed URL - English - [ ] CSV Feed URL - German - [ ] Default tax rate (0, 3, 8, 14, 17%) - [ ] Boost sort priority (0.0-10.0) - [ ] Delivery method dropdown - [ ] Pre-order lead time (days) - [ ] Auto-sync toggle --- ## 11. Content Pages ### Content Pages List | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | List content pages | `/api/v1/store/content-pages` | GET | Working | | Create content page | `/api/v1/store/content-pages` | POST | Working | | Get page details | `/api/v1/store/content-pages/{page_id}` | GET | Working | | Update page | `/api/v1/store/content-pages/{page_id}` | PUT | Working | | Delete page | `/api/v1/store/content-pages/{page_id}` | DELETE | Working | **Content Page Form Fields:** - [ ] Slug (URL-safe) - [ ] Title - [ ] Content (HTML/Markdown) - [ ] Content format selector - [ ] Meta description - [ ] Meta keywords - [ ] Published toggle - [ ] Show in footer toggle - [ ] Show in header toggle - [ ] Show in legal bar toggle - [ ] Display order --- ## 12. Media Library ### Media List | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | List media files | `/api/v1/store/media` | GET | Working | | Filter by type | `/api/v1/store/media?media_type=` | GET | Working | | Filter by folder | `/api/v1/store/media?folder=` | GET | Working | | Search media | `/api/v1/store/media?search=` | GET | Working | ### Media Operations | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Upload single file | `/api/v1/store/media/upload` | POST | Working | | Upload multiple files | `/api/v1/store/media/upload/multiple` | POST | Working | | Get media details | `/api/v1/store/media/{media_id}` | GET | Working | | Update metadata | `/api/v1/store/media/{media_id}` | PUT | Working | | Delete media | `/api/v1/store/media/{media_id}` | DELETE | Working | | Get media usage | `/api/v1/store/media/{media_id}/usage` | GET | Working | | Optimize image | `/api/v1/store/media/optimize/{media_id}` | POST | Working | **Media Upload Form:** - [ ] Drag-and-drop zone - [ ] File picker - [ ] Multiple file support - [ ] Progress indicator - [ ] Error display **Media Metadata Form:** - [ ] Filename - [ ] Alt text - [ ] Description - [ ] Folder assignment --- ## 13. Messaging ### Conversations | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | List conversations | `/api/v1/store/messages/conversations` | GET | Working | | Get conversation details | `/api/v1/store/messages/conversations/{conversation_id}` | GET | Working | | Create conversation | `/api/v1/store/messages/conversations` | POST | Working | | Get messages | `/api/v1/store/messages/conversations/{conversation_id}/messages` | GET | Working | | Send message | `/api/v1/store/messages/send` | POST | Working | | Mark as read | `/api/v1/store/messages/conversations/{conversation_id}/mark-read` | PUT | Working | | Close conversation | `/api/v1/store/messages/conversations/{conversation_id}` | DELETE | Working | | Reopen conversation | `/api/v1/store/messages/conversations/{conversation_id}/reopen` | POST | Working | | Get recipients | `/api/v1/store/messages/recipients` | GET | Working | | Get unread count | `/api/v1/store/messages/unread-count` | GET | Working | | Get/Update settings | `/api/v1/store/messages/settings` | GET/PUT | Working | --- ## 14. Notifications (Slice 5 - Stub) ### Notification Endpoints | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | List notifications | `/api/v1/store/notifications` | GET | **STUB** | | Get unread count | `/api/v1/store/notifications/unread-count` | GET | **STUB** | | Mark as read | `/api/v1/store/notifications/{id}/read` | PUT | **STUB** | | Mark all as read | `/api/v1/store/notifications/mark-all-read` | PUT | **STUB** | | Delete notification | `/api/v1/store/notifications/{id}` | DELETE | **STUB** | | Get settings | `/api/v1/store/notifications/settings` | GET | **STUB** | | Update settings | `/api/v1/store/notifications/settings` | PUT | **STUB** | | Get templates | `/api/v1/store/notifications/templates` | GET | **STUB** | | Update template | `/api/v1/store/notifications/templates/{id}` | PUT | **STUB** | | Send test | `/api/v1/store/notifications/test` | POST | **STUB** | **Note:** All return placeholder "Coming in Slice 5" responses. --- ## 15. Payments Config (Slice 5 - Stub) ### Payment Endpoints | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Get payment config | `/api/v1/store/payments/config` | GET | **STUB** | | Update payment config | `/api/v1/store/payments/config` | PUT | **STUB** | | Connect Stripe | `/api/v1/store/payments/stripe/connect` | POST | **STUB** | | Disconnect Stripe | `/api/v1/store/payments/stripe/disconnect` | DELETE | **STUB** | | Get payment methods | `/api/v1/store/payments/methods` | GET | **STUB** | | Get transactions | `/api/v1/store/payments/transactions` | GET | **STUB** | | Get balance | `/api/v1/store/payments/balance` | GET | **STUB** | | Process refund | `/api/v1/store/payments/refund/{id}` | POST | **STUB** | **Note:** All return placeholder "Coming in Slice 5" responses. --- ## 16. Billing & Subscriptions ### Subscription Info | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Get subscription status | `/api/v1/store/billing/subscription` | GET | Working | | List available tiers | `/api/v1/store/billing/tiers` | GET | Working | | Get billing invoices | `/api/v1/store/billing/invoices` | GET | Working | ### Stripe Integration | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Create checkout session | `/api/v1/store/billing/checkout` | POST | Working | | Get Stripe portal link | `/api/v1/store/billing/portal` | GET | Working | ### Add-ons | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | List add-ons | `/api/v1/store/billing/add-ons` | GET | Working | | Purchase add-on | `/api/v1/store/billing/add-ons/{code}` | POST | Working | | Cancel add-on | `/api/v1/store/billing/add-ons/{code}` | DELETE | Working | **UI Elements to Test:** - [ ] Current tier display - [ ] Usage metrics (orders, products, team) - [ ] Tier comparison table - [ ] Upgrade button - [ ] Stripe portal redirect --- ## 17. Analytics ### Analytics Dashboard | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Get store analytics | `/api/v1/store/analytics` | GET | Working | | Filter by period | `/api/v1/store/analytics?period=` | GET | Working | **Period Options:** - [ ] 7d (7 days) - [ ] 30d (30 days) - [ ] 90d (90 days) - [ ] 1y (1 year) **Feature Requirements:** - basic_reports (Essential) or analytics_dashboard (Business) --- ## 18. Onboarding ### Onboarding Wizard | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Get onboarding status | `/api/v1/store/onboarding/status` | GET | Working | ### Step 1: Merchant Profile | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Get merchant profile step | `/api/v1/store/onboarding/step/merchant-profile` | GET | Working | | Save merchant profile | `/api/v1/store/onboarding/step/merchant-profile` | POST | Working | ### Step 2: Letzshop API | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Get Letzshop API step | `/api/v1/store/onboarding/step/letzshop-api` | GET | Working | | Save Letzshop API | `/api/v1/store/onboarding/step/letzshop-api` | POST | Working | | Test connection | `/api/v1/store/onboarding/step/letzshop-api/test` | POST | Working | ### Step 3: Product Import Config | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Get import config step | `/api/v1/store/onboarding/step/product-import-config` | GET | Working | | Save import config | `/api/v1/store/onboarding/step/product-import-config` | POST | Working | ### Step 4: Order Sync | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Trigger order sync | `/api/v1/store/onboarding/step/order-sync/trigger` | POST | Working | | Get sync progress | `/api/v1/store/onboarding/step/order-sync/progress` | GET | Working | | Complete order sync | `/api/v1/store/onboarding/step/order-sync/complete` | POST | Working | --- ## 19. Letzshop Integration ### Credentials | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Get integration status | `/api/v1/store/letzshop/status` | GET | Working | | Get credentials (masked) | `/api/v1/store/letzshop/credentials` | GET | Working | | Save credentials | `/api/v1/store/letzshop/credentials` | POST | Working | | Update credentials | `/api/v1/store/letzshop/credentials` | PUT | Working | | Test connection | `/api/v1/store/letzshop/credentials/test` | POST | Working | ### Orders | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | List Letzshop orders | `/api/v1/store/letzshop/orders` | GET | Working | | Get order details | `/api/v1/store/letzshop/orders/{order_id}` | GET | Working | ### Fulfillment | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Confirm order | `/api/v1/store/letzshop/orders/{order_id}/confirm` | POST | Working | | Reject order | `/api/v1/store/letzshop/orders/{order_id}/reject` | POST | Working | | Submit tracking | `/api/v1/store/letzshop/orders/{order_id}/tracking` | POST | Working | | Get exceptions | `/api/v1/store/letzshop/orders/{order_id}/exceptions` | GET | Working | ### Synchronization | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Trigger sync | `/api/v1/store/letzshop/sync` | POST | Working | | Get sync logs | `/api/v1/store/letzshop/sync-logs` | GET | Working | | Get sync log details | `/api/v1/store/letzshop/sync-logs/{log_id}` | GET | Working | ### Fulfillment Queue | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Get fulfillment queue | `/api/v1/store/letzshop/fulfillment-queue` | GET | Working | | Get queue item | `/api/v1/store/letzshop/fulfillment-queue/{item_id}` | GET | Working | --- ## 20. Email Templates ### Template Management | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | List overridable templates | `/api/v1/store/email-templates` | GET | Working | | Get template details | `/api/v1/store/email-templates/{code}` | GET | Working | | Create/update override | `/api/v1/store/email-templates/{code}` | POST | Working | | Delete override | `/api/v1/store/email-templates/{code}` | DELETE | Working | | Preview template | `/api/v1/store/email-templates/{code}/preview` | POST | Working | | Send test email | `/api/v1/store/email-templates/{code}/test` | POST | Working | **Template Form Fields:** - [ ] Email subject - [ ] HTML body - [ ] Plain text body - [ ] Language selection --- ## 21. Features & Permissions ### Feature Checking | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | List available features | `/api/v1/store/features/available` | GET | Working | | Get all features | `/api/v1/store/features` | GET | Working | | Get feature categories | `/api/v1/store/features/categories` | GET | Working | | Get features grouped | `/api/v1/store/features/grouped` | GET | Working | | Get feature details | `/api/v1/store/features/{feature_code}` | GET | Working | | Check feature availability | `/api/v1/store/features/check/{feature_code}` | GET | Working | --- ## 22. Profile ### User Profile | Test Case | Route | Method | Status | |-----------|-------|--------|--------| | Get profile | `/api/v1/store/profile` | GET | Working | | Update profile | `/api/v1/store/profile` | PUT | Working | --- ## Summary | Functional Area | Pages | Endpoints | Status | |-----------------|-------|-----------|--------| | Authentication | 1 | 3 | Working | | Dashboard | 1 | 1 | Working | | Products | 2 | 7 | Working | | Marketplace | 1 | 3 | Working | | Orders | 2 | 5 | Working | | Inventory | 1 | 12 | Working | | Customers | 1 | 6 | Working | | Invoices | 1 | 10 | Working | | Team | 1 | 7 | Working | | Settings | 1 | 4 | Working | | Content Pages | 2 | 5 | Working | | Media | 1 | 8 | Working | | Messages | 1 | 11 | Working | | Notifications | 1 | 10 | **STUB** | | Payments Config | 1 | 8 | **STUB** | | Billing | 1 | 7 | Working | | Analytics | 1 | 1 | Working | | Onboarding | 1 | 7 | Working | | Letzshop | 1 | 13 | Working | | Email Templates | 1 | 6 | Working | | Features | - | 6 | Working | | Profile | 1 | 2 | Working | | **TOTAL** | **28** | **127+** | **19 Working / 2 Stub** |