Skip to content

Pricing Page Design QA

Evidence

  • Source visual truth: /var/folders/_p/8r8qf76x73702y2kg2sc5k0m0000gn/T/codex-clipboard-7f3cc8bc-034c-4fb3-8dfa-8a885e27be47.png
  • Browser-rendered desktop implementation: /tmp/pricing-final-full-viewport.png
  • Browser-rendered mobile implementation: /tmp/pricing-final-mobile-390.png
  • Normalized side-by-side comparison: /tmp/pricing-reference-comparison.png (source left, implementation right)
  • Local implementation URL: http://localhost:4173/pricing
  • Full-view comparison viewport: 1440px desktop layout captured in a 1440 × 4000 viewport, light theme, active Summer Sale, all FAQ items closed.
  • Responsive states checked: 390 × 844, 768 × 900, 1024 × 900, and 1440 × 900 in light and dark themes.
  • Focused evidence: /tmp/pricing-final-viewport-1440.png for the desktop hero/cards and /tmp/pricing-final-mobile-390.png for mobile badge wrapping, single-column cards, and viewport fit.

Findings

No actionable P0, P1, or P2 design mismatches remain.

The normalized comparison confirms the same major hierarchy, section order, three-card pricing composition, Advanced emphasis, compact comparison, paired evaluation choices, guidance block, accordion grid, final comparison CTA, and site footer. The approved specification intentionally differs from the concept in three visible ways: it uses the generic RevoGrid team instead of a named employee, renders all eleven authoritative FAQs, and preserves the existing global footer.

Required fidelity surfaces

  • Fonts and typography: existing RevoGrid/VitePress font tokens are preserved. Display, card, table, button, and small-label hierarchy tracks the concept without truncation; long badges wrap at mobile/tablet widths.
  • Spacing and layout rhythm: desktop section grouping and card density follow the source. Cards resolve to 3 columns at 1024px and above, 2 columns with Enterprise spanning at tablet width, and 1 column below 720px. No root viewport overflow remains at the tested widths.
  • Colors and visual tokens: all surfaces, borders, brand greens, muted text, and focus rings use existing RevoGrid/VitePress tokens in light and dark themes.
  • Image quality and asset fidelity: the real RevoGrid logo and existing SVG assets are used. No placeholder avatar, CSS drawing, emoji, handcrafted SVG, or text-symbol icon substitutes remain.
  • Copy and content: commercial terms, pricing, evaluation paths, generic guidance, FAQ answers, and CTA destinations match the approved plan. The extra detail compared with the concept is intentional and authoritative.

Interaction and Accessibility Evidence

  • One h1 is rendered; downstream sections use semantic h2 headings and card/subsection h3 headings where applicable.
  • All eleven FAQ controls start closed. Mouse toggle behavior was exercised for all eleven; shared Enter and Space activation was verified after adding an explicit keydown handler. Each control exposes aria-expanded and aria-controls.
  • The key-differences table is semantic, keyboard-focusable, horizontally scrollable, paint-contained, and includes a sticky first column, visible narrow-screen scroll hint, and screen-reader equivalents for included/not-included states.
  • Enterprise and guidance open the contact dialog without acquiring a Stripe URL. Pro Lite and Pro Advanced retain the exact Stripe destinations and client-reference click handling.
  • The contact form exposes dialog semantics, initial input focus, Escape and backdrop close, scroll lock, focus restoration, and focus containment logic.
  • /trial, /guide/, /compare/, and /pro/feature-table were opened in the Browser without 404s. The full feature table renders the resolved $149 promotional price and both checkout links.
  • Browser console was checked. No pricing-page-specific runtime errors were found. The production preview reports the same existing VitePress hydration warning and localhost CookieYes domain error on /guide/, so those two messages are site-wide preview baseline issues rather than regressions from this change.

Comparison History

  1. P1 — oversized feature icons broke card layout in the first browser capture.
    • Fix: moved all pricing SVG sizing through scoped deep selectors and reused existing RevoGrid check/plus/arrow assets.
    • Post-fix evidence: /tmp/pricing-final-viewport-1440.png and /tmp/pricing-final-mobile-390.png show correctly sized, aligned icons.
  2. P2 — the compact table and global footer/nav produced root horizontal overflow at 390px and the exact 768px breakpoint.
    • Fix: added paint containment to the table scroll region, normalized the footer divider on the pricing route, and applied the existing mobile navigation pattern at 768–800px.
    • Post-fix evidence: Browser measurements returned scrollWidth === innerWidth at 390, 768, 1024, and 1440px.
  3. P2 — Enterprise was visually a link and could append a contact hash even though it opened the modal.
    • Fix: rendered non-purchasable plan CTAs as buttons and kept Stripe handling only on purchasable plans.
    • Post-fix evidence: Enterprise opened the contact dialog while the Browser URL remained unchanged.
  4. P1 — browser keyboard automation did not activate the FAQ through native button defaults reliably.
    • Fix: added explicit Enter/Space key handling with default prevention to the shared accordion trigger.
    • Post-fix evidence: aria-expanded changed false → true → false → true through mouse, Enter, and Space in the final production preview.

Open Questions

  • None. The named-person block and multi-column concept footer are intentionally excluded by the approved scope.

Implementation Checklist

  • [x] Match approved section order and conversion hierarchy.
  • [x] Preserve design tokens and light/dark themes.
  • [x] Verify pricing cutoff resolver and structured data.
  • [x] Verify pricing, evaluation, guidance, FAQ, comparison, and full-table routes.
  • [x] Verify responsive layouts and absence of viewport overflow.
  • [x] Verify modal and accordion accessibility behavior.
  • [x] Run the production VitePress build and compare source/implementation together.

Follow-up Polish

  • No P3 polish is required for acceptance.

final result: passed