# 1. Start dev server
pnpm dev
# 2. Open browser
http://localhost:3000/marketplace
# 3. Test all features below- Navigate to
/marketplace - Verify 9 listings display in 3x3 grid
- Check each card shows:
- Project name
- Project type badge
- Seller name and avatar
- Location
- Quantity (tons CO₂)
- Price per ton
- Total price
- Vintage year
- Verification status
- Listed date
- "View Details" button
- Click "All Project Types" dropdown
- Select "Renewable Energy"
- Verify only Renewable Energy listings show
- Check results count updates
- Check URL has
?type=Renewable+Energy - Select "All Project Types"
- Verify all listings return
- Click "Newest First" dropdown
- Select "Price: Low to High"
- Verify listings sorted by price ascending
- Check URL has
?sort=price-asc - Select "Price: High to Low"
- Verify listings sorted by price descending
- Check URL has
?sort=price-desc
- Click sort dropdown
- Select "Oldest First"
- Verify listings sorted by date ascending
- Check URL has
?sort=date-oldest - Select "Newest First"
- Verify listings sorted by date descending (default)
- Type "amazon" in search box
- Verify only Amazon-related listings show
- Check results count updates
- Check URL has
?search=amazon - Type "solar"
- Verify only Solar-related listings show
- Click X button to clear
- Verify all listings return
- Select "Reforestation" type
- Type "brazil" in search
- Select "Price: Low to High"
- Verify all filters apply together
- Check URL has all params:
?type=Reforestation&sort=price-asc&search=brazil - Verify results match all criteria
- Apply project type filter
- Verify filter chip appears below filters
- Click X on chip
- Verify filter removed and results update
- Apply search query
- Verify search chip appears
- Click X on search chip
- Verify search cleared
- Scroll to bottom of page
- Verify pagination controls visible
- Click "Next" button
- Verify page 2 loads
- Check URL has
?page=2 - Verify smooth scroll to top
- Click page number "1"
- Verify page 1 loads
- Click "Previous" button (should be disabled on page 1)
- Apply a filter (e.g., "Renewable Energy")
- Navigate to page 2
- Verify filter preserved in URL
- Verify filtered results on page 2
- Change filter
- Verify resets to page 1
- Click "View Details" on any listing
- Verify navigates to
/marketplace/[id] - Check detail page shows:
- Project name and badges
- Seller information card
- Project details (location, vintage, verification, quantity)
- Listed date
- Pricing sidebar (price per ton, quantity, total)
- "Purchase Credits" button
- Click "Purchase Credits"
- Verify placeholder alert appears
- Click "Back to Marketplace"
- Verify returns to listings page
- Navigate to
/marketplace/invalid-id - Verify 404 page displays
- Check shows "Listing Not Found" message
- Click "Back to Marketplace"
- Verify returns to listings page
- Type "xyz123" in search (no results)
- Verify empty state displays
- Check shows icon and message
- Clear search
- Verify listings return
- Apply filters: type=Reforestation, sort=price-asc, search=amazon, page=2
- Copy URL from address bar
- Open new tab
- Paste URL
- Verify all filters/sort/search/page preserved
- Use browser back button
- Verify previous state restored
- Use browser forward button
- Verify next state restored
- Resize browser to 375px width
- Verify 1 column grid
- Verify filters stack vertically
- Verify search bar full width
- Verify pagination shows "Page X of Y"
- Verify cards are touch-friendly
- Verify no horizontal scroll
- Resize browser to 768px width
- Verify 2 column grid
- Verify filters side-by-side
- Verify pagination shows page numbers
- Resize browser to 1280px width
- Verify 3 column grid
- Verify filters side-by-side
- Verify pagination shows all page numbers
- Verify detail page sidebar is sticky
- Press Tab repeatedly
- Verify focus moves through:
- Search input
- Project type dropdown
- Sort dropdown
- Active filter chips
- Listing cards
- "View Details" buttons
- Pagination controls
- Verify focus indicators visible
- Press Enter on "View Details"
- Verify navigates to detail page
- Press Tab to "Back to Marketplace"
- Press Enter
- Verify returns to listings
- Enable screen reader (NVDA/JAWS/VoiceOver)
- Navigate to marketplace
- Verify announces "Marketplace listings"
- Apply filter
- Verify announces results count update
- Navigate through listings
- Verify announces listing details
- Navigate to detail page
- Verify announces page structure
- Open DevTools Network tab
- Navigate to marketplace
- Verify page loads < 2 seconds
- Apply filter
- Verify instant update (no loading spinner needed)
- Change sort
- Verify instant update
- Type in search
- Verify instant update
- Open DevTools Console
- Navigate to marketplace
- Verify no errors
- Apply all filters
- Verify no errors
- Navigate to detail page
- Verify no errors
- Navigate back
- Verify no errors
| Feature | Expected Behavior |
|---|---|
| Grid Display | 3x3 grid on desktop, 2x2 on tablet, 1 col on mobile |
| Project Filter | Filters listings, updates URL, resets to page 1 |
| Sort | Reorders listings, updates URL, resets to page 1 |
| Search | Filters by name/seller/location, updates URL, resets to page 1 |
| Pagination | 9 items per page, preserves filters, smooth scroll |
| Detail Page | Shows full listing info, purchase button, back nav |
| URL State | All params in URL, shareable, back/forward works |
| Responsive | Adapts layout at breakpoints, no horizontal scroll |
| Accessibility | Keyboard nav, ARIA labels, screen reader friendly |
| Performance | Instant updates, no loading states needed |
Solution: Check mock data is imported correctly in app/marketplace/page.tsx
Solution: Check URL params are updating in browser address bar
Solution: Verify PaginationControl component is receiving correct props
Solution: Check listing ID exists in mock data
Solution: Check Tailwind breakpoints: sm (640px), md (768px), lg (1024px)
Solution: Run getDiagnostics on all marketplace files
Test in these browsers:
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- Mobile Safari (iOS)
- Chrome Mobile (Android)
- Keyboard Only: Navigate entire page without mouse
- Screen Reader: Test with NVDA/JAWS/VoiceOver
- Color Contrast: Use browser DevTools or WebAIM tool
- WAVE: Browser extension for accessibility audit
- axe DevTools: Browser extension for WCAG compliance
- Lighthouse: Run audit in Chrome DevTools
- Target: 90+ Performance, 100 Accessibility
- Network: Check bundle size and load time
- React DevTools: Check for unnecessary re-renders
Before creating PR:
- All test scenarios pass
- No console errors
- Responsive on all breakpoints
- Keyboard navigation works
- Screen reader friendly
- Performance acceptable
- TypeScript strict (0 errors)
- Build passes
- Lint passes
- Screen recording created
Record these in order:
- Initial page load
- Filter by project type
- Sort by price
- Search functionality
- Combined filters
- Pagination
- Detail page
- Back navigation
- Responsive demo (resize browser)
- Keyboard navigation
Duration: 2-3 minutes Format: MP4 or WebM Resolution: 1920x1080 or 1280x720
# Start dev server
pnpm dev
# Build (check for errors)
pnpm build
# Lint (check for issues)
pnpm lint
# Type check
pnpm tsc --noEmit
# Create PR branch
git checkout -b feat/issue-23-marketplace-listingsLast Updated: February 23, 2026 Status: Ready for Testing