# WooNooW v1.0 - Breaking Behavior Verification Checklist

This checklist should be completed before full rollout to verify no breaking behavior on existing pages and templates.

---

## Pre-Flight Checks

- [ ] **Database backup completed** - Full backup including `wp_options` and `wp_postmeta` tables
- [ ] **Staging environment verified** - All tests pass on staging
- [ ] **Error logging enabled** - PHP error logging configured to catch any issues

---

## Schema Migration Verification

### Feature-Grid Items Normalization
- [ ] **Legacy `features` → `items` migration works**
  - Find a page with `feature-grid` using `features` prop
  - Load the page in admin editor
  - Verify `features` is normalized to `items` in the response
  - Save the page and verify `items` is persisted
  - Frontend still renders correctly

### Style Key Normalization
- [ ] **`container_width` → `contentWidth` migration works**
  - Find pages with old style keys
  - Verify migration normalizes them on load
  - Frontend renders with correct width

- [ ] **`height` → `heightPreset` migration works**
  - Find pages with `height: 'screen'`
  - Verify migration converts to `heightPreset: 'fullscreen'`
  - Section renders with correct height

- [ ] **`backgroundType` defaults added**
  - Find pages with no `backgroundType`
  - Verify migration adds `backgroundType: 'solid'`
  - No visual changes occur

### Element Styles Normalization
- [ ] **`cta` → `cta_text` alias works**
  - Find pages with `elementStyles.cta`
  - Verify migration normalizes to `elementStyles.cta_text`
  - Buttons still styled correctly

---

## Section Rendering Verification

### Hero Section
- [ ] **Static title/subtitle/image render correctly**
  - Create a hero section with all static content
  - Verify on frontend (human view)
  - Verify in SSR (bot view)
  - Content matches between both

- [ ] **Dynamic placeholders resolve on frontend**
  - Create a template with dynamic `title` source: `post_title`
  - Apply template to a blog post
  - Verify post title appears in hero

- [ ] **Background styles render correctly**
  - Hero with gradient background
  - Hero with image background
  - Hero with solid color
  - All styles match between React and SSR

### Feature Grid Section
- [ ] **Static items render correctly**
  - Create feature grid with 3 items
  - Verify all items display
  - Verify icons render

- [ ] **Dynamic `related_posts` source works**
  - Create a template with `items` as `dynamic: 'related_posts'`
  - Apply to a blog post with 2+ related posts
  - Verify related posts appear as cards

- [ ] **`items` prop used (not `features`)**
  - Verify schema uses `items`
  - Verify SSR reads `items`
  - Backward compat with `features` still works

### Image + Text Section
- [ ] **Image left/right layouts work**
  - Create with `layout: 'image-left'`
  - Create with `layout: 'image-right'`
  - Both render correctly

- [ ] **Dynamic image source works**
  - Use `dynamic: 'post_featured_image'`
  - Verify image appears

### CTA Banner
- [ ] **Button styling renders**
  - CTA with custom colors
  - CTA with default styles
  - Both render correctly

### Contact Form
- [ ] **Form structure renders**
  - Form fields present
  - Submit button present
  - No functional submission (acceptable for SSR)

### All Other Sections
- [ ] **Bento Category Grid** - Categories render with images
- [ ] **Product Carousel** - Products display with prices
- [ ] **Shoppable Image** - Hotspots position correctly
- [ ] **Marquee Banner** - Text items separated correctly

---

## Dynamic Source Resolution

### Scalar Sources
- [ ] `post_title` resolves correctly
- [ ] `post_content` resolves with formatting
- [ ] `post_excerpt` resolves
- [ ] `post_author` resolves
- [ ] `post_date` resolves

### URL Sources
- [ ] `post_featured_image` resolves to URL
- [ ] `post_url` / `permalink` resolves

### Array Sources
- [ ] `post_categories` resolves to array
- [ ] `post_tags` resolves to array
- [ ] `related_posts` resolves to post objects with `url`, `title`, `featured_image`, `excerpt`

### Fallback Behavior
- [ ] Empty `post_title` shows "(Untitled)"
- [ ] Empty `post_featured_image` returns empty string (no broken image)
- [ ] Empty `related_posts` returns empty array

---

## Caching Behavior

- [ ] **Post data caching works**
  - First load fetches fresh data
  - Subsequent loads use cache
  - Cache expires after 5 minutes

- [ ] **SSR cache invalidation works**
  - Edit a page
  - Verify SSR cache is invalidated
  - Next bot visit renders fresh content

---

## Edge Cases

### Empty States
- [ ] Page with no sections renders empty container gracefully
- [ ] Feature grid with empty items shows empty state or nothing

### Invalid Data
- [ ] Malformed section JSON doesn't crash the site
- [ ] Invalid dynamic source doesn't break rendering

### Legacy Data
- [ ] Pages created before schema migration still work
- [ ] Templates created before migration still work
- [ ] No data loss on migration

---

## Performance

- [ ] **No significant SSR slowdown**
  - SSR render time < 200ms for 10 sections
  - No N+1 queries in placeholder resolution

- [ ] **No increased memory usage**
  - Memory usage stable under load

---

## Rollback Procedure

If issues are found:

1. **Immediate**: Disable plugin via WP Admin
2. **Data safe**: Migration is read-time, no destructive changes
3. **Restore**: Revert to previous plugin version
4. **Investigation**: Check error logs for specific failures

---

## Sign-Off

- [ ] **QA Sign-Off**: _________________________ Date: ________
- [ ] **Tech Lead Sign-Off**: _________________________ Date: ________
- [ ] **Product Sign-Off**: _________________________ Date: ________

---

## Notes

_Use this space to document any issues found and their resolutions._

---
