Files
WooNooW/tests/VERIFICATION_CHECKLIST.md
Dwindi Ramadhana 396ca25be4 feat: Page Editor v1.0 - canonical schema, SSR parity, and migration
Major improvements to WooNooW Page Editor system:

Schema & Architecture:
- Canonical section schema with unified sectionSchema.ts
- Normalized feature-grid to use items (not features)
- Standardized default values across all section types
- Schema versioning with automatic migration on read

Backend (PHP):
- Enhanced PlaceholderRenderer with typed output contracts
- Added fallback behavior for empty/invalid dynamic sources
- Added caching support for post data resolution
- New SchemaMigration class for backward compatibility
- New Features class for feature flags
- Enhanced PageSSR with full style support
- Removed controller-level special-casing for related_posts

Frontend (Admin SPA):
- Updated CanvasRenderer with schema-aware transformation
- Enhanced InspectorPanel with canonical schema metadata
- Added new section renderers

Frontend (Customer SPA):
- New section components: BentoCategoryGrid, MarqueeBanner, ProductCarousel, ShoppableImage
- Updated FeatureGridSection for items prop contract

Testing:
- Add PHP tests: SchemaMigrationTest, PlaceholderRendererTest, PageSSRTest
- Add TypeScript tests: schema-integration, feature-grid-regression
- Add parity tests for React vs SSR content matching
- Add CI script: check-schema-drift.mjs
- Add VERIFICATION_CHECKLIST.md

Documentation:
- RELEASE_NOTES-v1.0.md with full release notes
- docs/PAGE_EDITOR_SECTION_SCHEMA_V1.md
- docs/PAGE_EDITOR_SSR_COVERAGE_AUDIT.md
2026-05-30 13:02:08 +07:00

206 lines
5.7 KiB
Markdown

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