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.