A requirement that says “support coupons” leaves room for conflicting interpretations. Agree on observable rules with the product owner. For one controlled example, a basket of 100 and a valid discount of 10 should display a new subtotal of 90. Specify separate expectations for shipping or tax when those rules apply.
Map each rule to an observation
- Apply a prepared valid coupon and check the discount line and subtotal.
- Submit a known invalid coupon and check the error and preserved subtotal.
- Remove an applied coupon and confirm the original subtotal returns.
- Repeat the Apply action while a request is pending and check that the same discount is applied once.
Capture unresolved requirements
Eligibility, stacking, expiration time zones, and retry behavior are product decisions. List each unresolved decision next to its proposed test. Mark that test as pending while the rule is open so a test assertion does not become an accidental policy.
Automate after a manual pass
Run the examples once with controlled coupon data. Confirm the environment, account, and page route. The linked webapp-testing skill can help turn the recurring checks into browser automation. Keep inputs stable and assert outcomes visible to the user. Record the rule, fixture, and first failed observation so a reviewer can distinguish an application change from expired test data.