Appearance
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
| Script | What it verifies |
|---|---|
customer-multiviewport.mjs | 138 rendering checks × 4 viewports × 2 roles (guest, customer) |
checkout-e2e.mjs | Fills the checkout form + places order end-to-end (guest + logged-in) |
v015-verify.mjs | Meta descriptions, canonicals, og:image, robots.txt, header centering, footer form, quickview layout |
v020-verify.mjs | Age gate + cookie consent + recently viewed (10 × 2 viewports) |
v021-verify.mjs | Search autocomplete + compare modal + cart cross-sells (10 × 2 viewports) |
v022-verify.mjs | PDP hover-zoom + GA4 dataLayer events (10 × 2 viewports) |
live-qa.mjs | Read-only smoke test against production |
docs-screenshots.mjs | Regenerates 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.mjsEvery 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.mjsRead-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
- Write the feature on local. Run relevant
qa/*-verify.mjsin a 10-iteration loop. - Bump version in
functions.php(DANKCAVE_VERSION) +style.css(Version:). - Lint everything.
- Package the zip.
- Regenerate screenshots if UI changed.
- Update docs.
- Upload to live (see Go-live checklist).
- 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/