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

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_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 featuresitems 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_widthcontentWidth migration works

    • Find pages with old style keys
    • Verify migration normalizes them on load
    • Frontend renders with correct width
  • heightheightPreset 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

  • ctacta_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.