WooCommerce QA guide
How to test WooCommerce shipping rules without missing the boundaries
A single happy-path cart does not exercise zone precedence, threshold edges, class fallbacks, coupon interactions, or stale state. Use a finite contract instead.
Test first-match zone behavior
WooCommerce selects one matching zone. Record representative synthetic destinations for every intended zone and for overlapping postcode patterns. Verify both the selected zone and the offered method-instance identities.
Test below, at, and above free shipping
For a €75 threshold, test €74.99, €75.00, and €75.01 in integer cents. Repeat the relevant cases with coupons and the store's before/after-discount setting. Add tax-mode cases only when their semantics are explicitly supported.
Test classes and mixed carts
Test each important shipping class alone, the no-class fallback, and merchant-selected mixed-class carts. Never assume a method label is a stable identity; store method type plus instance identity.
Retest after meaningful changes
Run the approved matrix after WooCommerce updates, shipping-plugin updates, zone or method edits, threshold changes, coupon changes, and relevant product shipping-attribute changes. Keep the previous approved expectation active until a human approves a new revision.
Diagnostic limit: A configuration change that precedes a failure is evidence, not proof of sole causation. Theme rendering, caches, custom hooks, unsupported extensions, and carrier availability can remain unknown.