Skip to content

QA + release safety

Rules the theme is built and maintained against so nothing ships broken.

Automated Playwright QA

Every release goes through 10× Playwright verification loops before packaging. Scripts live in qa/ at the theme's sibling folder.

Scripts

ScriptWhat it verifies
customer-multiviewport.mjs138 rendering checks × 4 viewports × 2 roles (guest, customer)
checkout-e2e.mjsFills the checkout form + places order end-to-end (guest + logged-in)
v015-verify.mjsMeta descriptions, canonicals, og:image, robots.txt, header centering, footer form, quickview layout
v020-verify.mjsAge gate + cookie consent + recently viewed (10 × 2 viewports)
v021-verify.mjsSearch autocomplete + compare modal + cart cross-sells (10 × 2 viewports)
v022-verify.mjsPDP hover-zoom + GA4 dataLayer events (10 × 2 viewports)
live-qa.mjsRead-only smoke test against production
docs-screenshots.mjsRegenerates all 38 screenshots for docs

Running

bash
cd /Users/christiandizon/Sites/dankcave/qa
node customer-multiviewport.mjs
node v015-verify.mjs
node v020-verify.mjs
node v021-verify.mjs
node v022-verify.mjs

Every script outputs RESULTS: X pass · Y fail. No release ships with a fail count > 0.

Live QA against production

bash
node live-qa.mjs                # 15-assertion smoke test
node v015-live-verify.mjs
node v022-live-verify.mjs

Read-only — no writes, no logins.

Manual QA checklist

Before every release, incognito browser:

  • [ ] Age gate → Accept → cookie set, dismisses
  • [ ] Cookie consent → OK → cookie set, dismisses
  • [ ] Home loads without JS errors
  • [ ] Search modal → autocomplete
  • [ ] Shop archive → grid + filters
  • [ ] Card hover actions (heart, compare, eye) visible
  • [ ] QuickView opens with product data
  • [ ] Add to cart from card → drawer + cross-sells
  • [ ] PDP → gallery + add-to-cart + related
  • [ ] PDP hover-zoom
  • [ ] Wishlist heart → /my-account/wishlist/ shows item
  • [ ] Compare → tray + modal
  • [ ] Cart page → quantity, remove, subtotal
  • [ ] Checkout → form + place order (needs Auth.net or BACS)
  • [ ] About page → all patterns
  • [ ] Contact page → form + FAQ
  • [ ] Legal pages render
  • [ ] 404 branded
  • [ ] Maintenance splash (toggle on then off)

PHP + coding standards

Every PHP file must lint clean under PHP 8.1+.

bash
find theme -name "*.php" -not -path "*/\.*" -print0 | xargs -0 -n1 php -l 2>&1 | grep -v "No syntax errors"

Should return nothing.

Release process

  1. Write the feature on local. Run relevant qa/*-verify.mjs in a 10-iteration loop.
  2. Bump version in functions.php (DANKCAVE_VERSION) + style.css (Version:).
  3. Lint everything.
  4. Package the zip.
  5. Regenerate screenshots if UI changed.
  6. Update docs.
  7. Upload to live (see Go-live checklist).
  8. Live verify.

"Done" definition

  • [ ] Playwright suite: ≥ 10 iterations × ≥ 2 viewports with 0 fails
  • [ ] Manual visual check on desktop + mobile
  • [ ] Regression test on existing features
  • [ ] Docs updated in relevant page
  • [ ] Screenshot in docs/screenshots/

Dankcave theme v0.2.2