# BW Pricing Card — Testing

See §10 of PLUGIN.md for the pre-release checklist.

## Manual Test Cases

### Activation / Deactivation
1. Install from zip into a fresh WP 6.x install.
2. Activate — no PHP notices/warnings with `WP_DEBUG` on.
3. Deactivate — no orphaned cron / transients (the plugin creates none).
4. Reactivate — no errors; existing block instances continue to render.

### Feature: Block insertion
1. Edit any page → Add block → search "BW Pricing Card".
2. Block appears under Design category.
3. Insert → three default cards render (Early Bird / General Admission / Team of 5+) with General Admission marked Most Popular.

### Feature: Inline text editing
1. Click the tier label on a card → cursor lands inside; type to replace.
2. Repeat for price, description, every feature item, and the button text.
3. Save → reload the post → all edits persist.
4. Insert an `&` character → frontend renders a literal `&` (not `&amp;`).

### Feature: Add / remove feature items
1. Hover any feature row → X icon appears.
2. Click X → row disappears; sibling items unchanged.
3. Click "Add feature" below the list → empty editable row appears at the bottom.

### Feature: Add / remove cards
1. Click `+ Add card` placeholder at end of grid → 4th card appears, wraps onto a new row.
2. Open per-card sidebar panel → click "Remove card" → card disappears; layout reflows.
3. Click "Move up" / "Move down" → order changes accordingly.

### Feature: Most Popular toggle
1. Toggle on for a card → border switches to `2px solid var(--pv-teal-dk)`; gradient ribbon appears at top.
2. Edit the ribbon label in General panel → all popular cards update.
3. Toggle off → border returns to `1.5px solid var(--pv-line)`; ribbon disappears.

### Feature: Button styles
1. For each card, switch button style through all four options (Fill / Theme / Secondary / Outline Base) → frontend class changes accordingly (`bw-pricing-card__btn--fill-base` etc.).
2. Change button URL → frontend `<a href>` matches.

### Feature: Theme compatibility
1. Activate a parent theme that sets `padding-inline-start` on `ul` (e.g. Twenty Twenty-Four, Kadence) → feature list still has zero left padding.
2. Activate a theme that sets a default `p` margin-bottom → description margin stays at 16px.

### Pre-release checklist
- [ ] Plugin activates without errors on a fresh WP install
- [ ] Plugin deactivates cleanly (no orphaned cron / transients)
- [ ] `uninstall.php` is a no-op (no persistent state)
- [ ] No PHP notices / warnings with `WP_DEBUG` enabled
- [ ] Editor preview matches frontend render
- [ ] All features in `docs/SPEC.md` verified
- [ ] Debug cruft scan clean (PLUGIN.md §9)
- [ ] Security scan clean (PLUGIN.md §5)
- [ ] Version matches in all 4 places (PLUGIN.md §8)
- [ ] `CHANGELOG.md` has a real entry (not `[Unreleased]`)
- [ ] `README.md` user-facing sections still accurate
