# 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 | ✅ Pass | | 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) ```powershell 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.