Files
mataba/shop/docs/TESTING.md
T

62 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 |
## 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.