# 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._ ---