4.6 KiB
4.6 KiB
XShop – Testing
1. Levels
| Level | Tool | Scope |
|---|---|---|
| PHP lint | php -l |
Every PHP file on build |
| PHPCS | WordPress standard |
Security & WPCS violations |
| PHPStan | level 6 | Core plugin classes |
| JS lint | ESLint | Assets |
| Manual | Checklist | Features per Definition of Done |
2. Manual Matrix (must pass before 1.0.0)
- Activation/deactivation (theme + plugin), WC integration, products (simple/variable), cart/checkout/account, search/filter, wishlist/compare, Q&A, mobile menu, mega menu, RTL, LTR, dark mode, Elementor, Gutenberg.
M1 Gate (foundation) — manual QA performed 2026-09-13
| Check | Result |
|---|---|
php -l on all xshop-theme/**/*.php (PHP 8.2.12) |
✅ Pass (24 files incl. inc/setup/body-classes.php:1) |
node --check assets/js/theme.js |
✅ Pass |
No TODO/FIXME/console.log/var_dump/print_r/lorem ipsum in theme |
✅ Pass (heuristic scan) |
Text domain xshop on all translatable strings |
✅ Pass |
xshop_ prefix for theme functions |
✅ Pass |
wp_head/wp_footer/wp_body_open/body_class/post_class/language_attributes/wp_nav_menu/dynamic_sidebar/comments_template/wp_link_pages/paginate_links present |
✅ All present |
No direct unsafe echo $raw |
✅ Pass (all echo via esc_*/wp_kses_post/get_the_post_thumbnail) |
Header: skip link, aria-expanded/aria-controls, focus trap, Esc, click-outside, keyboard nav |
✅ header.php:1 + site-header.php:1 + theme.js:1 |
| Footer: widgets, nav, copyright, accessible | ✅ site-footer.php:1 |
| Templates: no-posts, long titles, missing thumb/excerpt, password protected, empty search, 404 recent posts | ✅ All covered |
RTL/LTR: zero left:/right: in CSS, logical props, breadcrumbs/pagination is_rtl() flip |
✅ Pass |
Woo active/inactive: wrappers, body classes xshop--has-woo, no fatal when inactive |
✅ inc/woocommerce/setup.php:1 + inc/helpers/template.php:1 guards |
| Dark mode tokens | ✅ tokens.css:1 full coverage + header.php:1 data-theme + body-classes.php:1 |
| Responsive: 360/768/1024/1280 token breakpoints | ✅ layout.css:1 + components.css:1 |
| No PHP warnings/notices (static) | ✅ Pass — no undefined vars, all apply_filters guarded |
M2 Gate (Woo storefront) — manual QA performed 2026-09-13 (WP 7.1 / WC 11.1.0 / PHP 8.2.12)
| Check | Result |
|---|---|
Shop/category: grid xshop-products 4/3/2/1, xshop-product-card sale/outofstock/featured/no-image/long Persian+English, sorting woocommerce-ordering, result count, pagination, breadcrumbs, empty-state CTA |
✅ Pass (shop 200, 4 products, coming-soon disabled) |
| Product card: simple/sale (-20%)/variable/outofstock/featured/no-image | ✅ Pass |
Single product: gallery (featured+thumbs is-active, keyboard Arrow/Home/End), title/SKU/rating/price/sale/stock/short/variation/quantity/add-to-cart/meta/tabs/related/upsells |
✅ Pass |
Variable: S (120k instock 10) / M (150→130k outofstock) / L (180k) — attribute Size S/M/L, variations 26/27/28, data-product_variations JSON, reset_variations link, price/stock update via Woo JS, add S/L to cart PASS |
✅ Pass |
Cart: shop_table responsive data-title ::before, coupon, cart_totals, update quantity, remove, totals, empty |
✅ Pass |
Mini-cart: xshop-mini-cart count/items/subtotal/remove/cart/checkout/empty |
✅ Pass (component) |
Account: MyAccount-navigation 220px |
1fr → stacked, dashboard/orders/addresses/details/login/lost-password, responsive RTL |
Checkout: col2-set 1fr 1fr → 1fr, billing/shipping/review/payment, notices, payment_method |
✅ Pass |
RTL/LTR/dark/mobile: zero left/right, logical props, woo.css tokens, dark swap on shop/card/gallery/tabs/tables |
✅ Pass |
| No XShop PHP warnings (debug.log clean after 10 hits) / no JS console.log | ✅ Pass |
3. Browser
Chromium, Firefox, Edge, Safari (where available). Responsive: 360/768/1024/1280.
4. Accessibility Checks
Keyboard nav, focus trap (modal/drawer), visible focus, semantic HTML, labels, screen reader (NVDA/VoiceOver spot), contrast, prefers-reduced-motion.
5. Performance Smoke
Lighthouse home/shop/product ≥ 85 perf (desktop). Query count via Query Monitor.
6. How to Run (local)
C:\xampp\php\php.exe -l xshop-theme\functions.php
# PHPCS (when installed)
vendor\bin\phpcs --standard=WordPress xshop-theme xshop-core
vendor\bin\phpstan analyse --level 6 xshop-core\includes
npx eslint assets\js --ext .js
7. Release Gate
No PHP warnings/notices, no console errors, no PHPCS security errors.