PRD Document · Savoy Signature Hotels — Multi-Site Headless Platform
Version: 1.0 · Date: 2026-03-04
Related docs: 02_Infrastructure_and_Environments.md, 04_Frontend_Architecture.md, 14_Accessibility_and_Compliance.md
This document defines the quality assurance strategy, testing pipeline, and the role of the openClaw AI QA Agent across the Savoy Signature platform. It covers unit, integration, visual regression, and accessibility testing, as well as the CI/CD quality gates.
Component Integration (Testing Library)
Visual Regression (Chromatic / Percy)
openClaw Agent (Automated Audit)
Layer Tool Scope Unit Vitest Mappers, utility functions, data transformations Component Vitest + React Testing Library Module rendering, props, variants Storybook Chromatic or Percy Visual regression across themes and viewports E2E Playwright Full user flows (navigation, forms, language switch, booking bar) Accessibility axe-core (via Playwright + Storybook) WCAG 2.1 AA compliance Performance Lighthouse CI Core Web Vitals budget enforcement AI QA openClaw Holistic audit: a11y, performance, visual consistency, broken links
What to Test Example Module mappers mapHeroSlider() transforms API response → correct HeroSliderPropsUtility functions buildCacheTags(), generateHreflangMap(), sanitizeSlug()Site resolver getSiteConfig('savoy-palace') returns correct domain, theme, locale configURL builder buildUrl(siteKey, locale, slug) constructs correct path
What to Test Example Render variants HeroSlider renders correct number of slides, autoplay toggleAccessibility Accordion has correct aria-expanded, keyboard interactionTheme application Component renders correctly with data-theme="savoy-palace" Edge cases CardGrid with empty cards[] renders gracefully (no crash)
Storybook stories are the source of truth.
Every PR triggers a visual snapshot comparison across:
8 themes (subset: 3 representative themes for speed).
3 viewports : Mobile (375px), Tablet (768px), Desktop (1440px).
Reviewers approve visual diffs in the Chromatic/Percy dashboard before merge.
Critical user flows tested against the STAGE environment:
Flow Steps Homepage → Room Detail Navigate to homepage → click room card → verify room detail page loads with gallery, amenities, and Booking Bar Language Switch Visit /pt/alojamento → switch to EN → verify URL changes to /en/accommodation and content is in English Contact Form Submit Navigate to Contact page → fill form → submit → verify success message 404 Handling Navigate to a non-existent URL → verify themed 404 page renders Booking Bar Flow Open Booking Bar → select dates → submit → verify redirect to Synxis with correct query params Search Use search functionality → verify results are scoped to current site Gallery Lightbox Open gallery → click image → verify lightbox opens, swipe navigation works
The openClaw agent runs automatically on every PR merge to develop, staging, or main. It performs a holistic audit:
Audit Area What It Checks Accessibility axe-core scan of all rendered pages (WCAG 2.1 AA) Performance Lighthouse CI scores (Performance ≥ 90, A11y ≥ 95, SEO ≥ 95) Broken Links Crawl all internal links and verify no 404/500 responses Visual Consistency Screenshot comparison against baseline SEO Verify <title>, <meta>, hreflang, robots, JSON-LD presence Console Errors Flag any JavaScript errors in the browser console
Gate Threshold Blocks Deploy? ESLint errors 0 ✅ Yes TypeScript errors 0 ✅ Yes Unit test failures 0 ✅ Yes Visual regression diffs Must be approved ✅ Yes Lighthouse Performance ≥ 90 ✅ Yes Lighthouse Accessibility ≥ 95 ✅ Yes axe-core critical violations 0 ✅ Yes E2E test failures 0 ✅ Yes Console errors on STAGE 0 ⚠️ Warning
STAGE mirrors PROD content structure but uses test data (placeholder copy, test images).
A scheduled Umbraco task syncs content structure (not data) from PROD to STAGE weekly.
E2E tests rely on known, seeded content on STAGE (e.g., “Test Room Deluxe” with predictable slugs).
export const testRoom = {
name: ' Test Room Deluxe ' ,
slug: ' test-room-deluxe ' ,
contentType: ' roomDetailPage ' ,
Next document: 19_Booking_Engine_Integration.md