Some checks failed
Deploy to Test Environment / deploy-to-test (push) Failing after 12s
865 lines
19 KiB
Markdown
865 lines
19 KiB
Markdown
# Manual Testing Plan - UI/UX Improvements
|
|
|
|
**Date**: 2026-01-20
|
|
**Testing Focus**: Onboarding Tour, Mobile Navigation, Dark Mode, Admin Routes
|
|
**Tester**: [Your Name]
|
|
**Environment**: Dev Container (`http://localhost:5173`)
|
|
|
|
---
|
|
|
|
## Pre-Testing Setup
|
|
|
|
### 1. Start Dev Server
|
|
|
|
```bash
|
|
podman exec -it flyer-crawler-dev npm run dev:container
|
|
```
|
|
|
|
**Expected**: Server starts at `http://localhost:5173`
|
|
|
|
### 2. Open Browser
|
|
|
|
- Primary browser: Chrome/Edge (DevTools required)
|
|
- Secondary: Firefox, Safari (for cross-browser testing)
|
|
- Enable DevTools: F12 or Ctrl+Shift+I
|
|
|
|
### 3. Prepare Test Environment
|
|
|
|
- Clear browser cache
|
|
- Clear all cookies for localhost
|
|
- Open DevTools → Application → Local Storage
|
|
- Note any existing keys
|
|
|
|
---
|
|
|
|
## Test Suite 1: Onboarding Tour
|
|
|
|
### Test 1.1: First-Time User Experience ⭐ CRITICAL
|
|
|
|
**Objective**: Verify tour starts automatically for new users
|
|
|
|
**Steps**:
|
|
|
|
1. Open DevTools → Application → Local Storage → `http://localhost:5173`
|
|
2. Delete key: `flyer_crawler_onboarding_completed` (if exists)
|
|
3. Refresh page (F5)
|
|
4. Observe page load
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Tour modal appears automatically within 2 seconds
|
|
- ✅ First tooltip points to "Flyer Uploader" section
|
|
- ✅ Tooltip shows "Step 1 of 6"
|
|
- ✅ Tooltip contains text: "Upload grocery flyers here..."
|
|
- ✅ "Skip" button visible in top-right
|
|
- ✅ "Next" button visible at bottom
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 1.2: Tour Navigation
|
|
|
|
**Objective**: Verify all 6 tour steps are accessible and display correctly
|
|
|
|
**Steps**:
|
|
|
|
1. Ensure tour is active (from Test 1.1)
|
|
2. Click "Next" button
|
|
3. Repeat for all 6 steps, noting each tooltip
|
|
|
|
**Expected Results**:
|
|
|
|
| Step | Target Element | Tooltip Text Snippet | Pass/Fail |
|
|
| ---- | -------------------- | -------------------------------------- | --------- |
|
|
| 1 | Flyer Uploader | "Upload grocery flyers here..." | [ ] |
|
|
| 2 | Extracted Data Table | "View AI-extracted items..." | [ ] |
|
|
| 3 | Watch Button | "Click + Watch to track items..." | [ ] |
|
|
| 4 | Watched Items List | "Your watchlist appears here..." | [ ] |
|
|
| 5 | Price Chart | "See active deals on watched items..." | [ ] |
|
|
| 6 | Shopping List | "Create shopping lists..." | [ ] |
|
|
|
|
**Additional Checks**:
|
|
|
|
- ✅ Progress indicator updates (1/6 → 2/6 → ... → 6/6)
|
|
- ✅ Each tooltip highlights correct element
|
|
- ✅ "Previous" button works (after step 2)
|
|
- ✅ No JavaScript errors in console
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 1.3: Tour Completion
|
|
|
|
**Objective**: Verify tour completion saves to localStorage
|
|
|
|
**Steps**:
|
|
|
|
1. Complete all 6 steps (click "Next" 5 times)
|
|
2. On step 6, click "Done" or "Finish"
|
|
3. Open DevTools → Application → Local Storage
|
|
4. Check for key: `flyer_crawler_onboarding_completed`
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Tour closes after final step
|
|
- ✅ localStorage key `flyer_crawler_onboarding_completed` = `"true"`
|
|
- ✅ No tour modal visible
|
|
- ✅ Application fully functional
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 1.4: Tour Skip
|
|
|
|
**Objective**: Verify "Skip" button works and saves preference
|
|
|
|
**Steps**:
|
|
|
|
1. Delete localStorage key (reset)
|
|
2. Refresh page to start tour
|
|
3. Click "Skip" button on step 1
|
|
4. Check localStorage
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Tour closes immediately
|
|
- ✅ localStorage key saved: `flyer_crawler_onboarding_completed` = `"true"`
|
|
- ✅ Application remains functional
|
|
- ✅ No errors in console
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 1.5: Tour Does Not Repeat
|
|
|
|
**Objective**: Verify tour doesn't show for returning users
|
|
|
|
**Steps**:
|
|
|
|
1. Ensure localStorage key exists from previous test
|
|
2. Refresh page multiple times
|
|
3. Navigate to different routes (/deals, /lists)
|
|
4. Return to home page
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Tour modal never appears
|
|
- ✅ No tour-related elements visible
|
|
- ✅ Application loads normally
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
## Test Suite 2: Mobile Navigation
|
|
|
|
### Test 2.1: Responsive Breakpoints - Mobile (375px)
|
|
|
|
**Objective**: Verify mobile layout at iPhone SE width
|
|
|
|
**Setup**:
|
|
|
|
1. Open DevTools → Toggle Device Toolbar (Ctrl+Shift+M)
|
|
2. Select "iPhone SE" or set custom width to 375px
|
|
3. Refresh page
|
|
|
|
**Expected Results**:
|
|
|
|
| Element | Expected Behavior | Pass/Fail |
|
|
| ------------------------- | ----------------------------- | --------- |
|
|
| Bottom Tab Bar | ✅ Visible at bottom | [ ] |
|
|
| Left Sidebar (Flyer List) | ✅ Hidden | [ ] |
|
|
| Right Sidebar (Widgets) | ✅ Hidden | [ ] |
|
|
| Main Content | ✅ Full width, single column | [ ] |
|
|
| Bottom Padding | ✅ 64px padding below content | [ ] |
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 2.2: Responsive Breakpoints - Tablet (768px)
|
|
|
|
**Objective**: Verify mobile layout at iPad width
|
|
|
|
**Setup**:
|
|
|
|
1. Set device width to 768px (iPad)
|
|
2. Refresh page
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Bottom tab bar still visible
|
|
- ✅ Sidebars still hidden
|
|
- ✅ Content uses full width
|
|
- ✅ Tab bar does NOT overlap content
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 2.3: Responsive Breakpoints - Desktop (1024px+)
|
|
|
|
**Objective**: Verify desktop layout unchanged
|
|
|
|
**Setup**:
|
|
|
|
1. Set device width to 1440px (desktop)
|
|
2. Refresh page
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Bottom tab bar HIDDEN
|
|
- ✅ Left sidebar (flyer list) VISIBLE
|
|
- ✅ Right sidebar (widgets) VISIBLE
|
|
- ✅ 3-column grid layout intact
|
|
- ✅ No layout changes from before
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 2.4: Tab Navigation - Home
|
|
|
|
**Objective**: Verify Home tab navigation
|
|
|
|
**Setup**: Set width to 375px (mobile)
|
|
|
|
**Steps**:
|
|
|
|
1. Tap "Home" tab in bottom bar
|
|
2. Observe page content
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Tab icon highlighted in teal (#14b8a6)
|
|
- ✅ Tab label highlighted
|
|
- ✅ URL changes to `/`
|
|
- ✅ HomePage component renders
|
|
- ✅ Shows flyer view and upload section
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 2.5: Tab Navigation - Deals
|
|
|
|
**Objective**: Verify Deals tab navigation
|
|
|
|
**Steps**:
|
|
|
|
1. Tap "Deals" tab (TagIcon)
|
|
2. Observe page content
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Tab icon highlighted in teal
|
|
- ✅ URL changes to `/deals`
|
|
- ✅ DealsPage component renders
|
|
- ✅ Shows WatchedItemsList component
|
|
- ✅ Shows PriceChart component
|
|
- ✅ Shows PriceHistoryChart component
|
|
- ✅ Previous tab (Home) is unhighlighted
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 2.6: Tab Navigation - Lists
|
|
|
|
**Objective**: Verify Lists tab navigation
|
|
|
|
**Steps**:
|
|
|
|
1. Tap "Lists" tab (ListBulletIcon)
|
|
2. Observe page content
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Tab icon highlighted in teal
|
|
- ✅ URL changes to `/lists`
|
|
- ✅ ShoppingListsPage component renders
|
|
- ✅ Shows ShoppingList component
|
|
- ✅ Can create/view shopping lists
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 2.7: Tab Navigation - Profile
|
|
|
|
**Objective**: Verify Profile tab navigation
|
|
|
|
**Steps**:
|
|
|
|
1. Tap "Profile" tab (UserIcon)
|
|
2. Observe page content
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Tab icon highlighted in teal
|
|
- ✅ URL changes to `/profile`
|
|
- ✅ UserProfilePage component renders
|
|
- ✅ Shows user profile information
|
|
- ✅ Shows achievements (if logged in)
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 2.8: Touch Target Size (Accessibility)
|
|
|
|
**Objective**: Verify touch targets meet 44x44px minimum (WCAG 2.5.5)
|
|
|
|
**Steps**:
|
|
|
|
1. Stay in mobile view (375px)
|
|
2. Open DevTools → Elements
|
|
3. Inspect each tab in bottom bar
|
|
4. Check computed dimensions
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Each tab button: min-height: 44px
|
|
- ✅ Each tab button: min-width: 44px
|
|
- ✅ Icon is centered
|
|
- ✅ Label is readable below icon
|
|
- ✅ Adequate spacing between tabs
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 2.9: Tab Bar Visibility on Admin Routes
|
|
|
|
**Objective**: Verify tab bar hidden on admin pages
|
|
|
|
**Steps**:
|
|
|
|
1. Navigate to `/admin` (may need to log in as admin)
|
|
2. Check bottom of page
|
|
3. Navigate to `/admin/stats`
|
|
4. Navigate to `/admin/corrections`
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Tab bar NOT visible on `/admin`
|
|
- ✅ Tab bar NOT visible on any `/admin/*` routes
|
|
- ✅ Admin pages function normally
|
|
- ✅ Footer visible as normal
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
## Test Suite 3: Dark Mode
|
|
|
|
### Test 3.1: Dark Mode Toggle
|
|
|
|
**Objective**: Verify dark mode toggle works for new components
|
|
|
|
**Steps**:
|
|
|
|
1. Ensure you're in light mode (check header toggle)
|
|
2. Click dark mode toggle in header
|
|
3. Observe all new components
|
|
|
|
**Expected Results - DealsPage**:
|
|
|
|
- ✅ Background changes to dark gray (#1f2937 or similar)
|
|
- ✅ Text changes to light colors
|
|
- ✅ WatchedItemsList: dark background, light text
|
|
- ✅ PriceChart: dark theme colors
|
|
- ✅ No white boxes remaining
|
|
|
|
**Expected Results - ShoppingListsPage**:
|
|
|
|
- ✅ Background changes to dark
|
|
- ✅ ShoppingList cards: dark background
|
|
- ✅ Input fields: dark background with light text
|
|
- ✅ Buttons maintain brand colors
|
|
|
|
**Expected Results - FlyersPage**:
|
|
|
|
- ✅ Background dark
|
|
- ✅ Flyer cards: dark theme
|
|
- ✅ FlyerUploader: dark background
|
|
|
|
**Expected Results - MobileTabBar**:
|
|
|
|
- ✅ Tab bar background: dark (#111827 or similar)
|
|
- ✅ Border top: dark border color
|
|
- ✅ Inactive tab icons: gray
|
|
- ✅ Active tab icon: teal (#14b8a6)
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 3.2: Dark Mode Persistence
|
|
|
|
**Objective**: Verify dark mode preference persists across navigation
|
|
|
|
**Steps**:
|
|
|
|
1. Enable dark mode
|
|
2. Navigate between tabs: Home → Deals → Lists → Profile
|
|
3. Refresh page
|
|
4. Check mode
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Dark mode stays enabled across all routes
|
|
- ✅ Dark mode persists after page refresh
|
|
- ✅ All pages render in dark mode consistently
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 3.3: Button Component in Dark Mode
|
|
|
|
**Objective**: Verify Button component variants in dark mode
|
|
|
|
**Setup**: Enable dark mode
|
|
|
|
**Check each variant**:
|
|
|
|
| Variant | Expected Dark Mode Colors | Pass/Fail |
|
|
| --------- | ------------------------------ | --------- |
|
|
| Primary | bg-brand-secondary, text-white | [ ] |
|
|
| Secondary | bg-gray-700, text-gray-200 | [ ] |
|
|
| Danger | bg-red-900/50, text-red-300 | [ ] |
|
|
| Ghost | hover: bg-gray-700/50 | [ ] |
|
|
|
|
**Locations to check**:
|
|
|
|
- FlyerUploader: "Upload Another Flyer" (primary)
|
|
- ShoppingList: "New List" (secondary)
|
|
- ShoppingList: "Delete List" (danger)
|
|
- FlyerUploader: "Stop Watching" (ghost)
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 3.4: Onboarding Tour in Dark Mode
|
|
|
|
**Objective**: Verify tour tooltips work in dark mode
|
|
|
|
**Steps**:
|
|
|
|
1. Enable dark mode
|
|
2. Delete localStorage key to reset tour
|
|
3. Refresh to start tour
|
|
4. Navigate through all 6 steps
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Tooltip background visible (not too dark)
|
|
- ✅ Tooltip text readable (good contrast)
|
|
- ✅ Progress indicator visible
|
|
- ✅ Buttons clearly visible
|
|
- ✅ Highlighted elements stand out
|
|
- ✅ No visual glitches
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
## Test Suite 4: Admin Routes
|
|
|
|
### Test 4.1: Admin Access (Requires Admin User)
|
|
|
|
**Objective**: Verify admin routes still function correctly
|
|
|
|
**Prerequisites**: Need admin account credentials
|
|
|
|
**Steps**:
|
|
|
|
1. Log in as admin user
|
|
2. Click admin shield icon in header
|
|
3. Should navigate to `/admin`
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Admin dashboard loads
|
|
- ✅ 4 links visible: Corrections, Stats, Flyer Review, Stores
|
|
- ✅ SystemCheck component shows health checks
|
|
- ✅ Layout looks correct (no mobile tab bar)
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 4.2: Admin Subpages
|
|
|
|
**Objective**: Verify all admin subpages load
|
|
|
|
**Steps**:
|
|
|
|
1. From admin dashboard, click each link:
|
|
- Corrections → `/admin/corrections`
|
|
- Stats → `/admin/stats`
|
|
- Flyer Review → `/admin/flyer-review`
|
|
- Stores → `/admin/stores`
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Each page loads without errors
|
|
- ✅ No mobile tab bar visible
|
|
- ✅ Desktop layout maintained
|
|
- ✅ All admin functionality works
|
|
- ✅ Can navigate back to `/admin`
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 4.3: Admin in Mobile View
|
|
|
|
**Objective**: Verify admin pages work in mobile view
|
|
|
|
**Steps**:
|
|
|
|
1. Set device width to 375px
|
|
2. Navigate to `/admin`
|
|
3. Check layout
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Admin page renders correctly
|
|
- ✅ No mobile tab bar visible
|
|
- ✅ Content is readable (may scroll)
|
|
- ✅ All buttons/links clickable
|
|
- ✅ No layout breaking
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
## Test Suite 5: Integration Tests
|
|
|
|
### Test 5.1: Cross-Feature Navigation
|
|
|
|
**Objective**: Verify navigation between new and old features
|
|
|
|
**Scenario**: User journey through app
|
|
|
|
**Steps**:
|
|
|
|
1. Start on Home page (mobile view)
|
|
2. Upload a flyer (if possible)
|
|
3. Click "Deals" tab → should see deals page
|
|
4. Add item to watchlist (from deals page)
|
|
5. Click "Lists" tab → create shopping list
|
|
6. Add item to shopping list
|
|
7. Click "Profile" tab → view profile
|
|
8. Click "Home" tab → return to home
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ All navigation works smoothly
|
|
- ✅ No data loss between pages
|
|
- ✅ Active tab always correct
|
|
- ✅ Back button works (browser history)
|
|
- ✅ No JavaScript errors
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 5.2: Button Component Integration
|
|
|
|
**Objective**: Verify Button component works in all contexts
|
|
|
|
**Steps**:
|
|
|
|
1. Navigate to page with buttons (FlyerUploader, ShoppingList)
|
|
2. Click each button variant
|
|
3. Test loading states
|
|
4. Test disabled states
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ All buttons clickable
|
|
- ✅ Loading spinner appears when appropriate
|
|
- ✅ Disabled buttons prevent clicks
|
|
- ✅ Icons render correctly
|
|
- ✅ Hover states work
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 5.3: Brand Colors Visual Check
|
|
|
|
**Objective**: Verify brand colors display correctly throughout app
|
|
|
|
**Check these elements**:
|
|
|
|
- ✅ Active tab in tab bar: teal (#14b8a6)
|
|
- ✅ Primary buttons: teal background
|
|
- ✅ Links on hover: teal color
|
|
- ✅ Focus rings: teal color
|
|
- ✅ Watched item indicators: green (not brand color)
|
|
- ✅ All teal shades consistent
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
## Test Suite 6: Error Scenarios
|
|
|
|
### Test 6.1: Missing Data
|
|
|
|
**Objective**: Verify pages handle empty states gracefully
|
|
|
|
**Steps**:
|
|
|
|
1. Navigate to /deals (without watched items)
|
|
2. Navigate to /lists (without shopping lists)
|
|
3. Navigate to /flyers (without uploaded flyers)
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Empty state messages shown
|
|
- ✅ No JavaScript errors
|
|
- ✅ Clear calls to action displayed
|
|
- ✅ Page structure intact
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 6.2: Network Errors (Simulated)
|
|
|
|
**Objective**: Verify app handles network failures
|
|
|
|
**Steps**:
|
|
|
|
1. Open DevTools → Network tab
|
|
2. Set throttling to "Offline"
|
|
3. Try to navigate between tabs
|
|
4. Try to load data
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Error messages displayed
|
|
- ✅ App doesn't crash
|
|
- ✅ Can retry actions
|
|
- ✅ Navigation still works (cached)
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
## Test Suite 7: Performance
|
|
|
|
### Test 7.1: Page Load Speed
|
|
|
|
**Objective**: Verify new features don't slow down app
|
|
|
|
**Steps**:
|
|
|
|
1. Open DevTools → Network tab
|
|
2. Disable cache
|
|
3. Refresh page
|
|
4. Note "Load" time in Network tab
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Initial load: < 3 seconds
|
|
- ✅ Route changes: < 500ms
|
|
- ✅ No long-running scripts
|
|
- ✅ No memory leaks (use Performance Monitor)
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Measurements**:
|
|
|
|
- Initial load: **\_\_\_** ms
|
|
- Home → Deals: **\_\_\_** ms
|
|
- Deals → Lists: **\_\_\_** ms
|
|
|
|
---
|
|
|
|
### Test 7.2: Bundle Size
|
|
|
|
**Objective**: Verify bundle size increase is acceptable
|
|
|
|
**Steps**:
|
|
|
|
1. Run: `npm run build`
|
|
2. Check `dist/` folder size
|
|
3. Compare to previous build (if available)
|
|
|
|
**Expected Results**:
|
|
|
|
- ✅ Bundle size increase: < 50KB
|
|
- ✅ No duplicate libraries loaded
|
|
- ✅ Tree-shaking working
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Measurements**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
## Cross-Browser Testing
|
|
|
|
### Test 8.1: Chrome/Edge
|
|
|
|
**Browser Version**: ******\_\_\_******
|
|
|
|
**Tests to Run**:
|
|
|
|
- [ ] All Test Suite 1 (Onboarding)
|
|
- [ ] All Test Suite 2 (Mobile Nav)
|
|
- [ ] Test 3.1-3.4 (Dark Mode)
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 8.2: Firefox
|
|
|
|
**Browser Version**: ******\_\_\_******
|
|
|
|
**Tests to Run**:
|
|
|
|
- [ ] Test 1.1, 1.2 (Onboarding basics)
|
|
- [ ] Test 2.4-2.7 (Tab navigation)
|
|
- [ ] Test 3.1 (Dark mode)
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
### Test 8.3: Safari (macOS/iOS)
|
|
|
|
**Browser Version**: ******\_\_\_******
|
|
|
|
**Tests to Run**:
|
|
|
|
- [ ] Test 1.1 (Tour starts)
|
|
- [ ] Test 2.1 (Mobile layout)
|
|
- [ ] Test 3.1 (Dark mode)
|
|
|
|
**Pass/Fail**: [ ]
|
|
|
|
**Notes**: **********************\_\_\_**********************
|
|
|
|
---
|
|
|
|
## Test Summary
|
|
|
|
### Overall Results
|
|
|
|
| Test Suite | Pass | Fail | Skipped | Total |
|
|
| -------------------- | ---- | ---- | ------- | ------ |
|
|
| 1. Onboarding Tour | | | | 5 |
|
|
| 2. Mobile Navigation | | | | 9 |
|
|
| 3. Dark Mode | | | | 4 |
|
|
| 4. Admin Routes | | | | 3 |
|
|
| 5. Integration | | | | 3 |
|
|
| 6. Error Scenarios | | | | 2 |
|
|
| 7. Performance | | | | 2 |
|
|
| 8. Cross-Browser | | | | 3 |
|
|
| **TOTAL** | | | | **31** |
|
|
|
|
### Critical Issues Found
|
|
|
|
1. ***
|
|
2. ***
|
|
3. ***
|
|
|
|
### Minor Issues Found
|
|
|
|
1. ***
|
|
2. ***
|
|
3. ***
|
|
|
|
### Recommendations
|
|
|
|
1. ***
|
|
2. ***
|
|
3. ***
|
|
|
|
---
|
|
|
|
## Sign-Off
|
|
|
|
**Tester Name**: **********************\_\_\_**********************
|
|
**Date Completed**: **********************\_\_\_**********************
|
|
**Overall Status**: [ ] PASS [ ] PASS WITH ISSUES [ ] FAIL
|
|
|
|
**Ready for Production**: [ ] YES [ ] NO [ ] WITH FIXES
|
|
|
|
**Additional Comments**:
|
|
|
|
---
|
|
|
|
---
|
|
|
|
---
|