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
5.7 KiB
5.7 KiB
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_optionsandwp_postmetatables - 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→itemsmigration works- Find a page with
feature-gridusingfeaturesprop - Load the page in admin editor
- Verify
featuresis normalized toitemsin the response - Save the page and verify
itemsis persisted - Frontend still renders correctly
- Find a page with
Style Key Normalization
-
container_width→contentWidthmigration works- Find pages with old style keys
- Verify migration normalizes them on load
- Frontend renders with correct width
-
height→heightPresetmigration works- Find pages with
height: 'screen' - Verify migration converts to
heightPreset: 'fullscreen' - Section renders with correct height
- Find pages with
-
backgroundTypedefaults added- Find pages with no
backgroundType - Verify migration adds
backgroundType: 'solid' - No visual changes occur
- Find pages with no
Element Styles Normalization
cta→cta_textalias works- Find pages with
elementStyles.cta - Verify migration normalizes to
elementStyles.cta_text - Buttons still styled correctly
- Find pages with
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
titlesource:post_title - Apply template to a blog post
- Verify post title appears in hero
- Create a template with dynamic
-
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_postssource works- Create a template with
itemsasdynamic: 'related_posts' - Apply to a blog post with 2+ related posts
- Verify related posts appear as cards
- Create a template with
-
itemsprop used (notfeatures)- Verify schema uses
items - Verify SSR reads
items - Backward compat with
featuresstill works
- Verify schema uses
Image + Text Section
-
Image left/right layouts work
- Create with
layout: 'image-left' - Create with
layout: 'image-right' - Both render correctly
- Create with
-
Dynamic image source works
- Use
dynamic: 'post_featured_image' - Verify image appears
- Use
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_titleresolves correctlypost_contentresolves with formattingpost_excerptresolvespost_authorresolvespost_dateresolves
URL Sources
post_featured_imageresolves to URLpost_url/permalinkresolves
Array Sources
post_categoriesresolves to arraypost_tagsresolves to arrayrelated_postsresolves to post objects withurl,title,featured_image,excerpt
Fallback Behavior
- Empty
post_titleshows "(Untitled)" - Empty
post_featured_imagereturns empty string (no broken image) - Empty
related_postsreturns 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:
- Immediate: Disable plugin via WP Admin
- Data safe: Migration is read-time, no destructive changes
- Restore: Revert to previous plugin version
- 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.