62 lines
3.0 KiB
Markdown
62 lines
3.0 KiB
Markdown
# 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.
|